Эх сурвалжийг харах

Implements delete chapter when set as read for issue #42

NoodleMage 9 жил өмнө
parent
commit
499c2213ee

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

@@ -190,6 +190,10 @@ class PreferencesHelper(private val context: Context) {
         return prefs.getBoolean(getKey(R.string.pref_download_only_over_wifi_key), true)
     }
 
+    fun removeAfterMarkedAsRead(): Boolean {
+        return prefs.getBoolean(getKey(R.string.pref_remove_after_marked_as_read_key), false)
+    }
+
     fun libraryUpdateInterval(): Preference<Int> {
         return rxPrefs.getInteger(getKey(R.string.pref_library_update_interval_key), 0)
     }

+ 6 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersPresenter.kt

@@ -103,7 +103,7 @@ class ChaptersPresenter : BasePresenter<ChaptersFragment>() {
                         }
                         start(CHAPTER_STATUS_CHANGES)
                     }
-                    .subscribe{ chaptersSubject.onNext(it) })
+                    .subscribe { chaptersSubject.onNext(it) })
         }
     }
 
@@ -191,6 +191,11 @@ class ChaptersPresenter : BasePresenter<ChaptersFragment>() {
                 .doOnNext { chapter ->
                     chapter.read = read
                     if (!read) chapter.last_page_read = 0
+
+                    // Delete chapter when marked as read if desired by user.
+                    if (preferences.removeAfterMarkedAsRead() && read) {
+                        deleteChapter(chapter)
+                    }
                 }
                 .toList()
                 .flatMap { chapters -> db.insertChapters(chapters).asRxObservable() }

+ 4 - 4
app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersFragment.kt

@@ -202,9 +202,9 @@ class RecentChaptersFragment : BaseRxFragment<RecentChaptersPresenter>(), Flexib
      * @param chapters selected chapter
      * @return true
      */
-    fun onMarkAsRead(chapters: Observable<Chapter>): Boolean {
+    fun onMarkAsRead(chapters: Observable<Chapter>, manga : Manga): Boolean {
         // Set marked as read
-        presenter.markChaptersRead(chapters, true)
+        presenter.markChaptersRead(chapters, manga, true)
         return true
     }
 
@@ -214,9 +214,9 @@ class RecentChaptersFragment : BaseRxFragment<RecentChaptersPresenter>(), Flexib
      * @param chapters selected chapter
      * @return true
      */
-    fun onMarkAsUnread(chapters: Observable<Chapter>): Boolean {
+    fun onMarkAsUnread(chapters: Observable<Chapter> , manga : Manga): Boolean {
         // Set marked as unread
-        presenter.markChaptersRead(chapters, false)
+        presenter.markChaptersRead(chapters, manga, false)
         return true
     }
 

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersHolder.kt

@@ -125,8 +125,8 @@ class RecentChaptersHolder(view: View, private val adapter: RecentChaptersAdapte
                 when (menuItem.itemId) {
                     R.id.action_download -> adapter.fragment.onDownload(chapterObservable, it.manga)
                     R.id.action_delete -> adapter.fragment.onDelete(chapterObservable, it.manga)
-                    R.id.action_mark_as_read -> adapter.fragment.onMarkAsRead(chapterObservable);
-                    R.id.action_mark_as_unread -> adapter.fragment.onMarkAsUnread(chapterObservable);
+                    R.id.action_mark_as_read -> adapter.fragment.onMarkAsRead(chapterObservable, it.manga);
+                    R.id.action_mark_as_unread -> adapter.fragment.onMarkAsUnread(chapterObservable, it.manga);
                 }
                 false
             }

+ 14 - 7
app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersPresenter.kt

@@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.data.database.models.Manga
 import eu.kanade.tachiyomi.data.database.models.MangaChapter
 import eu.kanade.tachiyomi.data.download.DownloadManager
 import eu.kanade.tachiyomi.data.download.model.Download
+import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 import eu.kanade.tachiyomi.data.source.SourceManager
 import eu.kanade.tachiyomi.event.DownloadChaptersEvent
 import eu.kanade.tachiyomi.event.ReaderEvent
@@ -25,6 +26,11 @@ class RecentChaptersPresenter : BasePresenter<RecentChaptersFragment>() {
      */
     @Inject lateinit var db: DatabaseHelper
 
+    /**
+     * Used to get settings
+     */
+    @Inject lateinit var preferences: PreferencesHelper
+
     /**
      * Used to get information from download manager
      */
@@ -291,15 +297,16 @@ class RecentChaptersPresenter : BasePresenter<RecentChaptersFragment>() {
      * *
      * @param read read status
      */
-    fun markChaptersRead(selectedChapters: Observable<Chapter>, read: Boolean) {
-        add(selectedChapters
-                .subscribeOn(Schedulers.io())
-                .map { chapter ->
+    fun markChaptersRead(selectedChapters: Observable<Chapter>, manga: Manga, read: Boolean) {
+        add(selectedChapters.subscribeOn(Schedulers.io())
+                .doOnNext { chapter ->
                     chapter.read = read
-                    if (!read) {
-                        chapter.last_page_read = 0
+                    if (!read) chapter.last_page_read = 0
+
+                    // Delete chapter when marked as read if desired by user.
+                    if (preferences.removeAfterMarkedAsRead() && read) {
+                        deleteChapter(chapter,manga)
                     }
-                    chapter
                 }
                 .toList()
                 .flatMap { chapters -> db.insertChapters(chapters).asRxObservable() }

+ 2 - 0
app/src/main/res/values/keys.xml

@@ -36,6 +36,8 @@
     <string name="pref_download_directory_key">pref_download_directory_key</string>
     <string name="pref_download_slots_key">pref_download_slots_key</string>
     <string name="pref_download_only_over_wifi_key">pref_download_only_over_wifi_key</string>
+    <string name="pref_remove_after_marked_as_read_key">pref_remove_after_marked_as_read_key</string>
+
 
     <string name="pref_source_languages">pref_source_languages</string>
 

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

@@ -134,6 +134,7 @@
     <string name="pref_download_directory">Downloads directory</string>
     <string name="pref_download_slots">Simultaneous downloads</string>
     <string name="pref_download_only_over_wifi">Only download over Wi-Fi</string>
+    <string name="pref_remove_after_marked_as_read">Remove when marked as read</string>
     <string name="custom_dir">Custom directory</string>
 
       <!-- Sources section -->

+ 6 - 0
app/src/main/res/xml/pref_downloads.xml

@@ -11,6 +11,12 @@
         android:key="@string/pref_download_only_over_wifi_key"
         android:defaultValue="true"/>
 
+    <SwitchPreferenceCompat
+        android:title="@string/pref_remove_after_marked_as_read"
+        android:key="@string/pref_remove_after_marked_as_read_key"
+        android:defaultValue="false"/>
+
+
     <eu.kanade.tachiyomi.widget.preference.IntListPreference
         android:title="@string/pref_download_slots"
         android:key="@string/pref_download_slots_key"