From 0e271bbbc2580fc57060ed8c37e7802fba57e703 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Sun, 2 Apr 2023 19:14:10 +0800 Subject: [PATCH] Convert MyTagsFragment to kotlin --- .../ehviewer/ui/fragment/MyTagsFragment.kt | 137 +++++++++--------- 1 file changed, 65 insertions(+), 72 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/fragment/MyTagsFragment.kt b/app/src/main/java/com/hippo/ehviewer/ui/fragment/MyTagsFragment.kt index e40c45b3f..7aa5f444d 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/fragment/MyTagsFragment.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/fragment/MyTagsFragment.kt @@ -15,100 +15,93 @@ * You should have received a copy of the GNU General Public License along with EhViewer. * If not, see . */ +package com.hippo.ehviewer.ui.fragment -package com.hippo.ehviewer.ui.fragment; +import android.annotation.SuppressLint +import android.graphics.Bitmap +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.webkit.CookieManager +import android.webkit.WebResourceRequest +import android.webkit.WebView +import android.webkit.WebViewClient +import com.hippo.ehviewer.R +import com.hippo.ehviewer.client.EhCookieStore +import com.hippo.ehviewer.client.EhUrl +import com.hippo.ehviewer.databinding.ActivityWebviewBinding +import com.hippo.ehviewer.widget.DialogWebChromeClient +import okhttp3.HttpUrl.Companion.toHttpUrl +import rikka.core.res.resolveColor -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.webkit.CookieManager; -import android.webkit.WebView; -import android.webkit.WebViewClient; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.android.material.progressindicator.CircularProgressIndicator; -import com.hippo.ehviewer.R; -import com.hippo.ehviewer.client.EhCookieStore; -import com.hippo.ehviewer.client.EhUrl; -import com.hippo.ehviewer.widget.DialogWebChromeClient; - -import okhttp3.Cookie; -import okhttp3.HttpUrl; -import rikka.core.res.ResourcesKt; - -public class MyTagsFragment extends BaseFragment { - - private WebView webView; - private CircularProgressIndicator progress; - private String url; +class MyTagsFragment : BaseFragment() { + private var _binding: ActivityWebviewBinding? = null + private val binding get() = _binding!! + private val url = EhUrl.myTagsUrl @SuppressLint("SetJavaScriptEnabled") - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.activity_webview, container, false); - webView = view.findViewById(R.id.webview); - webView.setBackgroundColor(ResourcesKt.resolveColor(requireActivity().getTheme(), android.R.attr.colorBackground)); - webView.getSettings().setBuiltInZoomControls(true); - webView.getSettings().setDisplayZoomControls(false); - webView.getSettings().setJavaScriptEnabled(true); - webView.setWebViewClient(new MyTagsWebViewClient()); - webView.setWebChromeClient(new DialogWebChromeClient(requireContext())); - progress = view.findViewById(R.id.progress); - return view; + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle?, + ): View { + _binding = ActivityWebviewBinding.inflate(inflater, container, false) + binding.webview.run { + setBackgroundColor(requireActivity().theme.resolveColor(android.R.attr.colorBackground)) + settings.builtInZoomControls = true + settings.displayZoomControls = false + settings.javaScriptEnabled = true + webViewClient = MyTagsWebViewClient() + webChromeClient = DialogWebChromeClient(requireContext()) + } + return binding.root } - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - progress.setVisibility(View.VISIBLE); - webView.loadUrl(url); + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + binding.progress.visibility = View.VISIBLE + binding.webview.loadUrl(url) } - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) // http://stackoverflow.com/questions/32284642/how-to-handle-an-uncatched-exception - CookieManager cookieManager = CookieManager.getInstance(); - cookieManager.flush(); - cookieManager.removeAllCookies(null); - cookieManager.removeSessionCookies(null); - + val cookieManager = CookieManager.getInstance() + cookieManager.flush() + cookieManager.removeAllCookies(null) + cookieManager.removeSessionCookies(null) // Copy cookies from okhttp cookie store to CookieManager - url = EhUrl.getMyTagsUrl(); - EhCookieStore store = EhCookieStore.INSTANCE; - for (Cookie cookie : store.getCookies(HttpUrl.parse(url))) { - cookieManager.setCookie(url, cookie.toString()); + val store = EhCookieStore + for (cookie in store.getCookies(url.toHttpUrl())) { + cookieManager.setCookie(url, cookie.toString()) } } - @Override - public int getFragmentTitle() { - return R.string.my_tags; + override fun onDestroyView() { + super.onDestroyView() + binding.webview.destroy() + _binding = null } - private class MyTagsWebViewClient extends WebViewClient { - @Override - public boolean shouldOverrideUrlLoading(WebView view, String url) { + override fun getFragmentTitle(): Int { + return R.string.my_tags + } + + private inner class MyTagsWebViewClient : WebViewClient() { + override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean { // Never load other urls - return !url.equals(MyTagsFragment.this.url); + return request.url.toString() != this@MyTagsFragment.url } - @Override - public void onPageStarted(WebView view, String url, Bitmap favicon) { - progress.setVisibility(View.VISIBLE); + override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) { + binding.progress.visibility = View.VISIBLE } - @Override - public void onPageFinished(WebView view, String url) { - progress.setVisibility(View.GONE); + override fun onPageFinished(view: WebView, url: String) { + binding.progress.visibility = View.GONE } } }