diff --git a/app/src/main/kotlin/org/fossify/gallery/Constants.kt b/app/src/main/kotlin/org/fossify/gallery/Constants.kt new file mode 100644 index 000000000..ad0a4d844 --- /dev/null +++ b/app/src/main/kotlin/org/fossify/gallery/Constants.kt @@ -0,0 +1,3 @@ +package org.fossify.gallery + +const val SORT_BY_COUNT = 524288 // TODO: Replace with Constants from Commons, then delete this file. diff --git a/app/src/main/kotlin/org/fossify/gallery/activities/MainActivity.kt b/app/src/main/kotlin/org/fossify/gallery/activities/MainActivity.kt index f9b1fda01..de2a8bead 100644 --- a/app/src/main/kotlin/org/fossify/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/org/fossify/gallery/activities/MainActivity.kt @@ -1094,7 +1094,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { taken = newDir.taken this@apply.size = newDir.size types = newDir.types - sortValue = getDirectorySortingValue(curMedia, path, name, size) + sortValue = getDirectorySortingValue(curMedia, path, name, size, mediaCnt) } setupAdapter(dirs) diff --git a/app/src/main/kotlin/org/fossify/gallery/dialogs/ChangeSortingDialog.kt b/app/src/main/kotlin/org/fossify/gallery/dialogs/ChangeSortingDialog.kt index f10cd49d8..e04690a84 100644 --- a/app/src/main/kotlin/org/fossify/gallery/dialogs/ChangeSortingDialog.kt +++ b/app/src/main/kotlin/org/fossify/gallery/dialogs/ChangeSortingDialog.kt @@ -5,6 +5,7 @@ import org.fossify.commons.activities.BaseSimpleActivity import org.fossify.commons.extensions.* import org.fossify.commons.helpers.* import org.fossify.gallery.R +import org.fossify.gallery.SORT_BY_COUNT import org.fossify.gallery.databinding.DialogChangeSortingBinding import org.fossify.gallery.extensions.config import org.fossify.gallery.helpers.SHOW_ALL @@ -22,6 +23,7 @@ class ChangeSortingDialog( init { currSorting = if (isDirectorySorting) config.directorySorting else config.getFolderSorting(pathToUse) binding = DialogChangeSortingBinding.inflate(activity.layoutInflater).apply { + sortingDialogRadioNumberOfItems.beVisibleIf(isDirectorySorting) sortingDialogOrderDivider.beVisibleIf(showFolderCheckbox || (currSorting and SORT_BY_NAME != 0 || currSorting and SORT_BY_PATH != 0)) sortingDialogNumericSorting.beVisibleIf(showFolderCheckbox && (currSorting and SORT_BY_NAME != 0 || currSorting and SORT_BY_PATH != 0)) @@ -59,6 +61,7 @@ class ChangeSortingDialog( val sortBtn = when { currSorting and SORT_BY_PATH != 0 -> binding.sortingDialogRadioPath currSorting and SORT_BY_SIZE != 0 -> binding.sortingDialogRadioSize + currSorting and SORT_BY_COUNT != 0 -> binding.sortingDialogRadioNumberOfItems currSorting and SORT_BY_DATE_MODIFIED != 0 -> binding.sortingDialogRadioLastModified currSorting and SORT_BY_DATE_TAKEN != 0 -> binding.sortingDialogRadioDateTaken currSorting and SORT_BY_RANDOM != 0 -> binding.sortingDialogRadioRandom @@ -83,6 +86,7 @@ class ChangeSortingDialog( R.id.sorting_dialog_radio_name -> SORT_BY_NAME R.id.sorting_dialog_radio_path -> SORT_BY_PATH R.id.sorting_dialog_radio_size -> SORT_BY_SIZE + R.id.sorting_dialog_radio_number_of_items -> SORT_BY_COUNT R.id.sorting_dialog_radio_last_modified -> SORT_BY_DATE_MODIFIED R.id.sorting_dialog_radio_random -> SORT_BY_RANDOM R.id.sorting_dialog_radio_custom -> SORT_BY_CUSTOM diff --git a/app/src/main/kotlin/org/fossify/gallery/extensions/Context.kt b/app/src/main/kotlin/org/fossify/gallery/extensions/Context.kt index a03a4f138..b8419b1c6 100644 --- a/app/src/main/kotlin/org/fossify/gallery/extensions/Context.kt +++ b/app/src/main/kotlin/org/fossify/gallery/extensions/Context.kt @@ -37,6 +37,7 @@ import org.fossify.commons.extensions.* import org.fossify.commons.helpers.* import org.fossify.commons.views.MySquareImageView import org.fossify.gallery.R +import org.fossify.gallery.SORT_BY_COUNT import org.fossify.gallery.asynctasks.GetMediaAsynctask import org.fossify.gallery.databases.GalleryDatabase import org.fossify.gallery.helpers.* @@ -124,7 +125,7 @@ fun Context.getSortedDirectories(source: ArrayList): ArrayList + dirs.sortWith { o1, o2 -> o1 as Directory o2 as Directory @@ -170,6 +171,7 @@ fun Context.getSortedDirectories(source: ArrayList): ArrayList (o1.sortValue.toLongOrNull() ?: 0).compareTo(o2.sortValue.toLongOrNull() ?: 0) + sorting and SORT_BY_COUNT != 0 -> (o1.sortValue.toLongOrNull() ?: 0).compareTo(o2.sortValue.toLongOrNull() ?: 0) sorting and SORT_BY_DATE_MODIFIED != 0 -> (o1.sortValue.toLongOrNull() ?: 0).compareTo(o2.sortValue.toLongOrNull() ?: 0) else -> (o1.sortValue.toLongOrNull() ?: 0).compareTo(o2.sortValue.toLongOrNull() ?: 0) } @@ -178,7 +180,7 @@ fun Context.getSortedDirectories(source: ArrayList): ArrayList, path: String, name: String, size: Long): String { +fun Context.getDirectorySortingValue(media: ArrayList, path: String, name: String, size: Long, count: Int): String { val sorting = config.directorySorting val sorted = when { sorting and SORT_BY_NAME != 0 -> return name sorting and SORT_BY_PATH != 0 -> return path sorting and SORT_BY_SIZE != 0 -> return size.toString() + sorting and SORT_BY_COUNT != 0 -> return count.toString() sorting and SORT_BY_DATE_MODIFIED != 0 -> media.sortedBy { it.modified } sorting and SORT_BY_DATE_TAKEN != 0 -> media.sortedBy { it.taken } else -> media diff --git a/app/src/main/res/layout/dialog_change_sorting.xml b/app/src/main/res/layout/dialog_change_sorting.xml index e3ec61ab2..fc87462a4 100644 --- a/app/src/main/res/layout/dialog_change_sorting.xml +++ b/app/src/main/res/layout/dialog_change_sorting.xml @@ -37,6 +37,12 @@ android:layout_height="wrap_content" android:text="@string/size" /> + + + + + Number of items