From c32434735db9526de5d73e0d5384f41e74dbd59a Mon Sep 17 00:00:00 2001 From: arkon Date: Sat, 4 Jul 2020 10:54:01 -0400 Subject: [PATCH] Add ability to download unread chapters from library (cherry picked from commit d9a12d79b0ecb905c1226265b48d11da1dc29633) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersPresenter.kt --- .../tachiyomi/ui/library/LibraryController.kt | 9 +++++++++ .../tachiyomi/ui/library/LibraryPresenter.kt | 16 ++++++++++++++++ .../ui/manga/MangaAllInOneController.kt | 3 --- app/src/main/res/menu/library_selection.xml | 7 +++++++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 33 insertions(+), 3 deletions(-) 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 4dfd77c6b..41d099200 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 @@ -30,6 +30,7 @@ import eu.kanade.tachiyomi.data.library.LibraryUpdateService import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.asImmediateFlow import eu.kanade.tachiyomi.databinding.LibraryControllerBinding +import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.ui.base.controller.NucleusController import eu.kanade.tachiyomi.ui.base.controller.RootController import eu.kanade.tachiyomi.ui.base.controller.TabbedController @@ -509,6 +510,7 @@ class LibraryController( mode.title = count.toString() binding.actionToolbar.findItem(R.id.action_edit_cover)?.isVisible = count == 1 + binding.actionToolbar.findItem(R.id.action_download_unread)?.isVisible = selectedMangas.any { it.source != LocalSource.ID } } return false } @@ -521,6 +523,7 @@ class LibraryController( when (item.itemId) { R.id.action_edit_cover -> handleChangeCover() R.id.action_move_to_category -> showChangeMangaCategoriesDialog() + R.id.action_download_unread -> downloadUnreadChapters() R.id.action_delete -> showDeleteMangaDialog() R.id.action_select_all -> selectAllCategoryManga() R.id.action_select_inverse -> selectInverseCategoryManga() @@ -627,6 +630,12 @@ class LibraryController( .showDialog(router) } + private fun downloadUnreadChapters() { + val mangas = selectedMangas.toList() + presenter.downloadUnreadChapters(mangas) + destroyActionModeIfNeeded() + } + private fun showDeleteMangaDialog() { DeleteLibraryMangasDialog(this, selectedMangas.toList()).showDialog(router) } 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 e90aa35d8..4a7e432ba 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -352,6 +352,22 @@ class LibraryPresenter( .reduce { set1: Iterable, set2 -> set1.intersect(set2).toMutableList() } } + /** + * Queues all unread chapters from the given list of manga. + * + * @param mangas the list of manga. + */ + fun downloadUnreadChapters(mangas: List) { + mangas.forEach { manga -> + launchIO { + val chapters = db.getChapters(manga).executeAsBlocking() + .filter { !it.read } + + downloadManager.downloadChapters(manga, chapters) + } + } + } + /** * Remove the selected manga from the library. * diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaAllInOneController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaAllInOneController.kt index a12d764ab..fa9265b72 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaAllInOneController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaAllInOneController.kt @@ -909,9 +909,6 @@ class MangaAllInOneController : private fun markAsRead(chapters: List) { presenter.markChaptersRead(chapters, true) - if (presenter.preferences.removeAfterMarkedAsRead()) { - deleteChapters(chapters) - } destroyActionModeIfNeeded() } diff --git a/app/src/main/res/menu/library_selection.xml b/app/src/main/res/menu/library_selection.xml index 35f3a6275..b3da4babc 100755 --- a/app/src/main/res/menu/library_selection.xml +++ b/app/src/main/res/menu/library_selection.xml @@ -16,6 +16,13 @@ app:iconTint="?attr/colorOnPrimary" app:showAsAction="always" /> + + Mark as unread Mark previous as read Download + Download unread chapters Bookmark Unbookmark Delete