package org.softeg.slartus.forpdaplus.classes; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.KeyEvent; import android.view.View; import android.webkit.WebView; import android.widget.SeekBar; import android.widget.TextView; import com.afollestad.materialdialogs.MaterialDialog; import org.softeg.slartus.forpdaplus.R; import org.softeg.slartus.forpdaplus.prefs.Preferences; /** * Created by IntelliJ IDEA. * User: slinkin * Date: 16.10.12 * Time: 8:35 * To change this template use File | Settings | File Templates. */ public abstract class BrowserViewsFragmentActivity extends AppCompatActivity implements IWebViewContainer { public abstract String Prefix(); public abstract WebView getWebView(); WebViewExternals m_WebViewExternals; public WebViewExternals getWebViewExternals() { if (m_WebViewExternals == null) m_WebViewExternals = new WebViewExternals(this); return m_WebViewExternals; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onDestroy() { WebView mWebView= getWebView(); // null out before the super call if (mWebView != null) { mWebView.setWebChromeClient(null); mWebView.setWebViewClient(null); mWebView.removeAllViews(); mWebView.loadUrl("about:blank"); mWebView = null; } super.onDestroy(); } protected void setWebViewSettings(Boolean loadImagesAutomaticallyAlways) { getWebViewExternals().setWebViewSettings(loadImagesAutomaticallyAlways); } public void setWebViewSettings() { setWebViewSettings(false); } public void onPrepareOptionsMenu() { getWebViewExternals().onPrepareOptionsMenu(); } /*@Override protected void loadPreferences(SharedPreferences prefs) { super.loadPreferences(prefs); getWebViewExternals().loadPreferences(prefs); }*/ @Override public boolean dispatchKeyEvent(KeyEvent event) { return getWebViewExternals().dispatchKeyEvent(event); } public boolean dispatchSuperKeyEvent(KeyEvent event) { return super.dispatchKeyEvent(event); } public void showFontSizeDialog() { View v = getLayoutInflater().inflate(R.layout.font_size_dialog, null); assert v != null; final SeekBar seekBar = (SeekBar) v.findViewById(R.id.value_seekbar); seekBar.setProgress(Preferences.getFontSize(Prefix()) - 1); final TextView textView = (TextView) v.findViewById(R.id.value_textview); textView.setText((seekBar.getProgress() + 1) + ""); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { getWebView().getSettings().setDefaultFontSize(i + 1); textView.setText((i + 1) + ""); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); new MaterialDialog.Builder(this) .title(R.string.font_size) .customView(v,true) .positiveText(R.string.ok) .negativeText(R.string.cancel) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog dialog) { Preferences.setFontSize(Prefix(), seekBar.getProgress() + 1); } @Override public void onNegative(MaterialDialog dialog) { getWebView().getSettings().setDefaultFontSize(Preferences.Topic.getFontSize()); } }) .show(); } }