package org.softeg.slartus.forpdaplus.classes; import android.content.SharedPreferences; import android.os.Build; import android.support.v7.app.ActionBar; import android.view.KeyEvent; import android.view.Window; import android.webkit.WebSettings; import android.webkit.WebView; import org.softeg.slartus.forpdacommon.Connectivity; import org.softeg.slartus.forpdacommon.ExtPreferences; import org.softeg.slartus.forpdaplus.App; import org.softeg.slartus.forpdaplus.fragments.topic.ThemeFragment; /** * Created by IntelliJ IDEA. * User: slinkin * Date: 24.10.12 * Time: 8:31 * To change this template use File | Settings | File Templates. */ public class WebViewExternals { private IWebViewContainer m_WebViewContainer; public WebViewExternals(IWebViewContainer webViewContainer) { m_WebViewContainer = webViewContainer; } protected String Prefix() { return m_WebViewContainer.Prefix(); } protected WebView getWebView() { return m_WebViewContainer.getWebView(); } private Boolean m_UseVolumesScroll = false; private Boolean m_LoadsImagesAutomatically = true; private Boolean m_KeepScreenOn = false; private Boolean m_CurrentFullScreen = false; protected Boolean getCurrentFullScreen() { return m_CurrentFullScreen; } private Window getWindow() { return m_WebViewContainer.getWindow(); } private ActionBar getSupportActionBar() { return m_WebViewContainer.getSupportActionBar(); } public void onPrepareOptionsMenu() { } public void setWebViewSettings() { setWebViewSettings(false); } public void setWebViewSettings(Boolean loadImagesAutomaticallyAlways) { disableWebViewCache(); getWebView().setBackgroundColor(App.getInstance().getThemeStyleWebViewBackground()); //getWebView().loadData("<html><head></head><body bgcolor=" + App.getInstance().getCurrentBackgroundColorHtml() + "></body></html>", "text/html", "UTF-8"); //getWebView().getSettings().setLoadsImagesAutomatically(m_LoadsImagesAutomatically); getWebView().setKeepScreenOn(m_KeepScreenOn); getWebView().getSettings().setBuiltInZoomControls(false); if(Build.VERSION.SDK_INT<18) getWebView().getSettings().setPluginState(WebSettings.PluginState.ON); } private void disableWebViewCache() { getWebView().getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); } public void loadPreferences(SharedPreferences prefs) { String prefix = Prefix(); m_UseVolumesScroll = prefs.getBoolean(prefix + ".UseVolumesScroll", false); m_LoadsImagesAutomatically = isLoadImages(prefs, prefix); m_KeepScreenOn = prefs.getBoolean(prefix + ".KeepScreenOn", false); } public static Boolean isLoadImages(String prefix) { if (ThemeFragment.LoadsImagesAutomatically != null) return ThemeFragment.LoadsImagesAutomatically; SharedPreferences prefs = App.getInstance().getPreferences(); return isLoadImages(prefs, prefix); } public static Boolean isLoadImages(SharedPreferences prefs, String prefix) { int loadImagesType = ExtPreferences.parseInt(prefs, prefix + ".LoadsImages", 1); if (loadImagesType == 2) { return Connectivity.isConnectedWifi(App.getContext()); } return loadImagesType == 1; } public boolean dispatchKeyEvent(KeyEvent event) { return scrollByKeys(event) || pageNavigationsByKeys(event) || m_WebViewContainer.dispatchSuperKeyEvent(event); } private boolean scrollByKeys(KeyEvent event) { WebView scrollView = getWebView(); if (m_UseVolumesScroll) { int action = event.getAction(); String scrollUpKeys = "," + App.getInstance().getPreferences() .getString("keys.scrollUp", "24").replace(" ", "") + ","; String scrollDownKeys = "," + App.getInstance().getPreferences() .getString("keys.scrollDown", "25").replace(" ", "") + ","; int keyCode = event.getKeyCode(); if (scrollUpKeys.contains("," + Integer.toString(keyCode) + ",")) { if (action == KeyEvent.ACTION_DOWN) scrollView.pageUp(false); return true;// true надо обязательно возвращать даже если не ACTION_DOWN иначе звук нажатия } else if (scrollDownKeys.contains("," + Integer.toString(keyCode) + ",")) { if (action == KeyEvent.ACTION_DOWN) scrollView.pageDown(false); return true;// true надо обязательно возвращать даже если не ACTION_DOWN иначе звук нажатия } } return false; } /** * Обработка клавиатуры для nook simple touch * */ private boolean pageNavigationsByKeys(KeyEvent event) { int action = event.getAction(); if (action == KeyEvent.ACTION_DOWN) { String prevPageKeys = "," + App.getInstance().getPreferences() .getString("keys.prevPage", "158").replace(" ", "") + ","; String nextPageKeys = "," + App.getInstance().getPreferences() .getString("keys.nextPage", "407").replace(" ", "") + ","; int keyCode = event.getKeyCode(); if (prevPageKeys.contains("," + Integer.toString(keyCode) + ",")) { m_WebViewContainer.prevPage(); return true; } else if (nextPageKeys.contains("," + Integer.toString(keyCode) + ",")) { m_WebViewContainer.nextPage(); return true; } } return false; } }