package com.lechucksoftware.proxy.proxysettings.ui.dialogs; import android.app.AlertDialog; import android.app.Dialog; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.webkit.WebView; import android.webkit.WebViewClient; import com.afollestad.materialdialogs.MaterialDialog; import com.lechucksoftware.proxy.proxysettings.App; import com.lechucksoftware.proxy.proxysettings.R; import com.lechucksoftware.proxy.proxysettings.ui.base.BaseDialogFragment; public class HtmlDialog extends BaseDialogFragment { public static String TAG = HtmlDialog.class.getSimpleName(); public String title; public String fileName; private WebView webView; // private ProgressDialog spinner; private HTMLDialogHandler htmlDialogHandler; public HtmlDialog() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); htmlDialogHandler = new HTMLDialogHandler(); // htmlDialogHandler.sendMessage(HTMLDialogHandler.SHOW_PROGRESS_ACTION); webView = new WebView(getActivity()); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); getActivity().startActivity(intent); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { App.getTraceUtils().stopTrace(TAG, "showHTMLAssetsAlertDialog", Log.DEBUG); // try // { // Thread.sleep(500); // } // catch (InterruptedException e) // { // e.printStackTrace(); // } htmlDialogHandler.sendMessage(HTMLDialogHandler.HIDE_PROGRESS_ACTION, HTMLDialogHandler.SHOW_DIALOG_ACTION); } @Override public void onScaleChanged(WebView view, float oldScale, float newScale) { super.onScaleChanged(view, oldScale, newScale); } }); webView.loadUrl(fileName); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity()); builder.title(title); builder.customView(webView, false); builder.positiveText(R.string.ok); builder.callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog dialog) { dialog.dismiss(); } }); MaterialDialog alert = builder.build(); return alert; } private class HTMLDialogHandler extends Handler { public static final String SHOW_DIALOG_ACTION = "SHOW_DIALOG_ACTION"; public static final String SHOW_PROGRESS_ACTION = "SHOW_PROGRESS_ACTION"; public static final String HIDE_DIALOG_ACTION = "HIDE_DIALOG_ACTION"; public static final String HIDE_PROGRESS_ACTION = "HIDE_PROGRESS_ACTION"; @Override public void handleMessage(Message message) { Bundle b = message.getData(); // Timber.w(TAG, "handleMessage: " + b.toString()); if (b.containsKey(SHOW_DIALOG_ACTION)) { } if (b.containsKey(SHOW_PROGRESS_ACTION)) { // spinner.show(); } if (b.containsKey(HIDE_DIALOG_ACTION)) { } if (b.containsKey(HIDE_PROGRESS_ACTION)) { // spinner.dismiss(); } } public void sendMessage(String ... actions) { Message message = this.obtainMessage(); Bundle b = new Bundle(); for(String action:actions) { b.putString(action, ""); message.setData(b); } sendMessageDelayed(message, 0); } } public static HtmlDialog newInstance(String tit, String file) { HtmlDialog frag = new HtmlDialog(); // TODO: pass this arguments using the setArguments method frag.title = tit; frag.fileName = file; return frag; } // @Override // public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) // { // View v = inflater.inflate(R.layout.dialog_html, container, false); // // App.getTraceUtils().startTrace(TAG, "showHTMLAssetsAlertDialog", Log.DEBUG); // // getDialog().setTitle(title); // // webView = (WebView) v.findViewById(R.id.dialog_webview); // webView.setVisibility(View.GONE); // // App.getTraceUtils().partialTrace(TAG, "showHTMLAssetsAlertDialog", Log.DEBUG); // // webView.setWebViewClient(new WebViewClient(){ // // @Override // public boolean shouldOverrideUrlLoading(WebView view, String url) // { // Uri uri = Uri.parse(url); // Intent intent = new Intent(Intent.ACTION_VIEW, uri); // getActivity().startActivity(intent); // return true; // } // // @Override // public void onPageFinished(WebView view, String url) // { // App.getTraceUtils().stopTrace(TAG, "showHTMLAssetsAlertDialog", Log.DEBUG); // //// webView.requestLayout(); // //// try //// { //// Thread.sleep(1000); //// } //// catch (InterruptedException e) //// { //// e.printStackTrace(); //// } // //// spinner.dismiss(); //// webView.setVisibility(View.VISIBLE); // } // // @Override // public void onScaleChanged(WebView view, float oldScale, float newScale) // { // super.onScaleChanged(view, oldScale, newScale); // } // }); // // App.getTraceUtils().partialTrace(TAG, "showHTMLAssetsAlertDialog", Log.DEBUG); // webView.loadUrl(fileName); // App.getTraceUtils().partialTrace(TAG, "showHTMLAssetsAlertDialog", Log.DEBUG); // // // Watch for button clicks. // Button button = (Button) v.findViewById(R.id.dialog_close); // button.setOnClickListener(new View.OnClickListener() // { // public void onClick(View v) // { // dismiss(); // } // }); // // return v; // } }