Prechádzať zdrojové kódy

Allow to open manga in the browser. Closes #157 (Doesn't work with kissmanga)

len 9 rokov pred
rodič
commit
62d5deaa6f

+ 33 - 3
app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoFragment.kt

@@ -1,9 +1,9 @@
 package eu.kanade.tachiyomi.ui.manga.info
 
+import android.content.Intent
+import android.net.Uri
 import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
+import android.view.*
 import com.bumptech.glide.Glide
 import com.bumptech.glide.load.engine.DiskCacheStrategy
 import com.bumptech.glide.load.model.GlideUrl
@@ -12,6 +12,7 @@ import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.database.models.Manga
 import eu.kanade.tachiyomi.data.source.base.Source
 import eu.kanade.tachiyomi.ui.base.fragment.BaseRxFragment
+import eu.kanade.tachiyomi.util.toast
 import kotlinx.android.synthetic.main.fragment_manga_info.*
 import nucleus.factory.RequiresPresenter
 
@@ -34,6 +35,11 @@ class MangaInfoFragment : BaseRxFragment<MangaInfoPresenter>() {
         }
     }
 
+    override fun onCreate(savedState: Bundle?) {
+        super.onCreate(savedState)
+        setHasOptionsMenu(true)
+    }
+
     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedState: Bundle?): View? {
         return inflater.inflate(R.layout.fragment_manga_info, container, false)
     }
@@ -46,6 +52,18 @@ class MangaInfoFragment : BaseRxFragment<MangaInfoPresenter>() {
         swipe_refresh.setOnRefreshListener { fetchMangaFromSource() }
     }
 
+    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
+        inflater.inflate(R.menu.manga_info, menu)
+    }
+
+    override fun onOptionsItemSelected(item: MenuItem): Boolean {
+        when (item.itemId) {
+            R.id.action_open_in_browser -> openInBrowser()
+            else -> return super.onOptionsItemSelected(item)
+        }
+        return true
+    }
+
     /**
      * Check if manga is initialized.
      * If true update view with manga information,
@@ -145,6 +163,18 @@ class MangaInfoFragment : BaseRxFragment<MangaInfoPresenter>() {
         manga_chapters.text = count.toString()
     }
 
+    /**
+     * Open the manga in browser.
+     */
+    fun openInBrowser() {
+        try {
+            val url = presenter.source.baseUrl + presenter.manga.url
+            startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
+        } catch (e: Exception) {
+            context.toast(e.message)
+        }
+    }
+
     /**
      * Update FAB with correct drawable.
      *

+ 9 - 0
app/src/main/res/menu/manga_info.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <item android:id="@+id/action_open_in_browser"
+        android:title="@string/action_open_in_browser"
+        app:showAsAction="never"/>
+
+</menu>

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

@@ -1,7 +0,0 @@
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    tools:context="eu.kanade.tachiyomi.ui.manga.MangaActivity">
-    <item android:id="@+id/action_settings" android:title="@string/action_settings"
-        android:orderInCategory="100" app:showAsAction="never" />
-</menu>