X-Git-Url: https://git.mdrn.pl/wl-app.git/blobdiff_plain/48b2fe9f7c2dc3d9aeaaa6dbfb27c7da4f3235ff..269195b3729c1bdc22e9053ee4ebca667ea8549d:/Android/app/src/main/java/com/moiseum/wolnelektury/view/WebViewFragment.java diff --git a/Android/app/src/main/java/com/moiseum/wolnelektury/view/WebViewFragment.java b/Android/app/src/main/java/com/moiseum/wolnelektury/view/WebViewFragment.java new file mode 100644 index 0000000..38bc5dc --- /dev/null +++ b/Android/app/src/main/java/com/moiseum/wolnelektury/view/WebViewFragment.java @@ -0,0 +1,115 @@ +package com.moiseum.wolnelektury.view; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.View; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.Button; +import android.widget.TextView; + +import com.moiseum.wolnelektury.R; +import com.moiseum.wolnelektury.base.AbstractFragment; + +import butterknife.BindView; + +/** + * @author golonkos. + */ + +public class WebViewFragment extends AbstractFragment { + + private static final String PARAM_URL = "PARAM_URL"; + + @BindView(R.id.wvAbout) + WebView wvPage; + @BindView(R.id.btnBack) + Button btnBack; + @BindView(R.id.btnRefresh) + Button btnRefresh; + @BindView(R.id.btnNext) + Button btnNext; + @BindView(R.id.tvPageError) + TextView tvPageError; + + private boolean loadFailed; + + public static Fragment newInstance(String url) { + WebViewFragment fragment = new WebViewFragment(); + Bundle args = new Bundle(1); + args.putString(PARAM_URL, url); + fragment.setArguments(args); + return fragment; + } + + @Override + public int getLayoutResourceId() { + return R.layout.fragment_web_view; + } + + @Override + public void prepareView(View view, Bundle savedInstanceState) { + initWebView(); + } + + private void initWebView() { + wvPage.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); + wvPage.getSettings().setJavaScriptEnabled(true); + wvPage.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); + wvPage.setWebViewClient(new WebViewClient() { + + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + wvPage.loadUrl(url); + return true; + } + + @Override + public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { + if (tvPageError == null) { + return; + } + loadFailed = true; + tvPageError.setVisibility(View.VISIBLE); + } + + @Override + public void onPageFinished(WebView view, String url) { + super.onPageFinished(view, url); + if (tvPageError == null) { + return; + } + if (!loadFailed) { + tvPageError.setVisibility(View.GONE); + } + btnBack.setEnabled(wvPage.canGoBack()); + btnNext.setEnabled(wvPage.canGoForward()); + } + }); + String url = getArguments().getString(PARAM_URL); + wvPage.loadUrl(url); + + btnRefresh.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + loadFailed = false; + wvPage.reload(); + } + }); + + btnBack.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + wvPage.goBack(); + } + }); + + btnNext.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + wvPage.goForward(); + } + }); + } +}