diff --git a/app/src/main/java/com/infomaniak/drive/data/cache/FileController.kt b/app/src/main/java/com/infomaniak/drive/data/cache/FileController.kt index 3cf68e00d6..907a4f2f55 100644 --- a/app/src/main/java/com/infomaniak/drive/data/cache/FileController.kt +++ b/app/src/main/java/com/infomaniak/drive/data/cache/FileController.kt @@ -772,7 +772,11 @@ object FileController { SortType.RECENT_TRASHED -> sort(File::deletedAt.name, Sort.DESCENDING) SortType.SMALLER -> sort(File::size.name, Sort.ASCENDING) SortType.BIGGER -> sort(File::size.name, Sort.DESCENDING) - // SortType.EXTENSION -> sort(File::convertedType.name, Sort.ASCENDING) // TODO implement + // Because we don't know how to compute relevance here, we fallback + // on the 'last modified' sorting for this pretty unusual case. + SortType.LEAST_RELEVANT -> sort(File::lastModifiedAt.name, Sort.ASCENDING) + SortType.MOST_RELEVANT -> sort(File::lastModifiedAt.name, Sort.DESCENDING) + // SortType.EXTENSION -> sort(File::convertedType.name, Sort.ASCENDING) // TODO: Implement } } diff --git a/app/src/main/java/com/infomaniak/drive/data/models/File.kt b/app/src/main/java/com/infomaniak/drive/data/models/File.kt index b5e2909999..5099679e86 100644 --- a/app/src/main/java/com/infomaniak/drive/data/models/File.kt +++ b/app/src/main/java/com/infomaniak/drive/data/models/File.kt @@ -421,13 +421,15 @@ open class File( NAME_ZA("desc", "name", R.string.sortNameZA), OLDER("asc", "last_modified_at", R.string.sortOlder), RECENT("desc", "last_modified_at", R.string.sortRecent), - OLDEST_ADDED("asc", "added_at", R.string.sortOldestAdded), - MOST_RECENT_ADDED("desc", "added_at", R.string.sortMostRecentAdded), OLDER_TRASHED("asc", "deleted_at", R.string.sortOlder), RECENT_TRASHED("desc", "deleted_at", R.string.sortRecent), + OLDEST_ADDED("asc", "added_at", R.string.sortOldestAdded), + MOST_RECENT_ADDED("desc", "added_at", R.string.sortMostRecentAdded), SMALLER("asc", "size", R.string.sortSmaller), BIGGER("desc", "size", R.string.sortBigger), - // EXTENSION("asc", "extension", R.string.sortExtension); // TODO: Awaiting API + LEAST_RELEVANT("asc", "relevance", R.string.sortLeastRelevant), + MOST_RELEVANT("desc", "relevance", R.string.sortMostRelevant), + // EXTENSION("asc", "extension", R.string.sortExtension), // TODO: Awaiting API } enum class SortTypeUsage { FILE_LIST, TRASH, SEARCH } diff --git a/app/src/main/java/com/infomaniak/drive/ui/fileList/SortFilesBottomSheetAdapter.kt b/app/src/main/java/com/infomaniak/drive/ui/fileList/SortFilesBottomSheetAdapter.kt index 3d01e43951..c127d19f3b 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/fileList/SortFilesBottomSheetAdapter.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/fileList/SortFilesBottomSheetAdapter.kt @@ -58,12 +58,28 @@ class SortFilesBottomSheetAdapter( } private fun List.fileListTypes(): List { - return filter { it != SortType.OLDER_TRASHED && it != SortType.RECENT_TRASHED } + val forbiddenSortTypes = setOf( + SortType.OLDER_TRASHED, + SortType.RECENT_TRASHED, + SortType.LEAST_RELEVANT, + SortType.MOST_RELEVANT, + ) + return filterNot(forbiddenSortTypes::contains) } - private fun List.trashTypes(): List = filter { it != SortType.OLDER && it != SortType.RECENT } + private fun List.trashTypes(): List { + val forbiddenSortTypes = setOf( + SortType.OLDER, + SortType.RECENT, + SortType.LEAST_RELEVANT, + SortType.MOST_RELEVANT, + ) + return filterNot(forbiddenSortTypes::contains) + } - private fun searchTypes(): List = listOf(SortType.OLDER, SortType.RECENT) + private fun searchTypes(): List { + return listOf(SortType.OLDER, SortType.RECENT, SortType.MOST_RELEVANT, SortType.LEAST_RELEVANT) + } class SortFilesViewHolder(val binding: ItemSelectBottomSheetBinding) : ViewHolder(binding.root) } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index dee5f7b6eb..cc96cf35d6 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -617,8 +617,10 @@ Grösser Pro Tag Erweiterung + Am wenigsten relevant Pro Monat Zuletzt hinzugefügt + Am wichtigsten Name: von A bis Z Name: von Z bis A Älter diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 4137a7ef20..edea66d9f0 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -617,8 +617,10 @@ Mayor tamaño Por día Extensión + Menos relevante Por mes Más recientemente añadidos + Más relevante Nombre: de A a Z Nombre: de Z a A Más antiguo diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 2d3d28372c..ae7d0335f9 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -617,8 +617,10 @@ Plus grand Par jour Extension + Moins pertinent Par mois Plus récemment ajouté + Plus pertinent Nom : de A à Z Nom : de Z à A Plus ancien diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index da39a8e08b..1c928294d7 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -617,8 +617,10 @@ Più grande Per giorno Estensione + Meno rilevante Per mese Aggiunte più recenti + Più rilevante Nome: dalla A alla Z Nome: dalla Z alla A Più vecchio diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d7d0b92eeb..851a36590d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -628,8 +628,10 @@ Larger Per day Extension + Least relevant Per month Most recently added + Most relevant Name: from A to Z Name: from Z to A Older