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 266a85431..b29caf3e3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MediaActivity.kt @@ -217,6 +217,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { R.id.open_camera -> launchCamera() R.id.folder_view -> switchToFolderView() R.id.change_view_type -> changeViewType() + R.id.group -> showGroupByDialog() R.id.hide_folder -> tryHideFolder() R.id.unhide_folder -> unhideFolder() R.id.exclude_folder -> tryExcludeFolder() @@ -416,6 +417,27 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { } } + private fun showGroupByDialog() { + val items = arrayListOf( + RadioItem(GROUP_BY_NONE, getString(R.string.do_not_group_files)), + RadioItem(GROUP_BY_LAST_MODIFIED, getString(R.string.by_last_modified)), + RadioItem(GROUP_BY_DATE_TAKEN, getString(R.string.by_date_taken)), + RadioItem(GROUP_BY_FILE_TYPE, getString(R.string.by_file_type)), + RadioItem(GROUP_BY_EXTENSION, getString(R.string.by_extension)) + ) + + if (mShowAll) { + items.add(RadioItem(GROUP_BY_FOLDER, getString(R.string.by_folder))) + } + + RadioGroupDialog(this, items, config.groupBy) { + config.groupBy = it as Int + invalidateOptionsMenu() + media_grid.adapter = null + setupAdapter() + } + } + private fun tryHideFolder() { if (config.wasHideFolderTooltipShown) { hideFolder() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt index 59fcde108..cf291465c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt @@ -326,4 +326,8 @@ class Config(context: Context) : BaseConfig(context) { var wereFavoritesPinned: Boolean get() = prefs.getBoolean(WERE_FAVORITES_PINNED, false) set(wereFavoritesPinned) = prefs.edit().putBoolean(WERE_FAVORITES_PINNED, wereFavoritesPinned).apply() + + var groupBy: Int + get() = prefs.getInt(GROUP_BY, GROUP_BY_NONE) + set(groupBy) = prefs.edit().putInt(GROUP_BY, groupBy).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt index 3fd37fcf0..de9e4e7ec 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt @@ -50,6 +50,7 @@ const val WAS_OTG_HANDLED = "was_otg_handled" const val TEMP_SKIP_DELETE_CONFIRMATION = "temp_skip_delete_confirmation" const val BOTTOM_ACTIONS = "bottom_actions" const val WERE_FAVORITES_PINNED = "were_favorites_pinned" +const val GROUP_BY = "group_by" // slideshow const val SLIDESHOW_INTERVAL = "slideshow_interval" @@ -112,3 +113,10 @@ const val TYPE_RAWS = 8 const val LOCAITON_INTERNAL = 1 const val LOCATION_SD = 2 const val LOCATION_OTG = 3 + +const val GROUP_BY_NONE = 0 +const val GROUP_BY_LAST_MODIFIED = 1 +const val GROUP_BY_DATE_TAKEN = 2 +const val GROUP_BY_FILE_TYPE = 3 +const val GROUP_BY_EXTENSION = 4 +const val GROUP_BY_FOLDER = 5 diff --git a/app/src/main/res/menu/menu_media.xml b/app/src/main/res/menu/menu_media.xml index de3b01776..f59adabec 100644 --- a/app/src/main/res/menu/menu_media.xml +++ b/app/src/main/res/menu/menu_media.xml @@ -31,6 +31,10 @@ android:icon="@drawable/ic_camera" android:title="@string/open_camera" app:showAsAction="ifRoom"/> +