mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Upstream merge
This commit is contained in:
		@@ -18,11 +18,13 @@ import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.source.CatalogueSource
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.FilterList
 | 
			
		||||
import eu.kanade.tachiyomi.source.online.HttpSource
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.SecondaryDrawerController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
 | 
			
		||||
import eu.kanade.tachiyomi.ui.library.ChangeMangaCategoriesDialog
 | 
			
		||||
import eu.kanade.tachiyomi.ui.manga.MangaController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.manga.info.MangaWebViewController
 | 
			
		||||
import eu.kanade.tachiyomi.util.*
 | 
			
		||||
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
 | 
			
		||||
import exh.EXHSavedSearch
 | 
			
		||||
@@ -350,15 +352,38 @@ open class BrowseCatalogueController(bundle: Bundle) :
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onPrepareOptionsMenu(menu: Menu) {
 | 
			
		||||
        super.onPrepareOptionsMenu(menu)
 | 
			
		||||
 | 
			
		||||
        val isHttpSource = presenter.source is HttpSource
 | 
			
		||||
        menu.findItem(R.id.action_open_in_browser).isVisible = isHttpSource
 | 
			
		||||
        menu.findItem(R.id.action_open_in_web_view).isVisible = isHttpSource
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onOptionsItemSelected(item: MenuItem): Boolean {
 | 
			
		||||
        when (item.itemId) {
 | 
			
		||||
            R.id.action_display_mode -> swapDisplayMode()
 | 
			
		||||
            R.id.action_set_filter -> navView?.let { activity?.drawer?.openDrawer(Gravity.END) }
 | 
			
		||||
            R.id.action_open_in_browser -> openInBrowser()
 | 
			
		||||
            R.id.action_open_in_web_view -> openInWebView()
 | 
			
		||||
            else -> return super.onOptionsItemSelected(item)
 | 
			
		||||
        }
 | 
			
		||||
        return true
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun openInBrowser() {
 | 
			
		||||
        val source = presenter.source as? HttpSource ?: return
 | 
			
		||||
 | 
			
		||||
        activity?.openInBrowser(source.baseUrl)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun openInWebView() {
 | 
			
		||||
        val source = presenter.source as? HttpSource ?: return
 | 
			
		||||
 | 
			
		||||
        router.pushController(MangaWebViewController(source.id, source.baseUrl)
 | 
			
		||||
                .withFadeTransaction())
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Restarts the request with a new query.
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,8 @@ import android.content.Context
 | 
			
		||||
import android.content.Intent
 | 
			
		||||
import android.graphics.Bitmap
 | 
			
		||||
import android.graphics.drawable.Drawable
 | 
			
		||||
import android.net.Uri
 | 
			
		||||
import android.os.Build
 | 
			
		||||
import android.os.Bundle
 | 
			
		||||
import android.support.customtabs.CustomTabsIntent
 | 
			
		||||
import android.support.v4.content.pm.ShortcutInfoCompat
 | 
			
		||||
import android.support.v4.content.pm.ShortcutManagerCompat
 | 
			
		||||
import android.support.v4.graphics.drawable.IconCompat
 | 
			
		||||
@@ -35,7 +33,6 @@ import eu.kanade.tachiyomi.data.notification.NotificationReceiver
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
 | 
			
		||||
import eu.kanade.tachiyomi.source.Source
 | 
			
		||||
import eu.kanade.tachiyomi.source.SourceManager
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.SManga
 | 
			
		||||
import eu.kanade.tachiyomi.source.online.HttpSource
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.DialogController
 | 
			
		||||
@@ -45,7 +42,7 @@ import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.library.ChangeMangaCategoriesDialog
 | 
			
		||||
import eu.kanade.tachiyomi.ui.main.MainActivity
 | 
			
		||||
import eu.kanade.tachiyomi.ui.manga.MangaController
 | 
			
		||||
import eu.kanade.tachiyomi.util.getResourceColor
 | 
			
		||||
import eu.kanade.tachiyomi.util.openInBrowser
 | 
			
		||||
import eu.kanade.tachiyomi.util.snack
 | 
			
		||||
import eu.kanade.tachiyomi.util.toast
 | 
			
		||||
import eu.kanade.tachiyomi.util.truncateCenter
 | 
			
		||||
@@ -56,7 +53,6 @@ import exh.ui.webview.WebViewActivity
 | 
			
		||||
import jp.wasabeef.glide.transformations.CropSquareTransformation
 | 
			
		||||
import jp.wasabeef.glide.transformations.MaskTransformation
 | 
			
		||||
import kotlinx.android.synthetic.main.manga_info_controller.*
 | 
			
		||||
import timber.log.Timber
 | 
			
		||||
import uy.kohesive.injekt.injectLazy
 | 
			
		||||
import java.text.DateFormat
 | 
			
		||||
import java.text.DecimalFormat
 | 
			
		||||
@@ -334,11 +330,7 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
 | 
			
		||||
                    putExtra(WebViewActivity.KEY_URL, urlString)
 | 
			
		||||
                })
 | 
			
		||||
            } else {
 | 
			
		||||
                val url = Uri.parse(urlString)
 | 
			
		||||
                val intent = CustomTabsIntent.Builder()
 | 
			
		||||
                        .setToolbarColor(context.getResourceColor(R.attr.colorPrimary))
 | 
			
		||||
                        .build()
 | 
			
		||||
                intent.launchUrl(activity, url)
 | 
			
		||||
                context.openInBrowser(source.mangaDetailsRequest(presenter.manga).url().toString())
 | 
			
		||||
            }
 | 
			
		||||
            // <-- EH
 | 
			
		||||
        } catch (e: Exception) {
 | 
			
		||||
 
 | 
			
		||||
@@ -11,16 +11,20 @@ import android.content.res.Resources
 | 
			
		||||
import android.net.ConnectivityManager
 | 
			
		||||
import android.net.wifi.WifiManager
 | 
			
		||||
import android.os.Build
 | 
			
		||||
import android.net.Uri
 | 
			
		||||
import android.os.PowerManager
 | 
			
		||||
import android.os.VibrationEffect
 | 
			
		||||
import android.os.Vibrator
 | 
			
		||||
import android.support.annotation.AttrRes
 | 
			
		||||
import android.support.annotation.RequiresApi
 | 
			
		||||
import android.support.annotation.StringRes
 | 
			
		||||
import android.support.customtabs.CustomTabsIntent
 | 
			
		||||
import android.support.v4.app.NotificationCompat
 | 
			
		||||
import android.support.v4.content.ContextCompat
 | 
			
		||||
import android.support.v4.content.LocalBroadcastManager
 | 
			
		||||
import android.widget.Toast
 | 
			
		||||
import com.nononsenseapps.filepicker.FilePickerActivity
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.widget.CustomLayoutPickerActivity
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -133,6 +137,7 @@ val Context.clipboardManager: ClipboardManager
 | 
			
		||||
    get() = applicationContext.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
 | 
			
		||||
 | 
			
		||||
val Context.jobScheduler: JobScheduler
 | 
			
		||||
    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
 | 
			
		||||
    get() = applicationContext.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
 | 
			
		||||
// <-- EH
 | 
			
		||||
 | 
			
		||||
@@ -183,6 +188,21 @@ fun Context.isServiceRunning(serviceClass: Class<*>): Boolean {
 | 
			
		||||
            .any { className == it.service.className }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Opens a URL in a custom tab.
 | 
			
		||||
 */
 | 
			
		||||
fun Context.openInBrowser(url: String) {
 | 
			
		||||
    try {
 | 
			
		||||
        val url = Uri.parse(url)
 | 
			
		||||
        val intent = CustomTabsIntent.Builder()
 | 
			
		||||
                .setToolbarColor(getResourceColor(R.attr.colorPrimary))
 | 
			
		||||
                .build()
 | 
			
		||||
        intent.launchUrl(this, url)
 | 
			
		||||
    } catch (e: Exception) {
 | 
			
		||||
        toast(e.message)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun Context.vibrate(time: Long) {
 | 
			
		||||
    val vibeService = getSystemService(VIBRATOR_SERVICE) as Vibrator
 | 
			
		||||
    if (Build.VERSION.SDK_INT >= 26) {
 | 
			
		||||
 
 | 
			
		||||
@@ -19,4 +19,15 @@
 | 
			
		||||
        android:id="@+id/action_display_mode"
 | 
			
		||||
        android:title="@string/action_display_mode"
 | 
			
		||||
        app:showAsAction="ifRoom"/>
 | 
			
		||||
 | 
			
		||||
    <item
 | 
			
		||||
        android:id="@+id/action_open_in_browser"
 | 
			
		||||
        android:title="@string/action_open_in_browser"
 | 
			
		||||
        app:showAsAction="never"/>
 | 
			
		||||
 | 
			
		||||
    <item
 | 
			
		||||
        android:id="@+id/action_open_in_web_view"
 | 
			
		||||
        android:title="@string/action_open_in_web_view"
 | 
			
		||||
        app:showAsAction="never"/>
 | 
			
		||||
 | 
			
		||||
</menu>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user