Add share menu item in reader

Closes #9510

(cherry picked from commit 841f80f935225bdb7ee7e400d2b2aa8176c5e4c5)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
#	app/src/main/res/menu/reader.xml
This commit is contained in:
arkon 2023-06-09 22:52:49 -04:00 committed by Jobobby04
parent 40353c6dc9
commit 805a88df25
4 changed files with 59 additions and 51 deletions

View File

@ -377,16 +377,16 @@ class ReaderActivity : BaseActivity() {
assistUrl?.let { outContent.webUri = it.toUri() } assistUrl?.let { outContent.webUri = it.toUri() }
} }
/**
* Called when the options menu of the toolbar is being created. It adds our custom menu.
*/
override fun onCreateOptionsMenu(menu: Menu): Boolean { override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.reader, menu) menuInflater.inflate(R.menu.reader, menu)
/*val isChapterBookmarked = viewModel.getCurrentChapter()?.chapter?.bookmark ?: false /*val isChapterBookmarked = viewModel.getCurrentChapter()?.chapter?.bookmark ?: false
menu.findItem(R.id.action_bookmark).isVisible = !isChapterBookmarked menu.findItem(R.id.action_bookmark).isVisible = !isChapterBookmarked
menu.findItem(R.id.action_remove_bookmark).isVisible = isChapterBookmarked menu.findItem(R.id.action_remove_bookmark).isVisible = isChapterBookmarked
menu.findItem(R.id.action_open_in_web_view).isVisible = viewModel.getSource() is HttpSource*/
val isHttpSource = viewModel.getSource() is HttpSource
menu.findItem(R.id.action_open_in_web_view).isVisible = isHttpSource
menu.findItem(R.id.action_share).isVisible = isHttpSource*/
return true return true
} }
@ -398,7 +398,7 @@ class ReaderActivity : BaseActivity() {
/*override fun onOptionsItemSelected(item: MenuItem): Boolean { /*override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) { when (item.itemId) {
R.id.action_open_in_web_view -> { R.id.action_open_in_web_view -> {
openChapterInWebview() openChapterInWebView()
} }
R.id.action_bookmark -> { R.id.action_bookmark -> {
viewModel.bookmarkCurrentChapter(true) viewModel.bookmarkCurrentChapter(true)
@ -408,6 +408,12 @@ class ReaderActivity : BaseActivity() {
viewModel.bookmarkCurrentChapter(false) viewModel.bookmarkCurrentChapter(false)
invalidateOptionsMenu() invalidateOptionsMenu()
} }
R.id.action_share -> {
assistUrl?.let {
val intent = it.toUri().toShareIntent(this, type = "text/plain")
startActivity(Intent.createChooser(intent, getString(R.string.action_share)))
}
}
} }
return super.onOptionsItemSelected(item) return super.onOptionsItemSelected(item)
}*/ }*/
@ -701,7 +707,7 @@ class ReaderActivity : BaseActivity() {
setTooltip(R.string.action_open_in_web_view) setTooltip(R.string.action_open_in_web_view)
setOnClickListener { setOnClickListener {
openChapterInWebview() openChapterInWebView()
} }
} }
@ -713,6 +719,17 @@ class ReaderActivity : BaseActivity() {
} }
} }
with(binding.actionShare) {
setTooltip(R.string.action_share)
setOnClickListener {
assistUrl?.let {
val intent = it.toUri().toShareIntent(this@ReaderActivity, type = "text/plain")
startActivity(Intent.createChooser(intent, getString(R.string.action_share)))
}
}
}
with(binding.doublePage) { with(binding.doublePage) {
setTooltip(R.string.page_layout) setTooltip(R.string.page_layout)
@ -915,6 +932,8 @@ class ReaderActivity : BaseActivity() {
} }
actionWebView.isVisible = actionWebView.isVisible =
ReaderBottomButton.WebView.isIn(enabledButtons) && viewModel.getSource() is HttpSource ReaderBottomButton.WebView.isIn(enabledButtons) && viewModel.getSource() is HttpSource
actionShare.isVisible =
ReaderBottomButton.Share.isIn(enabledButtons) && viewModel.getSource() is HttpSource
actionChapterList.isVisible = actionChapterList.isVisible =
ReaderBottomButton.ViewChapters.isIn(enabledButtons) ReaderBottomButton.ViewChapters.isIn(enabledButtons)
shiftPageButton.isVisible = (viewer as? PagerViewer)?.config?.doublePages ?: false shiftPageButton.isVisible = (viewer as? PagerViewer)?.config?.doublePages ?: false
@ -1160,14 +1179,12 @@ class ReaderActivity : BaseActivity() {
startPostponedEnterTransition() startPostponedEnterTransition()
} }
private fun openChapterInWebview() { private fun openChapterInWebView() {
val manga = viewModel.manga ?: return val manga = viewModel.manga ?: return
val source = viewModel.getSource() ?: return val source = viewModel.getSource() ?: return
lifecycleScope.launchIO { assistUrl?.let {
viewModel.getChapterUrl()?.let { url -> val intent = WebViewActivity.newIntent(this@ReaderActivity, it, source.id, manga.title)
val intent = WebViewActivity.newIntent(this@ReaderActivity, url, source.id, manga.title) startActivity(intent)
withUIContext { startActivity(intent) }
}
} }
} }

View File

@ -6,6 +6,7 @@ import eu.kanade.tachiyomi.R
enum class ReaderBottomButton(val value: String, @StringRes val stringRes: Int) { enum class ReaderBottomButton(val value: String, @StringRes val stringRes: Int) {
ViewChapters("vc", R.string.action_view_chapters), ViewChapters("vc", R.string.action_view_chapters),
WebView("wb", R.string.action_open_in_web_view), WebView("wb", R.string.action_open_in_web_view),
Share("sh", R.string.action_share),
ReadingMode("rm", R.string.viewer), ReadingMode("rm", R.string.viewer),
Rotation("rot", R.string.rotation_type), Rotation("rot", R.string.rotation_type),
CropBordersPager("cbp", R.string.pref_crop_borders_pager), CropBordersPager("cbp", R.string.pref_crop_borders_pager),

View File

@ -229,7 +229,7 @@
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:layoutDirection="ltr" /> android:layoutDirection="ltr" />
<androidx.constraintlayout.widget.ConstraintLayout <LinearLayout
android:id="@+id/toolbar_bottom" android:id="@+id/toolbar_bottom"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize"
@ -241,13 +241,10 @@
android:id="@+id/action_chapter_list" android:id="@+id/action_chapter_list"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1"
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/custom_filter" android:contentDescription="@string/chapters"
android:padding="@dimen/screen_edge_margin" android:padding="@dimen/screen_edge_margin"
app:layout_constraintEnd_toStartOf="@+id/action_web_view"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="spread"
app:srcCompat="@drawable/ic_format_list_numbered_24dp" app:srcCompat="@drawable/ic_format_list_numbered_24dp"
app:tint="?attr/colorOnSurface" /> app:tint="?attr/colorOnSurface" />
@ -256,15 +253,23 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/custom_filter" android:contentDescription="@string/action_open_in_web_view"
android:padding="@dimen/screen_edge_margin" android:padding="@dimen/screen_edge_margin"
app:layout_constraintEnd_toStartOf="@id/action_reading_mode" android:layout_weight="1"
app:layout_constraintStart_toEndOf="@+id/action_chapter_list"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="spread"
app:srcCompat="@drawable/ic_webview_24dp" app:srcCompat="@drawable/ic_webview_24dp"
app:tint="?attr/colorOnSurface" /> app:tint="?attr/colorOnSurface" />
<ImageButton
android:id="@+id/action_share"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/action_share"
android:padding="@dimen/screen_edge_margin"
android:layout_weight="1"
app:srcCompat="@drawable/ic_share_24dp"
app:tint="?attr/colorOnSurface" />
<ImageButton <ImageButton
android:id="@+id/action_reading_mode" android:id="@+id/action_reading_mode"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -272,10 +277,7 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/viewer" android:contentDescription="@string/viewer"
android:padding="@dimen/screen_edge_margin" android:padding="@dimen/screen_edge_margin"
app:layout_constraintEnd_toStartOf="@id/action_crop_borders" android:layout_weight="1"
app:layout_constraintStart_toEndOf="@+id/action_web_view"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="spread"
app:srcCompat="@drawable/ic_reader_default_24dp" app:srcCompat="@drawable/ic_reader_default_24dp"
app:tint="?attr/colorOnSurface" /> app:tint="?attr/colorOnSurface" />
@ -286,10 +288,7 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/pref_crop_borders" android:contentDescription="@string/pref_crop_borders"
android:padding="@dimen/screen_edge_margin" android:padding="@dimen/screen_edge_margin"
app:layout_constraintEnd_toStartOf="@id/action_rotation" android:layout_weight="1"
app:layout_constraintStart_toEndOf="@+id/action_reading_mode"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="spread"
app:srcCompat="@drawable/ic_crop_24dp" app:srcCompat="@drawable/ic_crop_24dp"
app:tint="?attr/colorOnSurface" /> app:tint="?attr/colorOnSurface" />
@ -300,10 +299,7 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/pref_rotation_type" android:contentDescription="@string/pref_rotation_type"
android:padding="@dimen/screen_edge_margin" android:padding="@dimen/screen_edge_margin"
app:layout_constraintEnd_toStartOf="@id/double_page" android:layout_weight="1"
app:layout_constraintStart_toEndOf="@+id/action_crop_borders"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="spread"
app:srcCompat="@drawable/ic_screen_rotation_24dp" app:srcCompat="@drawable/ic_screen_rotation_24dp"
app:tint="?attr/colorOnSurface" /> app:tint="?attr/colorOnSurface" />
@ -314,10 +310,7 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/page_layout" android:contentDescription="@string/page_layout"
android:padding="@dimen/screen_edge_margin" android:padding="@dimen/screen_edge_margin"
app:layout_constraintEnd_toStartOf="@id/shift_page_button" android:layout_weight="1"
app:layout_constraintStart_toEndOf="@+id/action_rotation"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="spread"
app:srcCompat="@drawable/ic_book_open_variant_24dp" app:srcCompat="@drawable/ic_book_open_variant_24dp"
app:tint="?attr/colorOnSurface" /> app:tint="?attr/colorOnSurface" />
@ -328,10 +321,7 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/shift_double_pages" android:contentDescription="@string/shift_double_pages"
android:padding="@dimen/screen_edge_margin" android:padding="@dimen/screen_edge_margin"
app:layout_constraintEnd_toStartOf="@id/action_settings" android:layout_weight="1"
app:layout_constraintStart_toEndOf="@+id/double_page"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="spread"
app:srcCompat="@drawable/ic_page_next_outline_24dp" app:srcCompat="@drawable/ic_page_next_outline_24dp"
app:tint="?attr/colorOnSurface" /> app:tint="?attr/colorOnSurface" />
@ -342,14 +332,11 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/action_settings" android:contentDescription="@string/action_settings"
android:padding="@dimen/screen_edge_margin" android:padding="@dimen/screen_edge_margin"
app:layout_constraintEnd_toEndOf="parent" android:layout_weight="1"
app:layout_constraintStart_toEndOf="@id/shift_page_button"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="spread"
app:srcCompat="@drawable/ic_settings_24dp" app:srcCompat="@drawable/ic_settings_24dp"
app:tint="?attr/colorOnSurface" /> app:tint="?attr/colorOnSurface" />
</androidx.constraintlayout.widget.ConstraintLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -18,9 +18,12 @@
<item <item
android:id="@+id/action_open_in_web_view" android:id="@+id/action_open_in_web_view"
android:icon="@drawable/ic_webview_24dp"
android:title="@string/action_open_in_web_view" android:title="@string/action_open_in_web_view"
app:iconTint="?attr/colorOnSurface" app:showAsAction="never" />
app:showAsAction="ifRoom" />-->
<item
android:id="@+id/action_share"
android:title="@string/action_share"
app:showAsAction="never" />-->
</menu> </menu>