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