diff options
-rw-r--r-- | res/values/attrs.xml (renamed from res/values/attrs_tiles.xml) | 5 | ||||
-rw-r--r-- | res/xml/general_preferences.xml | 5 | ||||
-rw-r--r-- | src/com/android/browser/BrowserYesNoPreference.java | 55 | ||||
-rw-r--r-- | src/com/android/browser/preferences/AdvancedPreferencesFragment.java | 5 | ||||
-rw-r--r-- | src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java | 18 |
5 files changed, 75 insertions, 13 deletions
diff --git a/res/values/attrs_tiles.xml b/res/values/attrs.xml index d6ec2927..3e622618 100644 --- a/res/values/attrs_tiles.xml +++ b/res/values/attrs.xml @@ -40,4 +40,9 @@ <attr name="android:label" /> </declare-styleable> + <declare-styleable name="BrowserYesNoPreference"> + <attr name="positiveButtonText" format="string|reference" /> + <attr name="negativeButtonText" format="string|reference" /> + <attr name="neutralButtonText" format="string|reference" /> + </declare-styleable> </resources> diff --git a/res/xml/general_preferences.xml b/res/xml/general_preferences.xml index 75b4600f..88d0e327 100644 --- a/res/xml/general_preferences.xml +++ b/res/xml/general_preferences.xml @@ -14,8 +14,8 @@ limitations under the License. --> -<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> - +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" > <PreferenceCategory android:layout="@layout/swe_preference_category_first" android:title="@string/pref_general_title"> @@ -107,6 +107,7 @@ android:key="reset_default_preferences" android:title="@string/pref_extras_reset_default" android:summary="@string/pref_extras_reset_default_summary" + app:neutralButtonText="@string/website_settings_clear_all" android:dialogMessage="@string/pref_extras_reset_default_dlg" android:dialogIcon="@android:drawable/ic_dialog_alert" /> diff --git a/src/com/android/browser/BrowserYesNoPreference.java b/src/com/android/browser/BrowserYesNoPreference.java index f47ff3d8..289ddf3e 100644 --- a/src/com/android/browser/BrowserYesNoPreference.java +++ b/src/com/android/browser/BrowserYesNoPreference.java @@ -16,14 +16,14 @@ package com.android.browser; -import android.app.Activity; +import android.app.AlertDialog; import android.content.Context; -import android.content.Intent; +import android.content.DialogInterface; import android.content.SharedPreferences; +import android.content.res.TypedArray; import android.preference.DialogPreference; import android.preference.PreferenceManager; import android.util.AttributeSet; -import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.Button; @@ -31,12 +31,21 @@ import android.widget.Button; class BrowserYesNoPreference extends DialogPreference { private SharedPreferences mPrefs; private Context mContext; + private String mNeutralBtnTxt; + private String mPositiveBtnTxt; + private String mNegativeBtnTxt; + private boolean mNeutralBtnClicked = false; // This is the constructor called by the inflater public BrowserYesNoPreference(Context context, AttributeSet attrs) { super(context, attrs); mPrefs = PreferenceManager.getDefaultSharedPreferences(context); mContext = context; + final TypedArray a = mContext.obtainStyledAttributes(attrs, + R.styleable.BrowserYesNoPreference, 0, 0); + mNeutralBtnTxt = a.getString(R.styleable.BrowserYesNoPreference_neutralButtonText); + mPositiveBtnTxt = a.getString(R.styleable.BrowserYesNoPreference_positiveButtonText); + mNegativeBtnTxt = a.getString(R.styleable.BrowserYesNoPreference_negativeButtonText); } @Override @@ -60,11 +69,33 @@ class BrowserYesNoPreference extends DialogPreference { } @Override + protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { + super.onPrepareDialogBuilder(builder); + if (mNeutralBtnTxt != null) { + builder.setNeutralButton(mNeutralBtnTxt, this); + } + + if (mPositiveBtnTxt != null) { + builder.setPositiveButton(mPositiveBtnTxt, this); + } + + if (mNegativeBtnTxt != null) { + builder.setNegativeButton(mNegativeBtnTxt, this); + } + } + + @Override protected void onClick() { super.onClick(); } @Override + public void onClick(DialogInterface dialog, int which) { + super.onClick(dialog, which); + mNeutralBtnClicked = DialogInterface.BUTTON_NEUTRAL == which; + } + + @Override protected View onCreateDialogView() { if (PreferenceKeys.PREF_CLEAR_SELECTED_DATA.equals(getKey())) { String dialogMessage = mContext.getString(R.string.pref_privacy_clear_selected_dlg); @@ -115,11 +146,13 @@ class BrowserYesNoPreference extends DialogPreference { @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); + Integer result = (positiveResult) ? 1 : 0; - if (!positiveResult) - return; + if (mNeutralBtnTxt != null && mNeutralBtnClicked) { + result = 2; + } - if (callChangeListener(positiveResult)) { + if (callChangeListener(result)) { setEnabled(false); BrowserSettings settings = BrowserSettings.getInstance(); if (PreferenceKeys.PREF_CLEAR_SELECTED_DATA.equals(getKey())) { @@ -147,6 +180,16 @@ class BrowserYesNoPreference extends DialogPreference { setEnabled(true); } else if (PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES.equals( getKey())) { + if (mNeutralBtnClicked) { + settings.clearCache(); + settings.clearDatabases(); + settings.clearCookies(); + settings.clearHistory(); + settings.clearFormData(); + settings.clearPasswords(); + settings.clearLocationAccess(); + } + settings.resetDefaultPreferences(); setEnabled(true); } diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java index 0a5fa64b..00977f64 100644 --- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java +++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java @@ -156,13 +156,14 @@ public class AdvancedPreferencesFragment } else if (pref.getKey().equals(PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES)) { - Boolean value = (Boolean) objValue; - if (value.booleanValue() == true) { + Integer value = (Integer) objValue; + if (value.intValue() != 0) { PermissionsServiceFactory.resetDefaultPermissions(); mFragment.startActivity(new Intent(BrowserActivity.ACTION_RESTART, null, mFragment.getActivity(), BrowserActivity.class)); return true; } + } else if (pref.getKey().equals(PreferenceKeys.PREF_SEARCH_ENGINE)) { ListPreference lp = (ListPreference) pref; lp.setValue((String) objValue); diff --git a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java index e586cb50..55f346ce 100644 --- a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java +++ b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java @@ -42,6 +42,8 @@ import org.codeaurora.swe.WebRefiner; public class PrivacySecurityPreferencesFragment extends SWEPreferenceFragment implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener { + private Preference mClearPref; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -52,8 +54,8 @@ public class PrivacySecurityPreferencesFragment extends SWEPreferenceFragment websiteSettings.setFragment(WebsiteSettingsFragment.class.getName()); websiteSettings.setOnPreferenceClickListener(this); - Preference e = findPreference(PreferenceKeys.PREF_CLEAR_SELECTED_DATA); - e.setOnPreferenceChangeListener(this); + mClearPref = findPreference(PreferenceKeys.PREF_CLEAR_SELECTED_DATA); + mClearPref.setOnPreferenceChangeListener(this); readAndShowPermission("enable_geolocation", PermissionsServiceFactory.PermissionType.GEOLOCATION); @@ -120,7 +122,17 @@ public class PrivacySecurityPreferencesFragment extends SWEPreferenceFragment @Override public boolean onPreferenceChange(Preference pref, Object objValue) { - boolean flag = (boolean) objValue; + boolean flag = true; + if (pref == mClearPref) { + Integer value = (Integer) objValue; + if (value == 0) { + return false; + } + } else { + Boolean bFlag = (Boolean) objValue; + flag = bFlag.booleanValue(); + } + if (pref.getKey().equals(PreferenceKeys.PREF_CLEAR_SELECTED_DATA)) { if (pref.getPreferenceManager().getDefaultSharedPreferences( (Context) getActivity()).getBoolean( |