Implements delete chapter when set as read for issue #42

This commit is contained in:
NoodleMage 2016-03-21 21:06:20 +01:00
parent abbc7b572a
commit 499c2213ee
8 changed files with 39 additions and 14 deletions

View file

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

View file

@ -103,7 +103,7 @@ class ChaptersPresenter : BasePresenter<ChaptersFragment>() {
} }
start(CHAPTER_STATUS_CHANGES) start(CHAPTER_STATUS_CHANGES)
} }
.subscribe{ chaptersSubject.onNext(it) }) .subscribe { chaptersSubject.onNext(it) })
} }
} }
@ -191,6 +191,11 @@ class ChaptersPresenter : BasePresenter<ChaptersFragment>() {
.doOnNext { chapter -> .doOnNext { chapter ->
chapter.read = read 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)
}
} }
.toList() .toList()
.flatMap { chapters -> db.insertChapters(chapters).asRxObservable() } .flatMap { chapters -> db.insertChapters(chapters).asRxObservable() }

View file

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

View file

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

View file

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

View file

@ -36,6 +36,8 @@
<string name="pref_download_directory_key">pref_download_directory_key</string> <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_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_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> <string name="pref_source_languages">pref_source_languages</string>

View file

@ -134,6 +134,7 @@
<string name="pref_download_directory">Downloads directory</string> <string name="pref_download_directory">Downloads directory</string>
<string name="pref_download_slots">Simultaneous downloads</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_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> <string name="custom_dir">Custom directory</string>
<!-- Sources section --> <!-- Sources section -->

View file

@ -11,6 +11,12 @@
android:key="@string/pref_download_only_over_wifi_key" android:key="@string/pref_download_only_over_wifi_key"
android:defaultValue="true"/> 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 <eu.kanade.tachiyomi.widget.preference.IntListPreference
android:title="@string/pref_download_slots" android:title="@string/pref_download_slots"
android:key="@string/pref_download_slots_key" android:key="@string/pref_download_slots_key"