From f3c19f9c027383e4e97dac42ac4836ccc9afacc4 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 12 Aug 2024 16:46:07 +0300 Subject: [PATCH] Add more quick filters --- .../kotatsu/favourites/data/FavouritesDao.kt | 5 ++++- .../kotatsu/history/data/HistoryDao.kt | 1 + .../history/domain/HistoryListQuickFilter.kt | 1 + .../kotatsu/list/domain/ListFilterOption.kt | 1 + app/src/main/res/drawable/ic_nsfw.xml | 20 +++++++++++++++++++ 5 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable/ic_nsfw.xml diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/favourites/data/FavouritesDao.kt b/app/src/main/kotlin/org/koitharu/kotatsu/favourites/data/FavouritesDao.kt index 5fd49e107..136c8195f 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/favourites/data/FavouritesDao.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/favourites/data/FavouritesDao.kt @@ -211,7 +211,10 @@ abstract class FavouritesDao { private fun ListFilterOption.getCondition(): String = when (this) { ListFilterOption.Macro.COMPLETED -> "EXISTS(SELECT * FROM history WHERE history.manga_id = favourites.manga_id AND history.percent >= 0.9999)" ListFilterOption.Macro.NEW_CHAPTERS -> "(SELECT chapters_new FROM tracks WHERE tracks.manga_id = favourites.manga_id) > 0" + ListFilterOption.Macro.NSFW -> "manga.nsfw = 1" is ListFilterOption.Tag -> "EXISTS(SELECT * FROM manga_tags WHERE favourites.manga_id = manga_tags.manga_id AND tag_id = ${tag.toEntity().id})" - else -> throw IllegalArgumentException("Unsupported option $this") + ListFilterOption.Downloaded, + is ListFilterOption.Favorite, + ListFilterOption.Macro.FAVORITE -> throw IllegalArgumentException("Unsupported option $this") } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryDao.kt b/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryDao.kt index 50f058f6f..0ad7ccef9 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryDao.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/history/data/HistoryDao.kt @@ -175,6 +175,7 @@ abstract class HistoryDao { ListFilterOption.Macro.COMPLETED -> "percent >= 0.9999" ListFilterOption.Macro.NEW_CHAPTERS -> "(SELECT chapters_new FROM tracks WHERE tracks.manga_id = history.manga_id) > 0" ListFilterOption.Macro.FAVORITE -> "EXISTS(SELECT * FROM favourites WHERE history.manga_id = favourites.manga_id)" + ListFilterOption.Macro.NSFW -> "manga.nsfw = 1" is ListFilterOption.Tag -> "EXISTS(SELECT * FROM manga_tags WHERE history.manga_id = manga_tags.manga_id AND tag_id = ${tag.toEntity().id})" } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/HistoryListQuickFilter.kt b/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/HistoryListQuickFilter.kt index 6cea47efd..7ed675cfc 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/HistoryListQuickFilter.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/history/domain/HistoryListQuickFilter.kt @@ -24,6 +24,7 @@ class HistoryListQuickFilter @Inject constructor( } add(ListFilterOption.Macro.COMPLETED) add(ListFilterOption.Macro.FAVORITE) + add(ListFilterOption.Macro.NSFW) repository.getPopularTags(3).mapTo(this) { ListFilterOption.Tag(it) } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/list/domain/ListFilterOption.kt b/app/src/main/kotlin/org/koitharu/kotatsu/list/domain/ListFilterOption.kt index 78dd5a061..463bef143 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/list/domain/ListFilterOption.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/list/domain/ListFilterOption.kt @@ -41,6 +41,7 @@ sealed interface ListFilterOption { COMPLETED(R.string.status_completed, R.drawable.ic_state_finished), NEW_CHAPTERS(R.string.new_chapters, R.drawable.ic_updated), FAVORITE(R.string.favourites, R.drawable.ic_heart_outline), + NSFW(R.string.nsfw, R.drawable.ic_nsfw), ; override val titleText: CharSequence? diff --git a/app/src/main/res/drawable/ic_nsfw.xml b/app/src/main/res/drawable/ic_nsfw.xml new file mode 100644 index 000000000..3f07efd4c --- /dev/null +++ b/app/src/main/res/drawable/ic_nsfw.xml @@ -0,0 +1,20 @@ + + + + + +