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