From 65804ebb3aca0a79377167334ff842c0789440f3 Mon Sep 17 00:00:00 2001 From: Jay Date: Sun, 17 Nov 2019 18:46:12 -0800 Subject: [PATCH] Set Webview as an activity This way it will not reload on orientation change or theme switching Webview toolbar now also has history buttons in toolbar, pressing back now reverses in history Webview title is also now the websites title --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 3 + .../browse/BrowseCatalogueController.kt | 36 ++- .../kanade/tachiyomi/ui/main/MainActivity.kt | 4 +- .../ui/manga/info/MangaInfoController.kt | 5 +- .../ui/manga/info/MangaWebViewController.kt | 72 ------ .../ui/manga/info/WebViewActivity.kt | 216 ++++++++++++++++++ .../baseline_arrow_back_white_24.png | Bin 0 -> 171 bytes .../baseline_arrow_forward_white_24.png | Bin 0 -> 172 bytes .../drawable-hdpi/baseline_close_white_24.png | Bin 0 -> 225 bytes .../baseline_arrow_back_white_24.png | Bin 0 -> 132 bytes .../baseline_arrow_forward_white_24.png | Bin 0 -> 128 bytes .../drawable-mdpi/baseline_close_white_24.png | Bin 0 -> 180 bytes .../baseline_arrow_back_white_24.png | Bin 0 -> 170 bytes .../baseline_arrow_forward_white_24.png | Bin 0 -> 183 bytes .../baseline_close_white_24.png | Bin 0 -> 251 bytes .../baseline_arrow_back_white_24.png | Bin 0 -> 203 bytes .../baseline_arrow_forward_white_24.png | Bin 0 -> 209 bytes .../baseline_close_white_24.png | Bin 0 -> 312 bytes .../baseline_arrow_back_white_24.png | Bin 0 -> 261 bytes .../baseline_arrow_forward_white_24.png | Bin 0 -> 273 bytes .../baseline_close_white_24.png | Bin 0 -> 389 bytes .../res/drawable/baseline_arrow_back_24.xml | 10 + .../drawable/baseline_arrow_forward_24.xml | 10 + .../main/res/drawable/baseline_close_24.xml | 10 + .../res/layout/manga_info_web_controller.xml | 7 - app/src/main/res/layout/webview_activity.xml | 30 +++ app/src/main/res/menu/webview.xml | 16 ++ app/src/main/res/values/strings.xml | 2 + 29 files changed, 328 insertions(+), 95 deletions(-) delete mode 100644 app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaWebViewController.kt create mode 100644 app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/WebViewActivity.kt create mode 100644 app/src/main/res/drawable-hdpi/baseline_arrow_back_white_24.png create mode 100644 app/src/main/res/drawable-hdpi/baseline_arrow_forward_white_24.png create mode 100644 app/src/main/res/drawable-hdpi/baseline_close_white_24.png create mode 100644 app/src/main/res/drawable-mdpi/baseline_arrow_back_white_24.png create mode 100644 app/src/main/res/drawable-mdpi/baseline_arrow_forward_white_24.png create mode 100644 app/src/main/res/drawable-mdpi/baseline_close_white_24.png create mode 100644 app/src/main/res/drawable-xhdpi/baseline_arrow_back_white_24.png create mode 100644 app/src/main/res/drawable-xhdpi/baseline_arrow_forward_white_24.png create mode 100644 app/src/main/res/drawable-xhdpi/baseline_close_white_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/baseline_arrow_back_white_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/baseline_arrow_forward_white_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/baseline_close_white_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/baseline_arrow_back_white_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/baseline_arrow_forward_white_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/baseline_close_white_24.png create mode 100644 app/src/main/res/drawable/baseline_arrow_back_24.xml create mode 100644 app/src/main/res/drawable/baseline_arrow_forward_24.xml create mode 100644 app/src/main/res/drawable/baseline_close_24.xml delete mode 100644 app/src/main/res/layout/manga_info_web_controller.xml create mode 100644 app/src/main/res/layout/webview_activity.xml create mode 100644 app/src/main/res/menu/webview.xml diff --git a/app/build.gradle b/app/build.gradle index 6334c6ea8e..0ac69bb79d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -124,7 +124,7 @@ dependencies { implementation 'androidx.multidex:multidex:2.0.1' - standardImplementation 'com.google.firebase:firebase-core:11.8.0' + standardImplementation 'com.google.firebase:firebase-core:17.2.1' // ReactiveX implementation 'io.reactivex:rxandroid:1.2.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6b6e2b5ef..3861b81dac 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -47,6 +47,9 @@ + 0 || v.rootWindowInsets.systemWindowInsetRight > 0) { - v.context.getResourceColor(android.R.attr.colorBackground) + getResourceColor(android.R.attr.colorBackground) } // if in portrait with 2/3 button mode, translucent nav bar else { ColorUtils.setAlphaComponent( - v.context.getResourceColor(android.R.attr.colorBackground), 179) + getResourceColor(android.R.attr.colorBackground), 179) } v.setPadding(insets.systemWindowInsetLeft, insets.systemWindowInsetTop, insets.systemWindowInsetRight, 0) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt index 0d2cb9ec15..ee1cb9b8a6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt @@ -335,8 +335,9 @@ class MangaInfoController : NucleusController(), return } - parentController?.router?.pushController(MangaWebViewController(source.id, url) - .withFadeTransaction()) + val activity = activity ?: return + val intent = WebViewActivity.newIntent(activity, source.id, url, presenter.manga.title) + startActivity(intent) } /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaWebViewController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaWebViewController.kt deleted file mode 100644 index b119c3a56b..0000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaWebViewController.kt +++ /dev/null @@ -1,72 +0,0 @@ -package eu.kanade.tachiyomi.ui.manga.info - -import android.os.Build -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.webkit.WebView -import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.source.SourceManager -import eu.kanade.tachiyomi.source.online.HttpSource -import eu.kanade.tachiyomi.ui.base.controller.BaseController -import eu.kanade.tachiyomi.util.RecyclerWindowInsetsListener -import eu.kanade.tachiyomi.util.WebViewClientCompat -import eu.kanade.tachiyomi.util.doOnApplyWindowInsets -import eu.kanade.tachiyomi.util.marginBottom -import eu.kanade.tachiyomi.util.updateLayoutParams -import uy.kohesive.injekt.injectLazy - -class MangaWebViewController(bundle: Bundle? = null) : BaseController(bundle) { - - private val sourceManager by injectLazy() - - constructor(sourceId: Long, url: String) : this(Bundle().apply { - putLong(SOURCE_KEY, sourceId) - putString(URL_KEY, url) - }) - - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - return WebView(applicationContext)// inflater.inflate(R.layout.manga_info_web_controller, container, - // false) - } - - override fun onViewCreated(view: View) { - super.onViewCreated(view) - val source = sourceManager.get(args.getLong(SOURCE_KEY)) as? HttpSource ?: return - val url = args.getString(URL_KEY) ?: return - val headers = source.headers.toMultimap().mapValues { it.value.getOrNull(0) ?: "" } - - val web = view as WebView - web.webViewClient = object : WebViewClientCompat() { - override fun shouldOverrideUrlCompat(view: WebView, url: String): Boolean { - view.loadUrl(url) - return true - } - } - val marginB = view.marginBottom - view.doOnApplyWindowInsets{ v, insets, _ -> - val bottomInset = if (Build.VERSION.SDK_INT >= 29) insets.tappableElementInsets.bottom - else insets.systemWindowInsetBottom - v.updateLayoutParams { - bottomMargin = marginB + bottomInset - } - } - web.settings.javaScriptEnabled = true - web.settings.userAgentString = source.headers["User-Agent"] - web.loadUrl(url, headers) - } - - override fun onDestroyView(view: View) { - val web = view as WebView - web.stopLoading() - web.destroy() - super.onDestroyView(view) - } - - private companion object { - const val SOURCE_KEY = "source_key" - const val URL_KEY = "url_key" - } - -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/WebViewActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/WebViewActivity.kt new file mode 100644 index 0000000000..0d70817881 --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/WebViewActivity.kt @@ -0,0 +1,216 @@ +package eu.kanade.tachiyomi.ui.manga.info + +import android.content.Context +import android.content.Intent +import android.content.res.Configuration +import android.graphics.Bitmap +import android.graphics.Color +import android.os.Build +import android.os.Bundle +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import android.webkit.WebView +import android.widget.LinearLayout +import androidx.core.graphics.ColorUtils +import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.source.SourceManager +import eu.kanade.tachiyomi.source.online.HttpSource +import eu.kanade.tachiyomi.ui.base.activity.BaseActivity +import eu.kanade.tachiyomi.util.WebViewClientCompat +import eu.kanade.tachiyomi.util.doOnApplyWindowInsets +import eu.kanade.tachiyomi.util.getResourceColor +import eu.kanade.tachiyomi.util.marginBottom +import eu.kanade.tachiyomi.util.updateLayoutParams +import eu.kanade.tachiyomi.util.updatePadding +import kotlinx.android.synthetic.main.webview_activity.* +import uy.kohesive.injekt.injectLazy + +class WebViewActivity : BaseActivity() { + + private val sourceManager by injectLazy() + private var bundle:Bundle? = null + val preferences: PreferencesHelper by injectLazy() + + companion object { + const val SOURCE_KEY = "source_key" + const val URL_KEY = "url_key" + const val TITLE_KEY = "title_key" + + fun newIntent(context: Context, sourceId: Long, url: String, title:String?): Intent { + val intent = Intent(context, WebViewActivity::class.java) + intent.putExtra(SOURCE_KEY, sourceId) + intent.putExtra(URL_KEY, url) + intent.putExtra(TITLE_KEY, title) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) + return intent + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + setTheme(when (preferences.theme()) { + 3, 6 -> R.style.Theme_Tachiyomi_Amoled + 4, 7 -> R.style.Theme_Tachiyomi_DarkBlue + else -> R.style.Theme_Tachiyomi + }) + super.onCreate(savedInstanceState) + setContentView(R.layout.webview_activity) + title = intent.extras?.getString(TITLE_KEY) + setSupportActionBar(toolbar) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + toolbar.setNavigationOnClickListener { + super.onBackPressed() + } + + val container:ViewGroup = findViewById(R.id.web_view_layout) + val content: LinearLayout = findViewById(R.id.web_linear_layout) + container.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or + View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or + View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + content.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or + View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or + View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + + container.setOnApplyWindowInsetsListener { v, insets -> + val contextView = window?.decorView?.findViewById(R.id.action_mode_bar) + contextView?.updateLayoutParams { + leftMargin = insets.systemWindowInsetLeft + rightMargin = insets.systemWindowInsetRight + } + // Consume any horizontal insets and pad all content in. There's not much we can do + // with horizontal insets + v.updatePadding( + left = insets.systemWindowInsetLeft, + right = insets.systemWindowInsetRight + ) + insets.replaceSystemWindowInsets( + 0, insets.systemWindowInsetTop, + 0, insets.systemWindowInsetBottom + ) + } + window.statusBarColor = getResourceColor(R.attr.colorPrimary) + + content.setOnApplyWindowInsetsListener { v, insets -> + window.navigationBarColor = + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + v.context.getResourceColor(android.R.attr.colorPrimary) + } + // if the android q+ device has gesture nav, transparent nav bar + else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q + && (v.rootWindowInsets.systemWindowInsetBottom != v.rootWindowInsets + .tappableElementInsets.bottom)) { + getColor(android.R.color.transparent) + } else { + v.context.getResourceColor(android.R.attr.colorBackground) + } + v.setPadding(insets.systemWindowInsetLeft, insets.systemWindowInsetTop, + insets.systemWindowInsetRight, 0) + insets + } + val currentNightMode = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK + if (Build.VERSION.SDK_INT >= 26 && currentNightMode == Configuration.UI_MODE_NIGHT_NO) { + content.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR + } + + if (bundle == null) { + val source = sourceManager.get(intent.extras!!.getLong(SOURCE_KEY)) as? HttpSource ?: return + val url = intent.extras!!.getString(URL_KEY) ?: return + val headers = source.headers.toMultimap().mapValues { it.value.getOrNull(0) ?: "" } + webview.webViewClient = object : WebViewClientCompat() { + override fun shouldOverrideUrlCompat(view: WebView, url: String): Boolean { + view.loadUrl(url) + return true + } + + override fun onPageFinished(view: WebView?, url: String?) { + super.onPageFinished(view, url) + invalidateOptionsMenu() + title = view?.title + } + + override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { + super.onPageStarted(view, url, favicon) + invalidateOptionsMenu() + } + } + val marginB = webview.marginBottom + webview.doOnApplyWindowInsets { v, insets, _ -> + val bottomInset = + if (Build.VERSION.SDK_INT >= 29) insets.tappableElementInsets.bottom + else insets.systemWindowInsetBottom + v.updateLayoutParams { + bottomMargin = marginB + bottomInset + } + } + webview.settings.javaScriptEnabled = true + webview.settings.userAgentString = source.headers["User-Agent"] + webview.loadUrl(url, headers) + } + else { + webview.restoreState(bundle) + } + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + window.statusBarColor = getResourceColor(R.attr.colorPrimary) + toolbar.setBackgroundColor(getResourceColor(R.attr.colorPrimary)) + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) + window.navigationBarColor = getResourceColor(android.R.attr.colorPrimary) + else if (window.navigationBarColor != getColor(android.R.color.transparent)) + window.navigationBarColor = getResourceColor(android.R.attr.colorBackground) + + val currentNightMode = newConfig.uiMode and Configuration.UI_MODE_NIGHT_MASK + if (Build.VERSION.SDK_INT >= 26) { + if (currentNightMode == Configuration.UI_MODE_NIGHT_NO) { + web_linear_layout.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR + } else { + web_linear_layout.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or + View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or + View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + } + } + } + + /** + * Called when the options menu of the toolbar is being created. It adds our custom menu. + */ + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.webview, menu) + return true + } + + override fun onPrepareOptionsMenu(menu: Menu?): Boolean { + val backItem = toolbar.menu.findItem(R.id.action_web_back) + val forwardItem = toolbar.menu.findItem(R.id.action_web_forward) + backItem?.isEnabled = webview.canGoBack() + forwardItem?.isEnabled = webview.canGoForward() + val hasHistory = webview.canGoBack() || webview.canGoForward() + backItem?.isVisible = hasHistory + forwardItem?.isVisible = hasHistory + val translucentWhite = ColorUtils.setAlphaComponent(Color.WHITE, 127) + backItem.icon?.setTint(if (webview.canGoBack()) Color.WHITE else translucentWhite) + forwardItem?.icon?.setTint(if (webview.canGoForward()) Color.WHITE else translucentWhite) + return super.onPrepareOptionsMenu(menu) + } + + override fun onBackPressed() { + if (webview.canGoBack()) webview.goBack() + else super.onBackPressed() + } + + /** + * Called when an item of the options menu was clicked. Used to handle clicks on our menu + * entries. + */ + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.action_web_back -> webview.goBack() + R.id.action_web_forward -> webview.goForward() + else -> return super.onOptionsItemSelected(item) + } + return true + } +} diff --git a/app/src/main/res/drawable-hdpi/baseline_arrow_back_white_24.png b/app/src/main/res/drawable-hdpi/baseline_arrow_back_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..b3feb38665fad1d75221af588fcf727dcd5d956a GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8k*AAeNCo5DE2>N_0SpX*Z%)j< z{_z}VhKiK?;)kr;4@&-eyu0AsyG7wC0%w%Hij@QtCf)H!k;ruKaW^zN_(No|fX@Mg z#3iop_pNW2jI;j2wxDTK=SoqL4L3wjscX($v}bORkn2trRVI-SKg6eK-I=>dqI_rk UM;>l>QK0P%p00i_>zopr08u$TH2?qr literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/baseline_arrow_forward_white_24.png b/app/src/main/res/drawable-hdpi/baseline_arrow_forward_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..b640301772fbfcf980e7e49284c71e81df8f514a GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8v8Rh;NCo5DE6bT20vH?ue|ML5 z?VYtObJDZRCYxtpFZ=p9_u>1wrg_P4+>fZ`{`&Ga;GPMO>ckMoKqJqoB1Sm|Y(Fi((z49x@&WzPJROD`99q{scOE=lr&1wkAH=JFpIpadtQ99W5u zDMsZ76f+bbIVQ>%L`*LKQDEZFOd+Ops;H51{_Vu8q;h|{C7_rMd4r6d7@n!rMPLsY zB{T`CAL@5%C}zhF6U8*x{<{0t@Id+>`6(|G{pq&zjO@h63=^9_Y?*&zu%|X_=kZ_4 bvm`kJ!LV3i&qsp>00000NkvXXu0mjfvENx_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/baseline_arrow_back_white_24.png b/app/src/main/res/drawable-mdpi/baseline_arrow_back_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..854124ef7ed8779750bde8bc9f74e9015d6dbf7f GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj-kvUwAr*|t5>W{vfByg9&)A`z zk#52AhdHSL-U|`_*VB24*e$@kLEQ6=3pUXO@geCyi#ww%$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/baseline_arrow_forward_white_24.png b/app/src/main/res/drawable-mdpi/baseline_arrow_forward_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..01d3c16238858e68e43fcf4aee0921590ad4de0d GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj?w&4=Ar*|t5>W{vfByg9FVrEO zk-9@n;Qw!amMvRU@@_;38LrX!={!mGza}%U$@YeOjxLod{GNv&zexKrLHmus(XSJj a7Besup0u6AF}oII7lWs(pUXO@geCxIvnuTX literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/baseline_close_white_24.png b/app/src/main/res/drawable-mdpi/baseline_close_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..08d810992391502761a8cf4e5672755306a7d2b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+iYEKu(kP619lNi|!81T53cLa&# z-1w_+kh58ur*+l5C%uQxEx zP^h6rn@N&WvQVgV$+9om3UVDPcULI+xE*+X_SOMihvFqGl)viVwafnh*y4Xw^3zo_ e^5-49#+-0qhm+2)FVa9~FnGH9xvXaD;_6f7h zH4wev>%540%>w3@nakfNGyLgKxptL_Vd<2Ymf1yrvc3E2&z}7FyZG0YAIi3MKLYnu zd`z$Uqw!DrW4K?9GUG=!mKvv@^$N;81v881njPwHF;`Sh>)+k$rW32mP{91)*VGtB T(=88xmNR&|`njxgN@xNALTNy_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/baseline_arrow_forward_white_24.png b/app/src/main/res/drawable-xhdpi/baseline_arrow_forward_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..57359a1e33ae916493f0feabc9c0145016bd42de GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtI!_nJkP61PHyGI(97J3%P7`KX z`@y?|;i8iBBGx?&51GI8POlF8pm*v_2?ImO#4R3N*FWx#duUb{Cg#VucgbUZ!R6IQ z9FA=7*l|bMO-V?pV~4l$6+a8MCmc+-IPH>--`997dA@KKH}B)hu!o7>m!6p0x#!e9 hE!36gH;NVP*#! zMT~F2&a4aGB#kvLV5N~fb-}_(QduwJE6K?c;VblbU!lkAib_&h{CN3=Wx21ApU+oV z@oJ@~!i*PsH90tiCiE4FFh(rJ*N@i(O&0WjBE60d4*!#-PSDG=f1~vu75=d6KdyT% zoDM6~So+OS@Y0)!Vw^43;q_tu=jr%hirX?641T{&TNwT|%`pG~002ovPDHLkV1hQ< BY%u@; literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/baseline_arrow_back_white_24.png b/app/src/main/res/drawable-xxhdpi/baseline_arrow_back_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..a40bc710b33cde1fca91a371c28cae5072e7a607 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!lRRAs zo+>oKab>{CO_CQot_Z#NzIPV8y+*<9?o&@a+sopB&VNK)8yUHrga_s zd9ab0olnN1;K6~$%l2T3nceUCgFP(l6NIywpLm)(SUvxDRmWpO6g#JoipK;6$0imi qBTC`vH800g788v4R4hQYERhb$=0CkUW|0KYbqt=aelF{r5}E)gBuB{r literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/baseline_arrow_forward_white_24.png b/app/src/main/res/drawable-xxhdpi/baseline_arrow_forward_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..b9d2f3c7c7e00349e792f2dd32c124d9fb009ffd GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Gdx`!Ln;{GUS(u!2oP|+D0YD_ zYo_7?{w-&tPJU5zoYmm<{F7OM#AT03DxQ=6#k%;EwjQxOC*VFouR!6c#e}js+wwY3 zD}0@x;Mm0SaxakJ6jJd3^EiWQHZy6gXQ<-foFL2`^6%HP-Md8jWGo6E9BBMJ6G$+# wLwK1FpLi(Gk;!bDtbDd0PvPK1piL^d(ZT#*=HLAi3Unibr>mdKI;Vst04A7D2mk;8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/baseline_close_white_24.png b/app/src/main/res/drawable-xxhdpi/baseline_close_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..3af97b1df73d790974b9eb916b4a9fcf2b64eea8 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhauJY5_^Dj45hYh*i=AmR4V@oK5- zn>69zSqpAwH4BTKkuUfrw6B#c>c!6xxJ>IN6{k0&Z} z@*OymY0by&S-@~_(h-IYYCwUjjeR}3o(1#XupFOgb9}Omy6d9^i+NXy;^sZ}oF}YM z*{2@q*N|e#IO!>iN0+d|T~&35Pcr_W=GdGpw$VIq_&fEU^?{En=Pxc{I6j$a&O}28 zqu1vQ9g1GhQ{eRLd2-Fxsp$1P&v}#8CHvGX{pO`u&U<26Iq7MOhfQ5E%gaX&w!x6R&Bv1zf!-OZ(o>)zJv_E#4+n;|NkMhq2 zE7#Std^A74Qt|$6`=dXv=HvI~ACHvx{rK-y^YQ)NACKO%eLU)3 z^HDIq#;#*O!^hLtdh!`Q@+L4SS8zxl;D|e7&?E>!A0oT>H^X@bP4`1T9^M9$3rk{A rp2L=|Et_}rWzzB8h5O{du8O$Lz5c?oDQhz=i$Hu&S3j3^P67#LQZyLwbeIAnR7s&as=begNd zze9p6_;{6cR^Br2*svul{I2Va6}P$+n3OsiIFuBcIQDcD2q!MeQf}htfC}zWI278_ zxoRti(jOMVU-sgRE)ui6TeJjO1P=UQs^E~8&p&+Z_zxhmJMtiS$;bOCH9h$?J@46h z|15$qLA7p@pLn@k@x8+8jUcY4tDnm{r-UW| DoTX=0V z+WnV3FS*t-|LtBfxh(f<|D+Jk*RQ=VZH#Q%w)DNa&DHfSxzc}|x$Ga#tSiizuwZXj zIOo2)jq&ygSN7C3wYC4+>~_DR@=(GH|9$)B8)S04U>D-~Thp|DzW;}>pMfgv93MOX zUD>!#@lng~AMu;k!o?3>Kd=7d*H4z$0yF$COfTm-uYTv#uX|5b*5}9a*P@v4AcnEV z=}(7o{bELtxczG>-w)|?)~BzMS-$gv%lauXuO=spvPEyasC4-5fr`28eSd_7`)hut zhso_aE17QRXy5klH|PENTk?!`BDW_#)ZABe>{9$fzyCkCdP9PPVFz + + diff --git a/app/src/main/res/drawable/baseline_arrow_forward_24.xml b/app/src/main/res/drawable/baseline_arrow_forward_24.xml new file mode 100644 index 0000000000..32393b8445 --- /dev/null +++ b/app/src/main/res/drawable/baseline_arrow_forward_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_close_24.xml b/app/src/main/res/drawable/baseline_close_24.xml new file mode 100644 index 0000000000..3f9973200c --- /dev/null +++ b/app/src/main/res/drawable/baseline_close_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/manga_info_web_controller.xml b/app/src/main/res/layout/manga_info_web_controller.xml deleted file mode 100644 index 6d52f5e22a..0000000000 --- a/app/src/main/res/layout/manga_info_web_controller.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/app/src/main/res/layout/webview_activity.xml b/app/src/main/res/layout/webview_activity.xml new file mode 100644 index 0000000000..6b2bc7f3b7 --- /dev/null +++ b/app/src/main/res/layout/webview_activity.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/webview.xml b/app/src/main/res/menu/webview.xml new file mode 100644 index 0000000000..29b7063b5e --- /dev/null +++ b/app/src/main/res/menu/webview.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cd9c659b00..f7d259bd40 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -98,6 +98,8 @@ Restore Open Log in + Back + Forward Deleting…