diff options
Diffstat (limited to 'src/com/android/browser/preferences')
8 files changed, 398 insertions, 77 deletions
diff --git a/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java new file mode 100644 index 0000000..99bd687 --- /dev/null +++ b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.browser.preferences; + +import com.android.browser.PreferenceKeys; +import com.android.browser.R; + +import android.content.res.Resources; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.PreferenceFragment; +import android.view.View; + +public class AccessibilityPreferencesFragment extends PreferenceFragment + implements Preference.OnPreferenceChangeListener { + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.accessibility_preferences); + + Preference e = findPreference(PreferenceKeys.PREF_TEXT_SIZE); + e.setOnPreferenceChangeListener(this); + e.setSummary(getVisualTextSizeName( + getPreferenceScreen().getSharedPreferences() + .getString(PreferenceKeys.PREF_TEXT_SIZE, null)) ); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + getListView().setItemsCanFocus(true); + } + + @Override + public boolean onPreferenceChange(Preference pref, Object objValue) { + if (getActivity() == null) { + // We aren't attached, so don't accept preferences changes from the + // invisible UI. + return false; + } + + if (pref.getKey().equals(PreferenceKeys.PREF_TEXT_SIZE)) { + pref.setSummary(getVisualTextSizeName((String) objValue)); + return true; + } + return false; + } + + private CharSequence getVisualTextSizeName(String enumName) { + Resources res = getActivity().getResources(); + CharSequence[] visualNames = res.getTextArray(R.array.pref_text_size_choices); + CharSequence[] enumNames = res.getTextArray(R.array.pref_text_size_values); + + // Sanity check + if (visualNames.length != enumNames.length) { + return ""; + } + + int length = enumNames.length; + for (int i = 0; i < length; i++) { + if (enumNames[i].equals(enumName)) { + return visualNames[i]; + } + } + + return ""; + } + +}
\ No newline at end of file diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java index e2e45f5..2cc504e 100644 --- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java +++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java @@ -17,7 +17,7 @@ package com.android.browser.preferences; import com.android.browser.BrowserActivity; -import com.android.browser.BrowserSettings; +import com.android.browser.PreferenceKeys; import com.android.browser.R; import android.content.Intent; @@ -46,28 +46,22 @@ public class AdvancedPreferencesFragment extends PreferenceFragment addPreferencesFromResource(R.xml.advanced_preferences); PreferenceScreen websiteSettings = (PreferenceScreen) findPreference( - BrowserSettings.PREF_WEBSITE_SETTINGS); + PreferenceKeys.PREF_WEBSITE_SETTINGS); websiteSettings.setFragment(WebsiteSettingsFragment.class.getName()); - Preference e = findPreference(BrowserSettings.PREF_TEXT_SIZE); - e.setOnPreferenceChangeListener(this); - e.setSummary(getVisualTextSizeName( - getPreferenceScreen().getSharedPreferences() - .getString(BrowserSettings.PREF_TEXT_SIZE, null)) ); - - e = findPreference(BrowserSettings.PREF_DEFAULT_ZOOM); + Preference e = findPreference(PreferenceKeys.PREF_DEFAULT_ZOOM); e.setOnPreferenceChangeListener(this); e.setSummary(getVisualDefaultZoomName( getPreferenceScreen().getSharedPreferences() - .getString(BrowserSettings.PREF_DEFAULT_ZOOM, null)) ); + .getString(PreferenceKeys.PREF_DEFAULT_ZOOM, null)) ); - e = findPreference(BrowserSettings.PREF_DEFAULT_TEXT_ENCODING); + e = findPreference(PreferenceKeys.PREF_DEFAULT_TEXT_ENCODING); e.setOnPreferenceChangeListener(this); - e = findPreference(BrowserSettings.PREF_EXTRAS_RESET_DEFAULTS); + e = findPreference(PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES); e.setOnPreferenceChangeListener(this); - e = findPreference(BrowserSettings.PREF_PLUGIN_STATE); + e = findPreference(PreferenceKeys.PREF_PLUGIN_STATE); e.setOnPreferenceChangeListener(this); updatePluginSummary((ListPreference) e); } @@ -85,7 +79,7 @@ public class AdvancedPreferencesFragment extends PreferenceFragment public void onResume() { super.onResume(); final PreferenceScreen websiteSettings = (PreferenceScreen) findPreference( - BrowserSettings.PREF_WEBSITE_SETTINGS); + PreferenceKeys.PREF_WEBSITE_SETTINGS); websiteSettings.setEnabled(false); WebStorage.getInstance().getOrigins(new ValueCallback<Map>() { @Override @@ -114,23 +108,20 @@ public class AdvancedPreferencesFragment extends PreferenceFragment return false; } - if (pref.getKey().equals(BrowserSettings.PREF_TEXT_SIZE)) { - pref.setSummary(getVisualTextSizeName((String) objValue)); - return true; - } else if (pref.getKey().equals(BrowserSettings.PREF_DEFAULT_ZOOM)) { + if (pref.getKey().equals(PreferenceKeys.PREF_DEFAULT_ZOOM)) { pref.setSummary(getVisualDefaultZoomName((String) objValue)); return true; - } else if (pref.getKey().equals(BrowserSettings.PREF_DEFAULT_TEXT_ENCODING)) { + } else if (pref.getKey().equals(PreferenceKeys.PREF_DEFAULT_TEXT_ENCODING)) { pref.setSummary((String) objValue); return true; - } else if (pref.getKey().equals(BrowserSettings.PREF_EXTRAS_RESET_DEFAULTS)) { + } else if (pref.getKey().equals(PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES)) { Boolean value = (Boolean) objValue; if (value.booleanValue() == true) { startActivity(new Intent(BrowserActivity.ACTION_RESTART, null, getActivity(), BrowserActivity.class)); return true; } - } else if (pref.getKey().equals(BrowserSettings.PREF_PLUGIN_STATE)) { + } else if (pref.getKey().equals(PreferenceKeys.PREF_PLUGIN_STATE)) { ListPreference lp = (ListPreference) pref; lp.setValue((String) objValue); updatePluginSummary(lp); @@ -139,26 +130,6 @@ public class AdvancedPreferencesFragment extends PreferenceFragment return false; } - private CharSequence getVisualTextSizeName(String enumName) { - Resources res = getActivity().getResources(); - CharSequence[] visualNames = res.getTextArray(R.array.pref_text_size_choices); - CharSequence[] enumNames = res.getTextArray(R.array.pref_text_size_values); - - // Sanity check - if (visualNames.length != enumNames.length) { - return ""; - } - - int length = enumNames.length; - for (int i = 0; i < length; i++) { - if (enumNames[i].equals(enumName)) { - return visualNames[i]; - } - } - - return ""; - } - private CharSequence getVisualDefaultZoomName(String enumName) { Resources res = getActivity().getResources(); CharSequence[] visualNames = res.getTextArray(R.array.pref_default_zoom_choices); diff --git a/src/com/android/browser/preferences/DebugPreferencesFragment.java b/src/com/android/browser/preferences/DebugPreferencesFragment.java index 0a82371..984c12a 100644 --- a/src/com/android/browser/preferences/DebugPreferencesFragment.java +++ b/src/com/android/browser/preferences/DebugPreferencesFragment.java @@ -18,21 +18,14 @@ package com.android.browser.preferences; import com.android.browser.BrowserActivity; import com.android.browser.BrowserSettings; -import com.android.browser.Controller; +import com.android.browser.PreferenceKeys; import com.android.browser.R; -import android.content.Context; import android.content.Intent; -import android.os.AsyncTask; import android.os.Bundle; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; -import android.preference.PreferenceActivity.Header; import android.preference.PreferenceFragment; -import android.preference.PreferenceManager.OnActivityResultListener; - -import java.io.IOException; -import java.io.Serializable; public class DebugPreferencesFragment extends PreferenceFragment implements OnPreferenceChangeListener { @@ -43,11 +36,7 @@ public class DebugPreferencesFragment extends PreferenceFragment // Load the XML preferences file addPreferencesFromResource(R.xml.debug_preferences); - if (BrowserSettings.getInstance().showDebugSettings()) { - addPreferencesFromResource(R.xml.hidden_debug_preferences); - } - - Preference e = findPreference(BrowserSettings.PREF_HARDWARE_ACCEL); + Preference e = findPreference(PreferenceKeys.PREF_ENABLE_HARDWARE_ACCEL); e.setOnPreferenceChangeListener(this); } diff --git a/src/com/android/browser/preferences/GeneralPreferencesFragment.java b/src/com/android/browser/preferences/GeneralPreferencesFragment.java index 0c63ab5..879b95d 100644 --- a/src/com/android/browser/preferences/GeneralPreferencesFragment.java +++ b/src/com/android/browser/preferences/GeneralPreferencesFragment.java @@ -19,7 +19,7 @@ package com.android.browser.preferences; import com.android.browser.BrowserBookmarksPage; import com.android.browser.BrowserHomepagePreference; import com.android.browser.BrowserPreferencesPage; -import com.android.browser.BrowserSettings; +import com.android.browser.PreferenceKeys; import com.android.browser.R; import com.android.browser.widget.BookmarkThumbnailWidgetProvider; @@ -62,10 +62,10 @@ public class GeneralPreferencesFragment extends PreferenceFragment // Load the XML preferences file addPreferencesFromResource(R.xml.general_preferences); - Preference e = findPreference(BrowserSettings.PREF_HOMEPAGE); + Preference e = findPreference(PreferenceKeys.PREF_HOMEPAGE); e.setOnPreferenceChangeListener(this); e.setSummary(getPreferenceScreen().getSharedPreferences() - .getString(BrowserSettings.PREF_HOMEPAGE, null)); + .getString(PreferenceKeys.PREF_HOMEPAGE, null)); ((BrowserHomepagePreference) e).setCurrentPage( getActivity().getIntent().getStringExtra(BrowserPreferencesPage.CURRENT_PAGE)); mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); @@ -81,7 +81,7 @@ public class GeneralPreferencesFragment extends PreferenceFragment return false; } - if (pref.getKey().equals(BrowserSettings.PREF_HOMEPAGE)) { + if (pref.getKey().equals(PreferenceKeys.PREF_HOMEPAGE)) { pref.setSummary((String) objValue); return true; } @@ -202,8 +202,8 @@ public class GeneralPreferencesFragment extends PreferenceFragment new GetAccountsTask(getActivity()).execute(); PreferenceScreen autoFillSettings = - (PreferenceScreen)findPreference(BrowserSettings.PREF_AUTOFILL_PROFILE); - autoFillSettings.setDependency(BrowserSettings.PREF_AUTOFILL_ENABLED); + (PreferenceScreen)findPreference(PreferenceKeys.PREF_AUTOFILL_PROFILE); + autoFillSettings.setDependency(PreferenceKeys.PREF_AUTOFILL_ENABLED); } @Override diff --git a/src/com/android/browser/preferences/LabPreferencesFragment.java b/src/com/android/browser/preferences/LabPreferencesFragment.java index a06dc3e..f99b96d 100644 --- a/src/com/android/browser/preferences/LabPreferencesFragment.java +++ b/src/com/android/browser/preferences/LabPreferencesFragment.java @@ -18,6 +18,7 @@ package com.android.browser.preferences; import com.android.browser.BrowserActivity; import com.android.browser.BrowserSettings; +import com.android.browser.PreferenceKeys; import com.android.browser.R; import com.android.browser.search.SearchEngine; @@ -41,22 +42,26 @@ public class LabPreferencesFragment extends PreferenceFragment // Load the XML preferences file addPreferencesFromResource(R.xml.lab_preferences); - Preference e = findPreference(BrowserSettings.PREF_QUICK_CONTROLS); - e.setOnPreferenceChangeListener(this); - useInstantPref = findPreference(BrowserSettings.PREF_USE_INSTANT); + Preference e = findPreference(PreferenceKeys.PREF_ENABLE_QUICK_CONTROLS); + if (e != null) { + e.setOnPreferenceChangeListener(this); + } + useInstantPref = findPreference(PreferenceKeys.PREF_USE_INSTANT_SEARCH); } @Override public void onResume() { super.onResume(); - useInstantPref.setEnabled(false); + if (useInstantPref != null) { + useInstantPref.setEnabled(false); - // Enable the "use instant" preference only if the selected - // search engine is google. - if (mBrowserSettings.getSearchEngine() != null) { - final String currentName = mBrowserSettings.getSearchEngine().getName(); - if (SearchEngine.GOOGLE.equals(currentName)) { - useInstantPref.setEnabled(true); + // Enable the "use instant" preference only if the selected + // search engine is google. + if (mBrowserSettings.getSearchEngine() != null) { + final String currentName = mBrowserSettings.getSearchEngine().getName(); + if (SearchEngine.GOOGLE.equals(currentName)) { + useInstantPref.setEnabled(true); + } } } } diff --git a/src/com/android/browser/preferences/MinFontSizePreference.java b/src/com/android/browser/preferences/MinFontSizePreference.java new file mode 100644 index 0000000..22092b0 --- /dev/null +++ b/src/com/android/browser/preferences/MinFontSizePreference.java @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.browser.preferences; + +import com.android.browser.R; + +import android.content.Context; +import android.os.Parcel; +import android.os.Parcelable; +import android.preference.Preference; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.SeekBar; +import android.widget.SeekBar.OnSeekBarChangeListener; + +public class MinFontSizePreference extends Preference implements OnSeekBarChangeListener { + + // range from 1:6..24 + static final int MIN = 5; + static final int MAX = 23; + private int mProgress; + View mRoot; + + public MinFontSizePreference( + Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public MinFontSizePreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public MinFontSizePreference(Context context) { + super(context); + } + + @Override + public View getView(View convertView, ViewGroup parent) { + if (mRoot == null) { + LayoutInflater inflater = LayoutInflater.from(getContext()); + mRoot = inflater.inflate(R.layout.min_font_size, parent, false); + SeekBar seek = (SeekBar) mRoot.findViewById(R.id.seekbar); + seek.setMax((MAX - MIN)); + seek.setProgress(mProgress); + seek.setOnSeekBarChangeListener(this); + } + return mRoot; + } + + @Override + protected void onSetInitialValue(boolean restoreValue, Object defaultValue) { + mProgress = restoreValue ? getPersistedInt(mProgress) + : (Integer) defaultValue; + mProgress -= 1; + } + + @Override + public void onProgressChanged( + SeekBar seekBar, int progress, boolean fromUser) { + if (fromUser) { + if (progress == 0) { + persistInt(1); + } else { + persistInt(progress + MIN + 1); + } + } + mRoot.invalidate(); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + } + + + @Override + protected Parcelable onSaveInstanceState() { + /* + * Suppose a client uses this preference type without persisting. We + * must save the instance state so it is able to, for example, survive + * orientation changes. + */ + + final Parcelable superState = super.onSaveInstanceState(); + if (isPersistent()) { + // No need to save instance state since it's persistent + return superState; + } + + // Save the instance state + final SavedState myState = new SavedState(superState); + myState.progress = mProgress; + return myState; + } + + @Override + protected void onRestoreInstanceState(Parcelable state) { + if (!state.getClass().equals(SavedState.class)) { + // Didn't save state for us in onSaveInstanceState + super.onRestoreInstanceState(state); + return; + } + + // Restore the instance state + SavedState myState = (SavedState) state; + super.onRestoreInstanceState(myState.getSuperState()); + mProgress = myState.progress; + notifyChanged(); + } + + /** + * SavedState, a subclass of {@link BaseSavedState}, will store the state + * of MyPreference, a subclass of Preference. + * <p> + * It is important to always call through to super methods. + */ + private static class SavedState extends BaseSavedState { + int progress; + + public SavedState(Parcel source) { + super(source); + + // Restore the click counter + progress = source.readInt(); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + super.writeToParcel(dest, flags); + + // Save the click counter + dest.writeInt(progress); + } + + public SavedState(Parcelable superState) { + super(superState); + } + + public static final Parcelable.Creator<SavedState> CREATOR = + new Parcelable.Creator<SavedState>() { + public SavedState createFromParcel(Parcel in) { + return new SavedState(in); + } + + public SavedState[] newArray(int size) { + return new SavedState[size]; + } + }; + } + +} diff --git a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java index 2266608..35e6e43 100644 --- a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java +++ b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java @@ -16,7 +16,7 @@ package com.android.browser.preferences; -import com.android.browser.BrowserSettings; +import com.android.browser.PreferenceKeys; import com.android.browser.R; import android.app.Activity; @@ -28,18 +28,14 @@ import android.preference.PreferenceFragment; public class PrivacySecurityPreferencesFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener { - private BrowserSettings mSettings; - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mSettings = BrowserSettings.getInstance(); - // Load the preferences from an XML resource addPreferencesFromResource(R.xml.privacy_security_preferences); - Preference e = findPreference(BrowserSettings.PREF_CLEAR_HISTORY); + Preference e = findPreference(PreferenceKeys.PREF_PRIVACY_CLEAR_HISTORY); e.setOnPreferenceChangeListener(this); } @@ -50,7 +46,7 @@ public class PrivacySecurityPreferencesFragment extends PreferenceFragment @Override public boolean onPreferenceChange(Preference pref, Object objValue) { - if (pref.getKey().equals(BrowserSettings.PREF_CLEAR_HISTORY) + if (pref.getKey().equals(PreferenceKeys.PREF_PRIVACY_CLEAR_HISTORY) && ((Boolean) objValue).booleanValue() == true) { // Need to tell the browser to remove the parent/child relationship // between tabs diff --git a/src/com/android/browser/preferences/WebViewPreview.java b/src/com/android/browser/preferences/WebViewPreview.java new file mode 100644 index 0000000..a269dbd --- /dev/null +++ b/src/com/android/browser/preferences/WebViewPreview.java @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.browser.preferences; + +import com.android.browser.BrowserSettings; +import com.android.browser.R; + +import android.content.Context; +import android.content.SharedPreferences; +import android.content.SharedPreferences.OnSharedPreferenceChangeListener; +import android.content.res.Resources; +import android.preference.Preference; +import android.preference.PreferenceManager; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.webkit.WebSettings; +import android.webkit.WebView; + +public class WebViewPreview extends Preference implements OnSharedPreferenceChangeListener { + + // 80 char line width limit? Rules are made to be broken. + static final String HTML_FORMAT = "<html><head><style type=\"text/css\">p { margin: 2px auto;}</style><body><p style=\"font-size: .4em\">%s</p><p style=\"font-size: .7em\">%s</p><p style=\"font-size: 1em\">%s</p><p style=\"font-size: 1.3em\">%s</p><p style=\"font-size: 1.6em\">%s</p></body></html>"; + + String HTML; + private View mRoot; + private WebView mWebView; + + public WebViewPreview( + Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context); + } + + public WebViewPreview(Context context, AttributeSet attrs) { + super(context, attrs); + init(context); + } + + public WebViewPreview(Context context) { + super(context); + init(context); + } + + void init(Context context) { + Resources res = context.getResources(); + Object[] visualNames = res.getStringArray(R.array.pref_text_size_choices); + HTML = String.format(HTML_FORMAT, visualNames); + } + + void updatePreview() { + if (mWebView == null) return; + + WebSettings ws = mWebView.getSettings(); + BrowserSettings bs = BrowserSettings.getInstance(); + ws.setMinimumFontSize(bs.getMinimumFontSize()); + ws.setTextSize(bs.getTextSize()); + mWebView.loadData(HTML, "text/html", "utf-8"); + } + + @Override + public View getView(View convertView, ViewGroup parent) { + if (mWebView == null) { + LayoutInflater inflater = LayoutInflater.from(getContext()); + mRoot = inflater.inflate(R.layout.webview_preview, parent, false); + mWebView = (WebView) mRoot.findViewById(R.id.webview); + mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); + } + updatePreview(); + return mRoot; + } + + @Override + protected void onAttachedToHierarchy(PreferenceManager preferenceManager) { + super.onAttachedToHierarchy(preferenceManager); + getSharedPreferences().registerOnSharedPreferenceChangeListener(this); + } + + @Override + protected void onPrepareForRemoval() { + getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); + super.onPrepareForRemoval(); + } + + @Override + public void onSharedPreferenceChanged( + SharedPreferences sharedPreferences, String key) { + updatePreview(); + } + +} |