diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt
index fb3edf50e..16f17ed82 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt
@@ -169,6 +169,26 @@ interface MangaQueries : DbProvider {
)
.prepare()
+ // SY -->
+ fun deleteMangasNotInLibraryAndNotRead() = db.delete()
+ .byQuery(
+ DeleteQuery.builder()
+ .table(MangaTable.TABLE)
+ .where(
+ """
+ ${MangaTable.COL_FAVORITE} = ? AND ${MangaTable.COL_ID} NOT IN (
+ SELECT ${MergedTable.COL_MANGA_ID} FROM ${MergedTable.TABLE} WHERE ${MergedTable.COL_MANGA_ID} != ${MergedTable.COL_MERGE_ID}
+ ) AND ${MangaTable.COL_ID} NOT IN (
+ SELECT ${ChapterTable.COL_MANGA_ID} FROM ${ChapterTable.TABLE} WHERE ${ChapterTable.COL_READ} = 1 OR ${ChapterTable.COL_LAST_PAGE_READ} != 0
+ )
+ """.trimIndent()
+ )
+ .whereArgs(0)
+ .build()
+ )
+ .prepare()
+ // SY <--
+
fun deleteMangas() = db.delete()
.byQuery(
DeleteQuery.builder()
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt
index 405325446..39b62ecf8 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt
@@ -12,6 +12,7 @@ import androidx.core.net.toUri
import androidx.core.text.HtmlCompat
import androidx.preference.PreferenceScreen
import com.afollestad.materialdialogs.MaterialDialog
+import com.afollestad.materialdialogs.checkbox.checkBoxPrompt
import com.afollestad.materialdialogs.list.listItemsMultiChoice
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.cache.ChapterCache
@@ -413,11 +414,20 @@ class SettingsAdvancedController : SettingsController() {
}
class ClearDatabaseDialogController : DialogController() {
+ // SY -->
+ var keepReadManga = false
+ // SY <--
+
override fun onCreateDialog(savedViewState: Bundle?): Dialog {
return MaterialDialog(activity!!)
.message(R.string.clear_database_confirmation)
+ // SY -->
+ .checkBoxPrompt(R.string.clear_db_exclude_read) {
+ keepReadManga = it
+ }
+ // SY <--
.positiveButton(android.R.string.ok) {
- (targetController as? SettingsAdvancedController)?.clearDatabase()
+ (targetController as? SettingsAdvancedController)?.clearDatabase(/* SY --> */keepReadManga/* SY <-- */)
}
.negativeButton(android.R.string.cancel)
}
@@ -439,8 +449,14 @@ class SettingsAdvancedController : SettingsController() {
activity?.toast(R.string.clear_history_completed)
}
- private fun clearDatabase() {
- db.deleteMangasNotInLibrary().executeAsBlocking()
+ private fun clearDatabase(keepReadManga: Boolean) {
+ // SY -->
+ if (keepReadManga) {
+ db.deleteMangasNotInLibraryAndNotRead().executeAsBlocking()
+ } else {
+ db.deleteMangasNotInLibrary().executeAsBlocking()
+ }
+ // SY <--
db.deleteHistoryNoLastRead().executeAsBlocking()
activity?.toast(R.string.clear_database_completed)
}
@@ -448,6 +464,8 @@ class SettingsAdvancedController : SettingsController() {
private companion object {
const val CLEAR_CACHE_KEY = "pref_clear_cache_key"
+ // SY -->
private var job: Job? = null
+ // SY <--
}
}
diff --git a/app/src/main/res/values/strings_sy.xml b/app/src/main/res/values/strings_sy.xml
index fffa25b11..aea3dcb37 100644
--- a/app/src/main/res/values/strings_sy.xml
+++ b/app/src/main/res/values/strings_sy.xml
@@ -152,6 +152,7 @@
Bandwidth Hero Proxy Server
Put Bandwidth Hero Proxy server url here
Monthly
+ Keep manga with read chapters
Minimal