mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Add option to keep read manga in Clear Database (#1382)
This commit is contained in:
parent
0f54058aee
commit
4192818ba0
4 changed files with 33 additions and 6 deletions
|
@ -167,6 +167,22 @@ interface MangaQueries : DbProvider {
|
||||||
)
|
)
|
||||||
.prepare()
|
.prepare()
|
||||||
|
|
||||||
|
fun deleteMangasNotInLibraryAndNotReadBySourceIds(sourceIds: List<Long>) = db.delete()
|
||||||
|
.byQuery(
|
||||||
|
DeleteQuery.builder()
|
||||||
|
.table(MangaTable.TABLE)
|
||||||
|
.where(
|
||||||
|
"""
|
||||||
|
${MangaTable.COL_FAVORITE} = ? AND ${MangaTable.COL_SOURCE} IN (${Queries.placeholders(sourceIds.size)}) 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, *sourceIds.toTypedArray())
|
||||||
|
.build(),
|
||||||
|
)
|
||||||
|
.prepare()
|
||||||
|
|
||||||
fun deleteMangas() = db.delete()
|
fun deleteMangas() = db.delete()
|
||||||
.byQuery(
|
.byQuery(
|
||||||
DeleteQuery.builder()
|
DeleteQuery.builder()
|
||||||
|
|
|
@ -27,6 +27,7 @@ import eu.kanade.tachiyomi.ui.base.controller.BaseCoroutineController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
||||||
import eu.kanade.tachiyomi.util.system.materialAlertDialog
|
import eu.kanade.tachiyomi.util.system.materialAlertDialog
|
||||||
import eu.kanade.tachiyomi.util.system.rootWindowInsetsCompat
|
import eu.kanade.tachiyomi.util.system.rootWindowInsetsCompat
|
||||||
|
import eu.kanade.tachiyomi.util.system.setCustomTitleAndMessage
|
||||||
import eu.kanade.tachiyomi.util.view.activityBinding
|
import eu.kanade.tachiyomi.util.view.activityBinding
|
||||||
import eu.kanade.tachiyomi.util.view.fullAppBarHeight
|
import eu.kanade.tachiyomi.util.view.fullAppBarHeight
|
||||||
import eu.kanade.tachiyomi.util.view.scrollViewWith
|
import eu.kanade.tachiyomi.util.view.scrollViewWith
|
||||||
|
@ -229,10 +230,15 @@ class ClearDatabaseController :
|
||||||
|
|
||||||
class ClearDatabaseSourcesDialog : DialogController() {
|
class ClearDatabaseSourcesDialog : DialogController() {
|
||||||
override fun onCreateDialog(savedViewState: Bundle?): Dialog {
|
override fun onCreateDialog(savedViewState: Bundle?): Dialog {
|
||||||
|
val item = arrayOf(activity!!.getString(R.string.clear_db_exclude_read))
|
||||||
|
val selected = booleanArrayOf(true)
|
||||||
return activity!!.materialAlertDialog()
|
return activity!!.materialAlertDialog()
|
||||||
.setMessage(R.string.clear_database_confirmation)
|
.setCustomTitleAndMessage(0, activity!!.getString(R.string.clear_database_confirmation))
|
||||||
|
.setMultiChoiceItems(item, selected) { _, which, checked ->
|
||||||
|
selected[which] = checked
|
||||||
|
}
|
||||||
.setPositiveButton(android.R.string.ok) { _, _ ->
|
.setPositiveButton(android.R.string.ok) { _, _ ->
|
||||||
(targetController as? ClearDatabaseController)?.clearDatabaseForSelectedSources()
|
(targetController as? ClearDatabaseController)?.clearDatabaseForSelectedSources(selected.last())
|
||||||
}
|
}
|
||||||
.setNegativeButton(android.R.string.cancel, null)
|
.setNegativeButton(android.R.string.cancel, null)
|
||||||
.create()
|
.create()
|
||||||
|
@ -240,12 +246,12 @@ class ClearDatabaseController :
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun clearDatabaseForSelectedSources() {
|
private fun clearDatabaseForSelectedSources(keepReadManga: Boolean) {
|
||||||
val adapter = adapter ?: return
|
val adapter = adapter ?: return
|
||||||
val selectedSourceIds = adapter.selectedPositions.mapNotNull { position ->
|
val selectedSourceIds = adapter.selectedPositions.mapNotNull { position ->
|
||||||
adapter.getItem(position)?.source?.id
|
adapter.getItem(position)?.source?.id
|
||||||
}
|
}
|
||||||
presenter.clearDatabaseForSourceIds(selectedSourceIds)
|
presenter.clearDatabaseForSourceIds(selectedSourceIds, keepReadManga)
|
||||||
binding.fab.isVisible = false
|
binding.fab.isVisible = false
|
||||||
adapter.clearSelection()
|
adapter.clearSelection()
|
||||||
adapter.notifyDataSetChanged()
|
adapter.notifyDataSetChanged()
|
||||||
|
|
|
@ -29,8 +29,12 @@ class ClearDatabasePresenter : BaseCoroutinePresenter<ClearDatabaseController>()
|
||||||
getDatabaseSources()
|
getDatabaseSources()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun clearDatabaseForSourceIds(sources: List<Long>) {
|
fun clearDatabaseForSourceIds(sources: List<Long>, keepReadManga: Boolean) {
|
||||||
db.deleteMangasNotInLibraryBySourceIds(sources).executeAsBlocking()
|
if (keepReadManga) {
|
||||||
|
db.deleteMangasNotInLibraryAndNotReadBySourceIds(sources).executeAsBlocking()
|
||||||
|
} else {
|
||||||
|
db.deleteMangasNotInLibraryBySourceIds(sources).executeAsBlocking()
|
||||||
|
}
|
||||||
db.deleteHistoryNoLastRead().executeAsBlocking()
|
db.deleteHistoryNoLastRead().executeAsBlocking()
|
||||||
getDatabaseSources()
|
getDatabaseSources()
|
||||||
}
|
}
|
||||||
|
|
|
@ -831,6 +831,7 @@
|
||||||
<string name="clear_database_source_item_count">%1$d non-library manga in database</string>
|
<string name="clear_database_source_item_count">%1$d non-library manga in database</string>
|
||||||
<string name="clear_database_summary">Delete manga and chapters that are not in your library</string>
|
<string name="clear_database_summary">Delete manga and chapters that are not in your library</string>
|
||||||
<string name="clear_database_confirmation">Are you sure? Read chapters and progress of non-library manga will be lost</string>
|
<string name="clear_database_confirmation">Are you sure? Read chapters and progress of non-library manga will be lost</string>
|
||||||
|
<string name="clear_db_exclude_read">Keep manga with read chapters</string>
|
||||||
<string name="clear_database_completed">Entries deleted</string>
|
<string name="clear_database_completed">Entries deleted</string>
|
||||||
<string name="database_clean">Database clean</string>
|
<string name="database_clean">Database clean</string>
|
||||||
<string name="refresh_library_metadata">Refresh library metadata</string>
|
<string name="refresh_library_metadata">Refresh library metadata</string>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue