소스 검색

WebView for chapter link (#8281)

* backup

* doing logic

* cleanup

* applying suggestion

Co-authored-by: AntsyLich <[email protected]>

* requested changes

Co-authored-by: AntsyLich <[email protected]>
d-najd 2 년 전
부모
커밋
37b7efbc87

+ 13 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt

@@ -66,6 +66,7 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
 import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer
 import eu.kanade.tachiyomi.ui.reader.viewer.ReaderProgressIndicator
 import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer
+import eu.kanade.tachiyomi.ui.webview.WebViewActivity
 import eu.kanade.tachiyomi.util.preference.toggle
 import eu.kanade.tachiyomi.util.system.applySystemAnimatorScale
 import eu.kanade.tachiyomi.util.system.createReaderThemeContext
@@ -275,6 +276,9 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
      */
     override fun onOptionsItemSelected(item: MenuItem): Boolean {
         when (item.itemId) {
+            R.id.action_open_in_web_view -> {
+                openChapterInWebview()
+            }
             R.id.action_bookmark -> {
                 presenter.bookmarkCurrentChapter(true)
                 invalidateOptionsMenu()
@@ -665,6 +669,15 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
         startPostponedEnterTransition()
     }
 
+    private fun openChapterInWebview() {
+        val manga = presenter.manga ?: return
+        val source = presenter.getSource() ?: return
+        val url = presenter.getChapterUrl() ?: return
+
+        val intent = WebViewActivity.newIntent(this, url, source.id, manga.title)
+        startActivity(intent)
+    }
+
     private fun showReadingModeToast(mode: Int) {
         try {
             val strings = resources.getStringArray(R.array.viewers_selector)

+ 10 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt

@@ -35,6 +35,7 @@ import eu.kanade.tachiyomi.data.track.job.DelayedTrackingStore
 import eu.kanade.tachiyomi.data.track.job.DelayedTrackingUpdateJob
 import eu.kanade.tachiyomi.source.SourceManager
 import eu.kanade.tachiyomi.source.model.Page
+import eu.kanade.tachiyomi.source.online.HttpSource
 import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
 import eu.kanade.tachiyomi.ui.reader.loader.ChapterLoader
 import eu.kanade.tachiyomi.ui.reader.loader.DownloadPageLoader
@@ -606,6 +607,15 @@ class ReaderPresenter(
         return viewerChaptersRelay.value?.currChapter
     }
 
+    fun getSource() = manga?.source?.let { sourceManager.getOrStub(it) } as? HttpSource
+
+    fun getChapterUrl(): String? {
+        val sChapter = getCurrentChapter()?.chapter ?: return null
+        val source = getSource() ?: return null
+
+        return source.getChapterUrl(sChapter)
+    }
+
     /**
      * Bookmarks the currently active chapter.
      */

+ 7 - 0
app/src/main/res/drawable/ic_webview_24dp.xml

@@ -0,0 +1,7 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM11,19.93c-3.95,-0.49 -7,-3.85 -7,-7.93 0,-0.62 0.08,-1.21 0.21,-1.79L9,15v1c0,1.1 0.9,2 2,2v1.93zM17.9,17.39c-0.26,-0.81 -1,-1.39 -1.9,-1.39h-1v-3c0,-0.55 -0.45,-1 -1,-1L8,12v-2h2c0.55,0 1,-0.45 1,-1L11,7h2c1.1,0 2,-0.9 2,-2v-0.41c2.93,1.19 5,4.06 5,7.41 0,2.08 -0.8,3.97 -2.1,5.39z"/>
+</vector>

+ 7 - 0
app/src/main/res/menu/reader.xml

@@ -16,4 +16,11 @@
         app:iconTint="?attr/colorOnSurface"
         app:showAsAction="ifRoom" />
 
+    <item
+        android:id="@+id/action_open_in_web_view"
+        android:icon="@drawable/ic_webview_24dp"
+        android:title="@string/action_open_in_web_view"
+        app:iconTint="?attr/colorOnSurface"
+        app:showAsAction="ifRoom" />
+
 </menu>