diff --git a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt index 409695ca4..3e263ef23 100644 --- a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt @@ -29,9 +29,9 @@ import tachiyomi.domain.library.model.LibrarySort import tachiyomi.domain.library.model.sort import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.i18n.MR +import tachiyomi.presentation.core.components.BaseSortItem import tachiyomi.presentation.core.components.CheckboxItem import tachiyomi.presentation.core.components.HeadingItem -import tachiyomi.presentation.core.components.NondirectionalSortItem import tachiyomi.presentation.core.components.SettingsChipRow import tachiyomi.presentation.core.components.SliderItem import tachiyomi.presentation.core.components.SortItem @@ -184,10 +184,14 @@ private fun ColumnScope.SortPage( MR.strings.action_sort_random to LibrarySort.Type.Random, ).plus(trackerSortOption).map { (titleRes, mode) -> if (mode == LibrarySort.Type.Random) { - NondirectionalSortItem( + val enabledIcon = if (sortingMode == LibrarySort.Type.Random) { + Icons.Default.Refresh + } else { + null + } + BaseSortItem( label = stringResource(titleRes), - enabled = sortingMode == LibrarySort.Type.Random, - enabledIcon = Icons.Default.Refresh, + icon = enabledIcon, onClick = { screenModel.setSort(category, mode, LibrarySort.Direction.Ascending) }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt index ca3fdb56e..91a3d1236 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt @@ -268,7 +268,7 @@ class LibraryScreenModel( fun LibrarySort.comparator(): Comparator = Comparator { i1, i2 -> when (this.type) { - LibrarySort.Type.Alphabetical, LibrarySort.Type.Random -> { + LibrarySort.Type.Alphabetical -> { sortAlphabetically(i1, i2) } LibrarySort.Type.LastRead -> { @@ -301,6 +301,10 @@ class LibraryScreenModel( val item2Score = trackerScores[i2.libraryManga.id] ?: defaultTrackerScoreSortValue item1Score.compareTo(item2Score) } + LibrarySort.Type.Random -> { + error("A comparator should not be requested for the random sort style. Instead, intercept this " + + "case and call .shuffle()") + } } } diff --git a/domain/src/main/java/tachiyomi/domain/library/model/LibrarySortMode.kt b/domain/src/main/java/tachiyomi/domain/library/model/LibrarySortMode.kt index f7aeda69a..8a05b6f98 100644 --- a/domain/src/main/java/tachiyomi/domain/library/model/LibrarySortMode.kt +++ b/domain/src/main/java/tachiyomi/domain/library/model/LibrarySortMode.kt @@ -30,8 +30,8 @@ data class LibrarySort( data object LatestChapter : Type(0b00010100) data object ChapterFetchDate : Type(0b00011000) data object DateAdded : Type(0b00011100) - data object TrackerMean : Type(0b000100000) - data object Random : Type(0b000100100) + data object TrackerMean : Type(0b00100000) + data object Random : Type(0b00100100) companion object { fun valueOf(flag: Long): Type { diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt index 3810c49c3..a2ac8a773 100644 --- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt +++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt @@ -99,30 +99,15 @@ fun SortItem(label: String, sortDescending: Boolean?, onClick: () -> Unit) { null -> null } - BaseSettingsItem( + BaseSortItem( label = label, - widget = { - if (arrowIcon != null) { - Icon( - imageVector = arrowIcon, - contentDescription = null, - tint = MaterialTheme.colorScheme.primary, - ) - } else { - Spacer(modifier = Modifier.size(24.dp)) - } - }, + icon = arrowIcon, onClick = onClick, ) } @Composable -fun NondirectionalSortItem(label: String, enabled: Boolean, enabledIcon: ImageVector, onClick: () -> Unit) { - val icon = when(enabled) { - true -> enabledIcon - false -> null - } - +fun BaseSortItem(label: String, icon: ImageVector?, onClick: () -> Unit) { BaseSettingsItem( label = label, widget = {