diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index b775142e58..2cb93059c5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -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) { _, _ -> - deleteMangasFromLibrary() + .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()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index c4d22b9e4c..1b4384a56a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -920,16 +920,21 @@ class LibraryPresenter( } /** Remove manga from the library and delete the downloads */ - fun confirmDeletion(mangas: List) { + fun confirmDeletion(mangas: List, coverCacheToo: Boolean = true) { launchIO { val mangaToDelete = mangas.distinctBy { it.id } mangaToDelete.forEach { manga -> - coverCache.deleteFromCache(manga) + if (coverCacheToo) { + coverCache.deleteFromCache(manga) + } val source = sourceManager.get(manga.source) as? HttpSource if (source != null) { downloadManager.deleteManga(manga, source) } } + if (!coverCacheToo) { + requestDownloadBadgesUpdate() + } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a4e3799c4a..cf4c7c5665 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -133,7 +133,6 @@ Updating library Selected: %1$d Local - Remove from library? Search title, tags, source Your library is empty, add series to your library from the browse tab.