fix: Selected icon for Random should be a reload icon

This commit is contained in:
Ahmad Ansori Palembani 2025-01-06 08:02:00 +07:00
parent 568859891a
commit 0565fc2665
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
3 changed files with 36 additions and 28 deletions

View file

@ -37,8 +37,7 @@ interface Category : Serializable {
return ((mangaSort?.minus('a') ?: 0) % 2) != 1
}
fun sortingMode(nullAsDND: Boolean = false): LibrarySort? = LibrarySort.valueOf(mangaSort)
?: if (nullAsDND && !isDynamic) LibrarySort.DragAndDrop else null
fun sortingMode(): LibrarySort? = LibrarySort.valueOf(mangaSort)
val isDragAndDrop
get() = (

View file

@ -201,7 +201,7 @@ class LibraryHeaderHolder(val view: View, val adapter: LibraryCategoryAdapter) :
val isAscending = category.isAscending()
val sortingMode = category.sortingMode()
val sortDrawable = getSortRes(sortingMode, isAscending, R.drawable.ic_sort_24dp)
val sortDrawable = getSortRes(sortingMode, isAscending, category.isDynamic, false)
binding.categorySort.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, sortDrawable, 0)
binding.categorySort.setText(category.sortRes())
@ -266,7 +266,7 @@ class LibraryHeaderHolder(val view: View, val adapter: LibraryCategoryAdapter) :
val cat = category ?: return
adapter.controller?.activity?.let { activity ->
val items = LibrarySort.entries.map { it.menuSheetItem(cat.isDynamic) }
val sortingMode = cat.sortingMode(true)
val sortingMode = cat.sortingMode() ?: if (!cat.isDynamic) LibrarySort.DragAndDrop else null
val sheet = MaterialMenuSheet(
activity,
items,
@ -275,42 +275,48 @@ class LibraryHeaderHolder(val view: View, val adapter: LibraryCategoryAdapter) :
) { sheet, item ->
onCatSortClicked(cat, item)
val nCategory = (adapter.getItem(flexibleAdapterPosition) as? LibraryHeaderItem)?.category
val isAscending = nCategory?.isAscending() ?: false
val drawableRes = getSortRes(item, isAscending)
sheet.setDrawable(item, drawableRes)
sheet.updateSortIcon(nCategory, LibrarySort.valueOf(item))
false
}
val isAscending = cat.isAscending()
val drawableRes = getSortRes(sortingMode, isAscending)
sheet.setDrawable(sortingMode?.mainValue ?: -1, drawableRes)
sheet.updateSortIcon(cat, sortingMode)
sheet.show()
}
}
private fun MaterialMenuSheet.updateSortIcon(category: Category?, sortingMode: LibrarySort?) {
val isAscending = category?.isAscending() ?: false
val drawableRes = getSortRes(sortingMode, isAscending, category?.isDynamic ?: false, true)
this.setDrawable(sortingMode?.mainValue ?: -1, drawableRes)
}
private fun getSortRes(
sortMode: LibrarySort?,
isAscending: Boolean,
@DrawableRes defaultDrawableRes: Int = R.drawable.ic_check_24dp,
isDynamic: Boolean,
onSelection: Boolean,
@DrawableRes defaultDrawableRes: Int = R.drawable.ic_sort_24dp,
@DrawableRes defaultSelectedDrawableRes: Int = R.drawable.ic_check_24dp,
): Int {
sortMode ?: return defaultDrawableRes
return when (sortMode) {
LibrarySort.DragAndDrop -> defaultDrawableRes
LibrarySort.Random -> R.drawable.ic_shuffle_24dp
else -> {
if (if (sortMode.hasInvertedSort) !isAscending else isAscending) {
R.drawable.ic_arrow_downward_24dp
} else {
R.drawable.ic_arrow_upward_24dp
}
sortMode ?: return if (onSelection) defaultSelectedDrawableRes else defaultDrawableRes
if (sortMode.isDirectional) {
return if (if (sortMode.hasInvertedSort) !isAscending else isAscending) {
R.drawable.ic_arrow_downward_24dp
} else {
R.drawable.ic_arrow_upward_24dp
}
}
}
private fun getSortRes(
sortingMode: Int?,
isAscending: Boolean,
@DrawableRes defaultDrawableRes: Int = R.drawable.ic_check_24dp,
): Int = getSortRes(sortingMode?.let { LibrarySort.valueOf(it) }, isAscending, defaultDrawableRes)
if (onSelection) {
return when(sortMode) {
LibrarySort.DragAndDrop -> R.drawable.ic_check_24dp
LibrarySort.Random -> R.drawable.ic_refresh_24dp
else -> defaultSelectedDrawableRes
}
}
return sortMode.iconRes(isDynamic)
}
private fun onCatSortClicked(category: Category, menuId: Int?) {
val (mode, modType) = if (menuId == null) {

View file

@ -34,7 +34,7 @@ enum class LibrarySort(
8,
MR.strings.random,
R.drawable.ic_shuffle_24dp,
)
),
;
val categoryValue: Char
@ -65,6 +65,9 @@ enum class LibrarySort(
val hasInvertedSort: Boolean
get() = this in listOf(LastRead, DateAdded, LatestChapter, DateFetched)
val isDirectional: Boolean
get() = this !in listOf(DragAndDrop, Random)
fun menuSheetItem(isDynamic: Boolean): MaterialMenuSheet.MenuSheetItem {
return MaterialMenuSheet.MenuSheetItem(
mainValue,