From 166aebdf256ee6759998b00c69433cc6a52441ee Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Sun, 23 Aug 2020 21:59:43 -0400 Subject: [PATCH] Grab started filter from J2k --- .../tachiyomi/data/database/models/LibraryManga.kt | 4 ++++ .../tachiyomi/data/database/queries/RawQueries.kt | 9 ++++++++- .../database/resolvers/LibraryMangaGetResolver.kt | 3 +++ .../tachiyomi/data/database/tables/MangaTable.kt | 4 ++++ .../tachiyomi/data/preference/PreferenceKeys.kt | 2 ++ .../tachiyomi/data/preference/PreferencesHelper.kt | 2 ++ .../tachiyomi/ui/library/LibraryCategoryAdapter.kt | 1 + .../kanade/tachiyomi/ui/library/LibraryPresenter.kt | 11 +++++++++++ .../tachiyomi/ui/library/LibrarySettingsSheet.kt | 7 +++++-- app/src/main/res/values/strings_sy.xml | 1 + 10 files changed, 41 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/LibraryManga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/LibraryManga.kt index 35cf30c67..dea0bc52d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/LibraryManga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/LibraryManga.kt @@ -5,4 +5,8 @@ class LibraryManga : MangaImpl() { var unread: Int = 0 var category: Int = 0 + + // SY --> + var read: Int = 0 + // SY <-- } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt index 1d6ebd227..064f3c5d8 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt @@ -42,7 +42,7 @@ val libraryQuery = """ SELECT M.*, COALESCE(MC.${MangaCategory.COL_CATEGORY_ID}, 0) AS ${Manga.COL_CATEGORY} FROM ( - SELECT ${Manga.TABLE}.*, COALESCE(C.unread, 0) AS ${Manga.COL_UNREAD} + SELECT ${Manga.TABLE}.*, COALESCE(C.unread, 0) AS ${Manga.COL_UNREAD}, COALESCE(R.read, 0) AS ${Manga.COL_READ} FROM ${Manga.TABLE} LEFT JOIN ( SELECT ${Chapter.COL_MANGA_ID}, COUNT(*) AS unread @@ -51,6 +51,13 @@ val libraryQuery = GROUP BY ${Chapter.COL_MANGA_ID} ) AS C ON ${Manga.COL_ID} = C.${Chapter.COL_MANGA_ID} + LEFT JOIN ( + SELECT ${Chapter.COL_MANGA_ID}, COUNT(*) AS read + FROM ${Chapter.TABLE} + WHERE ${Chapter.COL_READ} = 1 + GROUP BY ${Chapter.COL_MANGA_ID} + ) AS R + ON ${Manga.COL_ID} = R.${Chapter.COL_MANGA_ID} WHERE ${Manga.COL_FAVORITE} = 1 GROUP BY ${Manga.COL_ID} ORDER BY ${Manga.COL_TITLE} diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/LibraryMangaGetResolver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/LibraryMangaGetResolver.kt index aac8ead3e..03901a5d6 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/LibraryMangaGetResolver.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/LibraryMangaGetResolver.kt @@ -18,6 +18,9 @@ class LibraryMangaGetResolver : DefaultGetResolver(), BaseMangaGet mapBaseFromCursor(manga, cursor) manga.unread = cursor.getInt(cursor.getColumnIndex(MangaTable.COL_UNREAD)) manga.category = cursor.getInt(cursor.getColumnIndex(MangaTable.COL_CATEGORY)) + // SY --> + manga.read = cursor.getInt(cursor.getColumnIndex(MangaTable.COL_READ)) + // SY <-- return manga } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/tables/MangaTable.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/tables/MangaTable.kt index bd6f79f4f..e8d31e4e6 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/tables/MangaTable.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/tables/MangaTable.kt @@ -38,6 +38,10 @@ object MangaTable { const val COL_UNREAD = "unread" + // SY ->> + const val COL_READ = "read" + // SY <-- + const val COL_CATEGORY = "category" const val COL_COVER_LAST_MODIFIED = "cover_last_modified" diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt index 63800c9fc..7c947a0bf 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt @@ -115,6 +115,8 @@ object PreferenceKeys { const val filterCompleted = "pref_filter_completed_key" + const val filterStarted = "pref_filter_started_key" + const val filterTracked = "pref_filter_tracked_key" const val filterLewd = "pref_filter_lewd_key" diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index 650af403c..e8bee046b 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -215,6 +215,8 @@ class PreferencesHelper(val context: Context) { fun filterCompleted() = flowPrefs.getInt(Keys.filterCompleted, 0) + fun filterStarted() = flowPrefs.getInt(Keys.filterStarted, 0) + fun filterTracked() = flowPrefs.getInt(Keys.filterTracked, 0) fun filterLewd() = flowPrefs.getInt(Keys.filterLewd, 0) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt index 402552f36..6a320ba1e 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt @@ -95,6 +95,7 @@ class LibraryCategoryAdapter(view: LibraryCategoryView, val controller: LibraryC !preferences.downloadedOnly().get() && preferences.filterDownloaded().get() == Filter.TriState.STATE_IGNORE && preferences.filterCompleted().get() == Filter.TriState.STATE_IGNORE && + preferences.filterStarted().get() == Filter.TriState.STATE_IGNORE && preferences.filterUnread().get() == Filter.TriState.STATE_IGNORE && preferences.filterTracked().get() == Filter.TriState.STATE_IGNORE && preferences.filterLewd().get() == Filter.TriState.STATE_IGNORE diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index 909c6c4ae..ae4419e06 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -160,8 +160,11 @@ class LibraryPresenter( val filterDownloadedOnly = preferences.downloadedOnly().get() val filterUnread = preferences.filterUnread().get() val filterCompleted = preferences.filterCompleted().get() + // SY --> + val filterStarted = preferences.filterStarted().get() val filterTracked = preferences.filterTracked().get() val filterLewd = preferences.filterLewd().get() + // SY <-- val filterFn: (LibraryItem) -> Boolean = f@{ item -> // Filter when there isn't unread chapters. @@ -177,6 +180,13 @@ class LibraryPresenter( if (filterCompleted == STATE_EXCLUDE && item.manga.status == SManga.COMPLETED) { return@f false } + // SY --> + if (filterStarted == STATE_INCLUDE && item.manga.read == 0) { + return@f false + } + if (filterStarted == STATE_EXCLUDE && item.manga.read > 0) { + return@f false + } if (filterTracked != STATE_IGNORE) { val tracks = db.getTracks(item.manga).executeAsBlocking() if (filterTracked == STATE_INCLUDE && tracks.isEmpty()) return@f false @@ -196,6 +206,7 @@ class LibraryPresenter( } return@f if (filterDownloaded == STATE_INCLUDE || filterDownloadedOnly) isDownloaded else !isDownloaded } + // SY <-- true } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt index b4278daa8..90497507a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt @@ -87,6 +87,7 @@ class LibrarySettingsSheet( private val downloaded = Item.TriStateGroup(R.string.action_filter_downloaded, this) private val unread = Item.TriStateGroup(R.string.action_filter_unread, this) private val completed = Item.TriStateGroup(R.string.completed, this) + private val started = Item.TriStateGroup(R.string.started, this) private val tracked = Item.TriStateGroup(R.string.tracked, this) private val lewd = Item.TriStateGroup(R.string.lewd, this) // SY <-- @@ -95,9 +96,9 @@ class LibrarySettingsSheet( // SY --> override val items = ( if (Injekt.get().hasLoggedServices()) { - listOf(downloaded, unread, completed, tracked, lewd) + listOf(downloaded, unread, completed, started, tracked, lewd) } else { - listOf(downloaded, unread, completed, lewd) + listOf(downloaded, unread, completed, started, lewd) } ) // SY <-- @@ -109,6 +110,7 @@ class LibrarySettingsSheet( downloaded.state = preferences.filterDownloaded().get() unread.state = preferences.filterUnread().get() completed.state = preferences.filterCompleted().get() + completed.state = preferences.filterStarted().get() if (Injekt.get().hasLoggedServices()) { tracked.state = preferences.filterTracked().get() } else { @@ -132,6 +134,7 @@ class LibrarySettingsSheet( downloaded -> preferences.filterDownloaded().set(item.state) unread -> preferences.filterUnread().set(item.state) completed -> preferences.filterCompleted().set(item.state) + started -> preferences.filterStarted().set(item.state) tracked -> preferences.filterTracked().set(item.state) lewd -> preferences.filterLewd().set(item.state) } diff --git a/app/src/main/res/values/strings_sy.xml b/app/src/main/res/values/strings_sy.xml index 07fd7a494..87a7cf167 100644 --- a/app/src/main/res/values/strings_sy.xml +++ b/app/src/main/res/values/strings_sy.xml @@ -310,6 +310,7 @@ Tracked Lewd + Started Tracking status