|
|
@@ -22,6 +22,7 @@ import android.webkit.WebView
|
|
|
import android.webkit.WebViewClient
|
|
|
import androidx.activity.addCallback
|
|
|
import androidx.activity.viewModels
|
|
|
+import androidx.core.net.toUri
|
|
|
import androidx.core.view.WindowInsetsCompat
|
|
|
import androidx.core.view.size
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
|
@@ -37,8 +38,6 @@ import io.legato.kazusa.help.config.AppConfig
|
|
|
import io.legato.kazusa.help.http.CookieManager
|
|
|
import io.legato.kazusa.lib.dialogs.SelectItem
|
|
|
import io.legato.kazusa.lib.dialogs.selector
|
|
|
-//import io.legado.app.lib.theme.accentColor
|
|
|
-//import io.legado.app.lib.theme.primaryTextColor
|
|
|
import io.legato.kazusa.model.Download
|
|
|
import io.legato.kazusa.ui.association.OnLineImportActivity
|
|
|
import io.legato.kazusa.ui.file.HandleFileContract
|
|
|
@@ -82,6 +81,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
|
|
|
|
|
private var starMenuItem: MenuItem? = null
|
|
|
private var ttsMenuItem: MenuItem? = null
|
|
|
+ private var isFullScreen = false
|
|
|
private var customWebViewCallback: WebChromeClient.CustomViewCallback? = null
|
|
|
private val selectImageDir = registerForActivityResult(HandleFileContract()) {
|
|
|
it.uri?.let { uri ->
|
|
|
@@ -105,16 +105,20 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
|
|
initLiveData()
|
|
|
viewModel.initData(intent)
|
|
|
onBackPressedDispatcher.addCallback(this) {
|
|
|
- if (binding.customWebView.size > 0) {
|
|
|
- customWebViewCallback?.onCustomViewHidden()
|
|
|
- return@addCallback
|
|
|
- } else if (binding.webView.canGoBack()
|
|
|
- && binding.webView.copyBackForwardList().size > 1
|
|
|
- ) {
|
|
|
- binding.webView.goBack()
|
|
|
- return@addCallback
|
|
|
+ if (isFullScreen) {
|
|
|
+ toggleFullScreen()
|
|
|
+ } else {
|
|
|
+ if (binding.customWebView.size > 0) {
|
|
|
+ customWebViewCallback?.onCustomViewHidden()
|
|
|
+ return@addCallback
|
|
|
+ } else if (binding.webView.canGoBack()
|
|
|
+ && binding.webView.copyBackForwardList().size > 1
|
|
|
+ ) {
|
|
|
+ binding.webView.goBack()
|
|
|
+ return@addCallback
|
|
|
+ }
|
|
|
+ finish()
|
|
|
}
|
|
|
- finish()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -154,6 +158,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
|
|
|
|
|
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
|
|
when (item.itemId) {
|
|
|
+ R.id.menu_full_screen -> toggleFullScreen()
|
|
|
R.id.menu_rss_refresh -> viewModel.refresh {
|
|
|
binding.webView.reload()
|
|
|
}
|
|
|
@@ -207,6 +212,19 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
|
|
return AppConfig.isNightTheme
|
|
|
}
|
|
|
|
|
|
+ private fun toggleFullScreen() {
|
|
|
+ isFullScreen = !isFullScreen
|
|
|
+
|
|
|
+ toggleSystemBar(!isFullScreen)
|
|
|
+
|
|
|
+ if (isFullScreen) {
|
|
|
+ supportActionBar?.hide()
|
|
|
+ toastOnUi("可通过系统手势退出全屏。")
|
|
|
+ } else {
|
|
|
+ supportActionBar?.show()
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private fun initView() {
|
|
|
binding.root.setOnApplyWindowInsetsListenerCompat { view, windowInsets ->
|
|
|
val typeMask = WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.ime()
|
|
|
@@ -267,7 +285,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
|
|
if (path.isNullOrEmpty()) {
|
|
|
selectSaveFolder(webPic)
|
|
|
} else {
|
|
|
- viewModel.saveImage(webPic, Uri.parse(path))
|
|
|
+ viewModel.saveImage(webPic, path.toUri())
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -402,7 +420,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
|
|
|
|
|
@Suppress("DEPRECATION", "OVERRIDE_DEPRECATION", "KotlinRedundantDiagnosticSuppress")
|
|
|
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
|
|
|
- return shouldOverrideUrlLoading(Uri.parse(url))
|
|
|
+ return shouldOverrideUrlLoading(url.toUri())
|
|
|
}
|
|
|
|
|
|
/**
|