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 ad0733606a..83178ec139 100644 --- a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt @@ -177,6 +177,7 @@ private fun ColumnScope.SortPage( MR.strings.action_sort_latest_chapter to LibrarySort.Type.LatestChapter, MR.strings.action_sort_chapter_fetch_date to LibrarySort.Type.ChapterFetchDate, MR.strings.action_sort_date_added to LibrarySort.Type.DateAdded, + MR.strings.action_sort_download_count to LibrarySort.Type.DownloadCount, ).plus(trackerSortOption).map { (titleRes, mode) -> SortItem( label = stringResource(titleRes), 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 b2771d4e20..596707ceed 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 @@ -312,6 +312,9 @@ class LibraryScreenModel( val item2Score = trackerScores[i2.libraryManga.id] ?: defaultTrackerScoreSortValue item1Score.compareTo(item2Score) } + LibrarySort.Type.DownloadCount -> { + i1.downloadCount.compareTo(i2.downloadCount) + } } } 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 6a89d4e526..5f61a81def 100644 --- a/domain/src/main/java/tachiyomi/domain/library/model/LibrarySortMode.kt +++ b/domain/src/main/java/tachiyomi/domain/library/model/LibrarySortMode.kt @@ -16,6 +16,7 @@ data class LibrarySort( val isAscending: Boolean get() = direction == Direction.Ascending + @Suppress("MagicNumber") sealed class Type( override val flag: Long, ) : FlagWithMask { @@ -31,6 +32,7 @@ data class LibrarySort( data object ChapterFetchDate : Type(0b00011000) data object DateAdded : Type(0b00011100) data object TrackerMean : Type(0b000100000) + data object DownloadCount : Type(0b000100100) companion object { fun valueOf(flag: Long): Type { @@ -77,6 +79,7 @@ data class LibrarySort( Type.ChapterFetchDate, Type.DateAdded, Type.TrackerMean, + Type.DownloadCount, ) } val directions by lazy { setOf(Direction.Ascending, Direction.Descending) } @@ -90,6 +93,7 @@ data class LibrarySort( ) } + @Suppress("CyclomaticComplexMethod") fun deserialize(serialized: String): LibrarySort { if (serialized.isEmpty()) return default return try { @@ -104,6 +108,7 @@ data class LibrarySort( "CHAPTER_FETCH_DATE" -> Type.ChapterFetchDate "DATE_ADDED" -> Type.DateAdded "TRACKER_MEAN" -> Type.TrackerMean + "DOWNLOAD_COUNT" -> Type.DownloadCount else -> Type.Alphabetical } val ascending = if (values[1] == "ASCENDING") Direction.Ascending else Direction.Descending @@ -125,6 +130,7 @@ data class LibrarySort( Type.ChapterFetchDate -> "CHAPTER_FETCH_DATE" Type.DateAdded -> "DATE_ADDED" Type.TrackerMean -> "TRACKER_MEAN" + Type.DownloadCount -> "DOWNLOAD_COUNT" } val direction = if (direction == Direction.Ascending) "ASCENDING" else "DESCENDING" return "$type,$direction" diff --git a/domain/src/test/java/tachiyomi/domain/library/model/LibraryFlagsTest.kt b/domain/src/test/java/tachiyomi/domain/library/model/LibraryFlagsTest.kt index a3a2237822..11af8ebfb1 100644 --- a/domain/src/test/java/tachiyomi/domain/library/model/LibraryFlagsTest.kt +++ b/domain/src/test/java/tachiyomi/domain/library/model/LibraryFlagsTest.kt @@ -12,7 +12,7 @@ class LibraryFlagsTest { @Test fun `Check the amount of flags`() { LibraryDisplayMode.values.size shouldBe 4 - LibrarySort.types.size shouldBe 9 + LibrarySort.types.size shouldBe 10 LibrarySort.directions.size shouldBe 2 } diff --git a/i18n/src/commonMain/moko-resources/base/strings.xml b/i18n/src/commonMain/moko-resources/base/strings.xml index b0a397b1d0..3ffd09cc0c 100644 --- a/i18n/src/commonMain/moko-resources/base/strings.xml +++ b/i18n/src/commonMain/moko-resources/base/strings.xml @@ -69,6 +69,7 @@ Chapter fetch date Date added Tracker score + Download count Search Search… Search settings