Add option to only delete downloads from library

closes #1403
This commit is contained in:
Jays2Kings 2022-09-02 15:00:36 -04:00
parent 454294e247
commit 7416aa40b1
3 changed files with 35 additions and 7 deletions

View file

@ -24,6 +24,7 @@ import android.view.ViewPropertyAnimator
import android.view.ViewTreeObserver
import android.view.inputmethod.InputMethodManager
import android.widget.ImageView
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ActionMode
import androidx.coordinatorlayout.widget.CoordinatorLayout
@ -94,6 +95,7 @@ import eu.kanade.tachiyomi.ui.source.globalsearch.GlobalSearchController
import eu.kanade.tachiyomi.util.isLocal
import eu.kanade.tachiyomi.util.moveCategories
import eu.kanade.tachiyomi.util.system.contextCompatDrawable
import eu.kanade.tachiyomi.util.system.disableItems
import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.getResourceColor
import eu.kanade.tachiyomi.util.system.getResourceDrawable
@ -1952,13 +1954,35 @@ class LibraryController(
R.id.action_move_to_category -> showChangeMangaCategoriesSheet()
R.id.action_share -> shareManga()
R.id.action_delete -> {
val options = arrayOf(
R.string.remove_downloads,
R.string.remove_from_library,
)
.map { activity!!.getString(it) }
activity!!.materialAlertDialog()
.setMessage(R.string.remove_from_library_question)
.setPositiveButton(R.string.remove) { _, _ ->
.setTitle(R.string.remove)
.setMultiChoiceItems(
options.toTypedArray(),
options.map { true }.toBooleanArray(),
) { dialog, position, _ ->
if (position == 0) {
val listView = (dialog as AlertDialog).listView
listView.setItemChecked(position, true)
}
}
.setPositiveButton(R.string.remove) { dialog, _ ->
val listView = (dialog as AlertDialog).listView
if (listView.isItemChecked(1)) {
deleteMangasFromLibrary()
} else {
val mangas = selectedMangas.toList()
presenter.confirmDeletion(mangas, false)
}
}
.setNegativeButton(android.R.string.cancel, null)
.show()
.show().apply {
disableItems(arrayOf(options.first()))
}
}
R.id.action_download_unread -> {
presenter.downloadUnread(selectedMangas.toList())

View file

@ -920,16 +920,21 @@ class LibraryPresenter(
}
/** Remove manga from the library and delete the downloads */
fun confirmDeletion(mangas: List<Manga>) {
fun confirmDeletion(mangas: List<Manga>, coverCacheToo: Boolean = true) {
launchIO {
val mangaToDelete = mangas.distinctBy { it.id }
mangaToDelete.forEach { manga ->
if (coverCacheToo) {
coverCache.deleteFromCache(manga)
}
val source = sourceManager.get(manga.source) as? HttpSource
if (source != null) {
downloadManager.deleteManga(manga, source)
}
}
if (!coverCacheToo) {
requestDownloadBadgesUpdate()
}
}
}

View file

@ -133,7 +133,6 @@
<string name="updating_library">Updating library</string>
<string name="selected_">Selected: %1$d</string>
<string name="local">Local</string>
<string name="remove_from_library_question">Remove from library?</string>
<string name="library_search_hint">Search title, tags, source</string>
<string name="library_is_empty_add_from_browse">Your library is empty, add series to your
library from the browse tab.</string>