Convert MyTagsFragment to kotlin
This commit is contained in:
1 parent
ff18198cd1
commit
0e271bbbc2
1 file changed
+65
-72
@@ -15,100 +15,93 @@
|
||||
* You should have received a copy of the GNU General Public License along with EhViewer.
|
||||
* If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user