Browse Source

Add option to prevent deleting bookmarked chapters (closes #2082)

arkon 4 years ago
parent
commit
dbaac69fad

+ 12 - 6
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt

@@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.data.database.models.Chapter
 import eu.kanade.tachiyomi.data.database.models.Manga
 import eu.kanade.tachiyomi.data.download.model.Download
 import eu.kanade.tachiyomi.data.download.model.DownloadQueue
+import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 import eu.kanade.tachiyomi.source.Source
 import eu.kanade.tachiyomi.source.SourceManager
 import eu.kanade.tachiyomi.source.model.Page
@@ -24,10 +25,8 @@ import uy.kohesive.injekt.injectLazy
  */
 class DownloadManager(private val context: Context) {
 
-    /**
-     * The sources manager.
-     */
-    private val sourceManager by injectLazy<SourceManager>()
+    private val sourceManager: SourceManager by injectLazy()
+    private val preferences: PreferencesHelper by injectLazy()
 
     /**
      * Downloads provider, used to retrieve the folders where the chapters are or should be stored.
@@ -201,9 +200,16 @@ class DownloadManager(private val context: Context) {
      */
     fun deleteChapters(chapters: List<Chapter>, manga: Manga, source: Source) {
         queue.remove(chapters)
-        val chapterDirs = provider.findChapterDirs(chapters, manga, source)
+
+        val filteredChapters = if (!preferences.removeBookmarkedChapters()) {
+            chapters.filterNot { it.bookmark }
+        } else {
+            chapters
+        }
+
+        val chapterDirs = provider.findChapterDirs(filteredChapters, manga, source)
         chapterDirs.forEach { it.delete() }
-        cache.removeChapters(chapters, manga)
+        cache.removeChapters(filteredChapters, manga)
         if (cache.getDownloadCount(manga) == 0) { // Delete manga directory if empty
             chapterDirs.firstOrNull()?.parentFile?.delete()
         }

+ 2 - 0
app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt

@@ -97,6 +97,8 @@ object PreferenceKeys {
 
     const val removeAfterMarkedAsRead = "pref_remove_after_marked_as_read_key"
 
+    const val removeBookmarkedChapters = "pref_remove_bookmarked"
+
     const val libraryUpdateInterval = "pref_library_update_interval_key"
 
     const val libraryUpdateRestriction = "library_update_restriction"

+ 2 - 0
app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt

@@ -188,6 +188,8 @@ class PreferencesHelper(val context: Context) {
 
     fun removeAfterMarkedAsRead() = prefs.getBoolean(Keys.removeAfterMarkedAsRead, false)
 
+    fun removeBookmarkedChapters() = prefs.getBoolean(Keys.removeBookmarkedChapters, false)
+
     fun libraryUpdateInterval() = flowPrefs.getInt(Keys.libraryUpdateInterval, 24)
 
     fun libraryUpdateRestriction() = prefs.getStringSet(Keys.libraryUpdateRestriction, setOf("wifi"))

+ 8 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt

@@ -494,8 +494,14 @@ class MangaPresenter(
      * @param chapters the chapters to delete.
      */
     private fun deleteChaptersInternal(chapters: List<ChapterItem>) {
-        downloadManager.deleteChapters(chapters, manga, source)
-        chapters.forEach {
+        val filteredChapters = if (!preferences.removeBookmarkedChapters()) {
+            chapters.filterNot { it.bookmark }
+        } else {
+            chapters
+        }
+
+        downloadManager.deleteChapters(filteredChapters, manga, source)
+        filteredChapters.forEach {
             it.status = Download.NOT_DOWNLOADED
             it.download = null
         }

+ 5 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt

@@ -84,6 +84,11 @@ class SettingsDownloadController : SettingsController() {
                 defaultValue = "-1"
                 summary = "%s"
             }
+            switchPreference {
+                key = Keys.removeBookmarkedChapters
+                titleRes = R.string.pref_remove_bookmarked_chapters
+                defaultValue = false
+            }
         }
 
         val dbCategories = db.getCategories().executeAsBlocking()

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -314,6 +314,7 @@
     <string name="pref_category_delete_chapters">Delete chapters</string>
     <string name="pref_remove_after_marked_as_read">After manually marked as read</string>
     <string name="pref_remove_after_read">After reading</string>
+    <string name="pref_remove_bookmarked_chapters">Delete bookmarked chapters</string>
     <string name="custom_dir">Custom location</string>
     <string name="disabled">Disabled</string>
     <string name="last_read_chapter">Last read chapter</string>