diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt index 760d1e90a..63dfd8c62 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -18,7 +18,6 @@ import com.bumptech.glide.request.RequestOptions import com.bumptech.glide.request.target.SimpleTarget import com.bumptech.glide.request.transition.Transition import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.extensions.* @@ -343,8 +342,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { return mIsGettingMedia = true - val token = object : TypeToken>() {}.type - val media = Gson().fromJson>(config.loadFolderMedia(mPath), token) ?: ArrayList(1) + val media = getCachedMedia(mPath) if (media.isNotEmpty() && !mLoadedInitialPhotos) { gotMedia(media, true) } else { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt index 1d53684cb..e60443001 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickDirectoryDialog.kt @@ -3,7 +3,6 @@ package com.simplemobiletools.gallery.dialogs import android.support.v7.app.AlertDialog import android.support.v7.widget.GridLayoutManager import android.view.LayoutInflater -import android.view.View import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.beGoneIf import com.simplemobiletools.commons.extensions.beVisibleIf @@ -22,8 +21,8 @@ import kotlinx.android.synthetic.main.dialog_directory_picker.view.* class PickDirectoryDialog(val activity: SimpleActivity, val sourcePath: String, val callback: (path: String) -> Unit) { var dialog: AlertDialog - var shownDirectories: ArrayList = ArrayList() - var view: View = LayoutInflater.from(activity).inflate(R.layout.dialog_directory_picker, null) + var shownDirectories = ArrayList() + var view = LayoutInflater.from(activity).inflate(R.layout.dialog_directory_picker, null) var isGridViewType = activity.config.viewTypeFolders == VIEW_TYPE_GRID init { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt index 9d58425ce..5770685ad 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/dialogs/PickMediumDialog.kt @@ -1,27 +1,32 @@ package com.simplemobiletools.gallery.dialogs import android.support.v7.app.AlertDialog -import android.support.v7.widget.RecyclerView +import android.support.v7.widget.GridLayoutManager import android.view.LayoutInflater -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken +import com.simplemobiletools.commons.extensions.beGoneIf +import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.activities.SimpleActivity import com.simplemobiletools.gallery.adapters.MediaAdapter import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask import com.simplemobiletools.gallery.extensions.config +import com.simplemobiletools.gallery.extensions.getCachedMedia +import com.simplemobiletools.gallery.helpers.VIEW_TYPE_GRID import com.simplemobiletools.gallery.models.Medium import kotlinx.android.synthetic.main.dialog_medium_picker.view.* class PickMediumDialog(val activity: SimpleActivity, val path: String, val callback: (path: String) -> Unit) { var dialog: AlertDialog - var mediaGrid: RecyclerView - var shownMedia: ArrayList = ArrayList() + var shownMedia = ArrayList() + val view = LayoutInflater.from(activity).inflate(R.layout.dialog_medium_picker, null) + var isGridViewType = activity.config.viewTypeFiles == VIEW_TYPE_GRID init { - val view = LayoutInflater.from(activity).inflate(R.layout.dialog_medium_picker, null) - mediaGrid = view.media_grid + (view.media_grid.layoutManager as GridLayoutManager).apply { + orientation = if (activity.config.scrollHorizontally && isGridViewType) GridLayoutManager.HORIZONTAL else GridLayoutManager.VERTICAL + spanCount = if (isGridViewType) activity.config.mediaColumnCnt else 1 + } dialog = AlertDialog.Builder(activity) .setPositiveButton(R.string.ok, null) @@ -29,10 +34,7 @@ class PickMediumDialog(val activity: SimpleActivity, val path: String, val callb .create().apply { activity.setupDialogStuff(view, this, R.string.select_photo) - val token = object : TypeToken>() {}.type - var media = Gson().fromJson>(activity.config.loadFolderMedia(path), token) ?: ArrayList(1) - media = media.filter { !it.video } as ArrayList - + val media = activity.getCachedMedia(path).filter { !it.video } as ArrayList if (media.isNotEmpty()) { gotMedia(media) } @@ -52,6 +54,22 @@ class PickMediumDialog(val activity: SimpleActivity, val path: String, val callb callback(it.path) dialog.dismiss() } - mediaGrid.adapter = adapter + + val scrollHorizontally = activity.config.scrollHorizontally && isGridViewType + view.apply { + media_grid.adapter = adapter + + media_vertical_fastscroller.isHorizontal = false + media_vertical_fastscroller.beGoneIf(scrollHorizontally) + + media_horizontal_fastscroller.isHorizontal = true + media_horizontal_fastscroller.beVisibleIf(scrollHorizontally) + + if (scrollHorizontally) { + media_horizontal_fastscroller.setViews(media_grid) + } else { + media_vertical_fastscroller.setViews(media_grid) + } + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/activity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/activity.kt index 756f9578b..5b182f5ea 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/extensions/activity.kt @@ -337,3 +337,8 @@ fun Activity.getCachedDirectories(): ArrayList { val token = object : TypeToken>() {}.type return Gson().fromJson>(config.directories, token) ?: ArrayList(1) } + +fun Activity.getCachedMedia(path: String): ArrayList { + val token = object : TypeToken>() {}.type + return Gson().fromJson>(config.loadFolderMedia(path), token) ?: ArrayList(1) +} diff --git a/app/src/main/res/layout/dialog_medium_picker.xml b/app/src/main/res/layout/dialog_medium_picker.xml index 60207b4c9..f3c41d8f0 100644 --- a/app/src/main/res/layout/dialog_medium_picker.xml +++ b/app/src/main/res/layout/dialog_medium_picker.xml @@ -1,10 +1,54 @@ - - + android:paddingTop="@dimen/activity_margin"> + + + + + + + + + + + + + + +