From ed277357cf6dfb001c069025e7c3de41d421aa6f Mon Sep 17 00:00:00 2001 From: arkon Date: Wed, 11 Mar 2020 18:46:44 -0400 Subject: [PATCH] Bookmark via reader (closes #1413) --- .../kanade/tachiyomi/ui/reader/ReaderActivity.kt | 16 ++++++++++++++++ .../tachiyomi/ui/reader/ReaderPresenter.kt | 13 +++++++++++++ app/src/main/res/menu/reader.xml | 14 ++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index 80b46ebb08..f5f2ab204b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -208,6 +208,11 @@ class ReaderActivity : BaseRxActivity() { */ override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.reader, menu) + + val isChapterBookmarked = presenter?.getCurrentChapter()?.chapter?.bookmark ?: false + menu.findItem(R.id.action_bookmark).isVisible = !isChapterBookmarked + menu.findItem(R.id.action_remove_bookmark).isVisible = isChapterBookmarked + return true } @@ -217,6 +222,14 @@ class ReaderActivity : BaseRxActivity() { */ override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { + R.id.action_bookmark -> { + presenter.bookmarkCurrentChapter(true) + invalidateOptionsMenu() + } + R.id.action_remove_bookmark -> { + presenter.bookmarkCurrentChapter(false) + invalidateOptionsMenu() + } R.id.action_settings -> ReaderSettingsSheet(this).show() R.id.action_custom_filter -> ReaderColorFilterSheet(this).show() } @@ -402,6 +415,9 @@ class ReaderActivity : BaseRxActivity() { please_wait.gone() viewer?.setChapters(viewerChapters) toolbar.subtitle = viewerChapters.currChapter.chapter.name + + // Invalidate menu to show proper chapter bookmark state + invalidateOptionsMenu() } /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index 1064c25265..d4dc5646e7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -407,6 +407,19 @@ class ReaderPresenter( return viewerChaptersRelay.value?.currChapter } + /** + * Bookmarks the currently active chapter. + */ + fun bookmarkCurrentChapter(bookmarked: Boolean) { + if (getCurrentChapter()?.chapter == null) { + return + } + + val chapter = getCurrentChapter()?.chapter!! + chapter.bookmark = bookmarked + db.updateChapterProgress(chapter).executeAsBlocking() + } + /** * Returns the viewer position used by this manga or the default one. */ diff --git a/app/src/main/res/menu/reader.xml b/app/src/main/res/menu/reader.xml index 72901792ca..e51dfe2521 100644 --- a/app/src/main/res/menu/reader.xml +++ b/app/src/main/res/menu/reader.xml @@ -2,6 +2,20 @@ + + + +