From 06694568b55d2f60e31343337104336b4d88d121 Mon Sep 17 00:00:00 2001 From: Gibran Chevalley Date: Thu, 29 Feb 2024 11:53:42 +0100 Subject: [PATCH] Remove unsupported sort types --- .../com/infomaniak/drive/data/models/File.kt | 2 +- .../drive/ui/fileList/FileListFragment.kt | 2 +- .../drive/ui/fileList/SearchFragment.kt | 2 ++ .../fileList/SortFilesBottomSheetAdapter.kt | 25 +++++++++++-------- .../infomaniak/drive/ui/menu/TrashFragment.kt | 2 +- 5 files changed, 19 insertions(+), 14 deletions(-) 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 5c31f0dbc2..b5e2909999 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 @@ -430,7 +430,7 @@ open class File( // EXTENSION("asc", "extension", R.string.sortExtension); // TODO: Awaiting API } - enum class SortTypeUsage { FILE_LIST, TRASH } + enum class SortTypeUsage { FILE_LIST, TRASH, SEARCH } @Parcelize enum class FolderPermission( diff --git a/app/src/main/java/com/infomaniak/drive/ui/fileList/FileListFragment.kt b/app/src/main/java/com/infomaniak/drive/ui/fileList/FileListFragment.kt index 95f370aba9..0e7cffcd60 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/fileList/FileListFragment.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/fileList/FileListFragment.kt @@ -105,7 +105,7 @@ open class FileListFragment : MultiSelectFragment(MATOMO_CATEGORY), SwipeRefresh protected open var hideBackButtonWhenRoot: Boolean = true protected open var showPendingFiles = true protected open var allowCancellation = true - protected open var sortTypeUsage = SortTypeUsage.FILE_LIST + protected open val sortTypeUsage = SortTypeUsage.FILE_LIST private val noItemsFoldersTitle: Int by lazy { if (mainViewModel.currentFolder.value?.rights?.canCreateFile == true diff --git a/app/src/main/java/com/infomaniak/drive/ui/fileList/SearchFragment.kt b/app/src/main/java/com/infomaniak/drive/ui/fileList/SearchFragment.kt index 4ad2826c1b..9f07293067 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/fileList/SearchFragment.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/fileList/SearchFragment.kt @@ -33,6 +33,7 @@ import androidx.navigation.navGraphViewModels import com.infomaniak.drive.R import com.infomaniak.drive.data.models.File import com.infomaniak.drive.data.models.File.SortType +import com.infomaniak.drive.data.models.File.SortTypeUsage import com.infomaniak.drive.data.models.SearchFilter import com.infomaniak.drive.data.models.SearchFilter.FilterKey import com.infomaniak.drive.data.models.UiSettings @@ -53,6 +54,7 @@ class SearchFragment : FileListFragment() { override val noItemsIcon = R.drawable.ic_search_grey override val noItemsTitle = R.string.searchNoFile + override val sortTypeUsage = SortTypeUsage.SEARCH private lateinit var filtersAdapter: SearchFiltersAdapter private lateinit var recentSearchesAdapter: RecentSearchesAdapter 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 998e9d8cad..3d01e43951 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 @@ -29,38 +29,41 @@ import com.infomaniak.drive.ui.fileList.SortFilesBottomSheetAdapter.SortFilesVie class SortFilesBottomSheetAdapter( private val selectedType: SortType, - private val usage: SortTypeUsage, + usage: SortTypeUsage, private val onItemClicked: (sortType: SortType) -> Unit, ) : Adapter() { + private val types by lazy { usage.types() } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SortFilesViewHolder { return SortFilesViewHolder(ItemSelectBottomSheetBinding.inflate(LayoutInflater.from(parent.context), parent, false)) } override fun onBindViewHolder(holder: SortFilesViewHolder, position: Int) = with(holder.binding) { - usage.types()[position].let { sortType -> + types[position].let { sortType -> itemSelectText.setText(sortType.translation) itemSelectActiveIcon.isVisible = selectedType == sortType root.setOnClickListener { onItemClicked(sortType) } } } - override fun getItemCount() = usage.types().size + override fun getItemCount() = types.size - private fun SortTypeUsage.types(): Array { + private fun SortTypeUsage.types(): List { return when (this) { - SortTypeUsage.FILE_LIST -> SortType.values().fileListTypes() - SortTypeUsage.TRASH -> SortType.values().trashTypes() + SortTypeUsage.FILE_LIST -> SortType.entries.fileListTypes() + SortTypeUsage.TRASH -> SortType.entries.trashTypes() + SortTypeUsage.SEARCH -> searchTypes() } } - private fun Array.fileListTypes(): Array { - return filter { it != SortType.OLDER_TRASHED && it != SortType.RECENT_TRASHED }.toTypedArray() + private fun List.fileListTypes(): List { + return filter { it != SortType.OLDER_TRASHED && it != SortType.RECENT_TRASHED } } - private fun Array.trashTypes(): Array { - return filter { it != SortType.OLDER && it != SortType.RECENT }.toTypedArray() - } + private fun List.trashTypes(): List = filter { it != SortType.OLDER && it != SortType.RECENT } + + private fun searchTypes(): List = listOf(SortType.OLDER, SortType.RECENT) class SortFilesViewHolder(val binding: ItemSelectBottomSheetBinding) : ViewHolder(binding.root) } diff --git a/app/src/main/java/com/infomaniak/drive/ui/menu/TrashFragment.kt b/app/src/main/java/com/infomaniak/drive/ui/menu/TrashFragment.kt index f900ab4fcd..697f425aab 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/menu/TrashFragment.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/menu/TrashFragment.kt @@ -45,7 +45,7 @@ class TrashFragment : FileSubTypeListFragment() { val trashViewModel: TrashViewModel by navGraphViewModels(R.id.trashFragment) override var enabledMultiSelectMode: Boolean = true - override var sortTypeUsage = SortTypeUsage.TRASH + override val sortTypeUsage = SortTypeUsage.TRASH override val noItemsRootIcon = R.drawable.ic_delete override val noItemsRootTitle = R.string.trashNoFile