140badf29facf6b5ca894a092062cc27897d2b434John Reck/* 240badf29facf6b5ca894a092062cc27897d2b434John Reck * Copyright (C) 2011 The Android Open Source Project 340badf29facf6b5ca894a092062cc27897d2b434John Reck * 440badf29facf6b5ca894a092062cc27897d2b434John Reck * Licensed under the Apache License, Version 2.0 (the "License"); 540badf29facf6b5ca894a092062cc27897d2b434John Reck * you may not use this file except in compliance with the License. 640badf29facf6b5ca894a092062cc27897d2b434John Reck * You may obtain a copy of the License at 740badf29facf6b5ca894a092062cc27897d2b434John Reck * 840badf29facf6b5ca894a092062cc27897d2b434John Reck * http://www.apache.org/licenses/LICENSE-2.0 940badf29facf6b5ca894a092062cc27897d2b434John Reck * 1040badf29facf6b5ca894a092062cc27897d2b434John Reck * Unless required by applicable law or agreed to in writing, software 1140badf29facf6b5ca894a092062cc27897d2b434John Reck * distributed under the License is distributed on an "AS IS" BASIS, 1240badf29facf6b5ca894a092062cc27897d2b434John Reck * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1340badf29facf6b5ca894a092062cc27897d2b434John Reck * See the License for the specific language governing permissions and 1440badf29facf6b5ca894a092062cc27897d2b434John Reck * limitations under the License 1540badf29facf6b5ca894a092062cc27897d2b434John Reck */ 1640badf29facf6b5ca894a092062cc27897d2b434John Reck 1740badf29facf6b5ca894a092062cc27897d2b434John Reckpackage com.android.browser.preferences; 1840badf29facf6b5ca894a092062cc27897d2b434John Reck 197dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reckimport android.content.Context; 2040badf29facf6b5ca894a092062cc27897d2b434John Reckimport android.os.Bundle; 2140badf29facf6b5ca894a092062cc27897d2b434John Reckimport android.preference.Preference; 2240badf29facf6b5ca894a092062cc27897d2b434John Reckimport android.preference.PreferenceFragment; 23600928560852c7b9ffffbfc91ee9fe1016465329John Reckimport android.webkit.WebView; 247dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck 257dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reckimport com.android.browser.BrowserSettings; 267dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reckimport com.android.browser.PreferenceKeys; 277dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reckimport com.android.browser.R; 287dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck 297dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reckimport java.text.NumberFormat; 3040badf29facf6b5ca894a092062cc27897d2b434John Reck 3140badf29facf6b5ca894a092062cc27897d2b434John Reckpublic class AccessibilityPreferencesFragment extends PreferenceFragment 3240badf29facf6b5ca894a092062cc27897d2b434John Reck implements Preference.OnPreferenceChangeListener { 3340badf29facf6b5ca894a092062cc27897d2b434John Reck 347dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck NumberFormat mFormat; 35600928560852c7b9ffffbfc91ee9fe1016465329John Reck // Used to pause/resume timers, which are required for WebViewPreview 36600928560852c7b9ffffbfc91ee9fe1016465329John Reck WebView mControlWebView; 377dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck 3840badf29facf6b5ca894a092062cc27897d2b434John Reck @Override 3940badf29facf6b5ca894a092062cc27897d2b434John Reck public void onCreate(Bundle savedInstanceState) { 4040badf29facf6b5ca894a092062cc27897d2b434John Reck super.onCreate(savedInstanceState); 41600928560852c7b9ffffbfc91ee9fe1016465329John Reck mControlWebView = new WebView(getActivity()); 4240badf29facf6b5ca894a092062cc27897d2b434John Reck addPreferencesFromResource(R.xml.accessibility_preferences); 437dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck BrowserSettings settings = BrowserSettings.getInstance(); 447dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck mFormat = NumberFormat.getPercentInstance(); 4540badf29facf6b5ca894a092062cc27897d2b434John Reck 467dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck Preference e = findPreference(PreferenceKeys.PREF_MIN_FONT_SIZE); 477dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck e.setOnPreferenceChangeListener(this); 487dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck updateMinFontSummary(e, settings.getMinimumFontSize()); 497dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck e = findPreference(PreferenceKeys.PREF_TEXT_ZOOM); 5040badf29facf6b5ca894a092062cc27897d2b434John Reck e.setOnPreferenceChangeListener(this); 517dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck updateTextZoomSummary(e, settings.getTextZoom()); 5267f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware e = findPreference(PreferenceKeys.PREF_DOUBLE_TAP_ZOOM); 5367f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware e.setOnPreferenceChangeListener(this); 5467f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware updateDoubleTapZoomSummary(e, settings.getDoubleTapZoom()); 555d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard e = findPreference(PreferenceKeys.PREF_INVERTED_CONTRAST); 565d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard e.setOnPreferenceChangeListener(this); 575d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard updateInvertedContrastSummary(e, (int) (settings.getInvertedContrast() * 100)); 5840badf29facf6b5ca894a092062cc27897d2b434John Reck } 5940badf29facf6b5ca894a092062cc27897d2b434John Reck 60600928560852c7b9ffffbfc91ee9fe1016465329John Reck @Override 61600928560852c7b9ffffbfc91ee9fe1016465329John Reck public void onResume() { 62600928560852c7b9ffffbfc91ee9fe1016465329John Reck super.onResume(); 63600928560852c7b9ffffbfc91ee9fe1016465329John Reck mControlWebView.resumeTimers(); 64600928560852c7b9ffffbfc91ee9fe1016465329John Reck } 65600928560852c7b9ffffbfc91ee9fe1016465329John Reck 66600928560852c7b9ffffbfc91ee9fe1016465329John Reck @Override 67600928560852c7b9ffffbfc91ee9fe1016465329John Reck public void onPause() { 68600928560852c7b9ffffbfc91ee9fe1016465329John Reck super.onPause(); 69600928560852c7b9ffffbfc91ee9fe1016465329John Reck mControlWebView.pauseTimers(); 70600928560852c7b9ffffbfc91ee9fe1016465329John Reck } 71600928560852c7b9ffffbfc91ee9fe1016465329John Reck 72600928560852c7b9ffffbfc91ee9fe1016465329John Reck @Override 73600928560852c7b9ffffbfc91ee9fe1016465329John Reck public void onDestroy() { 74600928560852c7b9ffffbfc91ee9fe1016465329John Reck super.onDestroy(); 75600928560852c7b9ffffbfc91ee9fe1016465329John Reck mControlWebView.destroy(); 76600928560852c7b9ffffbfc91ee9fe1016465329John Reck mControlWebView = null; 77600928560852c7b9ffffbfc91ee9fe1016465329John Reck } 78600928560852c7b9ffffbfc91ee9fe1016465329John Reck 797dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck void updateMinFontSummary(Preference pref, int minFontSize) { 807dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck Context c = getActivity(); 817dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck pref.setSummary(c.getString(R.string.pref_min_font_size_value, minFontSize)); 827dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck } 837dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck 847dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck void updateTextZoomSummary(Preference pref, int textZoom) { 857dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck pref.setSummary(mFormat.format(textZoom / 100.0)); 8640badf29facf6b5ca894a092062cc27897d2b434John Reck } 8740badf29facf6b5ca894a092062cc27897d2b434John Reck 8867f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware void updateDoubleTapZoomSummary(Preference pref, int doubleTapZoom) { 8967f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware pref.setSummary(mFormat.format(doubleTapZoom / 100.0)); 9067f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware } 9167f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware 925d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard void updateInvertedContrastSummary(Preference pref, int contrast) { 935d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard pref.setSummary(mFormat.format(contrast / 100.0)); 945d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard } 955d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard 9640badf29facf6b5ca894a092062cc27897d2b434John Reck @Override 9740badf29facf6b5ca894a092062cc27897d2b434John Reck public boolean onPreferenceChange(Preference pref, Object objValue) { 9840badf29facf6b5ca894a092062cc27897d2b434John Reck if (getActivity() == null) { 9940badf29facf6b5ca894a092062cc27897d2b434John Reck // We aren't attached, so don't accept preferences changes from the 10040badf29facf6b5ca894a092062cc27897d2b434John Reck // invisible UI. 10140badf29facf6b5ca894a092062cc27897d2b434John Reck return false; 10240badf29facf6b5ca894a092062cc27897d2b434John Reck } 10340badf29facf6b5ca894a092062cc27897d2b434John Reck 1047dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck if (PreferenceKeys.PREF_MIN_FONT_SIZE.equals(pref.getKey())) { 1057dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck updateMinFontSummary(pref, BrowserSettings 1067dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck .getAdjustedMinimumFontSize((Integer) objValue)); 10740badf29facf6b5ca894a092062cc27897d2b434John Reck } 1087dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck if (PreferenceKeys.PREF_TEXT_ZOOM.equals(pref.getKey())) { 1095ba3c76b201c4448de4b520f2aee2e7d99fc712dJohn Reck BrowserSettings settings = BrowserSettings.getInstance(); 1105ba3c76b201c4448de4b520f2aee2e7d99fc712dJohn Reck updateTextZoomSummary(pref, settings 1117dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck .getAdjustedTextZoom((Integer) objValue)); 11240badf29facf6b5ca894a092062cc27897d2b434John Reck } 11367f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware if (PreferenceKeys.PREF_DOUBLE_TAP_ZOOM.equals(pref.getKey())) { 11467f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware BrowserSettings settings = BrowserSettings.getInstance(); 11567f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware updateDoubleTapZoomSummary(pref, settings 11667f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware .getAdjustedDoubleTapZoom((Integer) objValue)); 11767f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware } 1185d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard if (PreferenceKeys.PREF_INVERTED_CONTRAST.equals(pref.getKey())) { 1195d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard updateInvertedContrastSummary(pref, 1205d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard (int) ((10 + (Integer) objValue) * 10)); 1215d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard } 1227dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck return true; 12340badf29facf6b5ca894a092062cc27897d2b434John Reck } 12440badf29facf6b5ca894a092062cc27897d2b434John Reck 1255d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard} 126