OSDN Git Service

Fix bugs in credential storage settings:
authorHung-ying Tyan <tyanh@google.com>
Wed, 30 Sep 2009 03:56:05 +0000 (11:56 +0800)
committerHung-ying Tyan <tyanh@google.com>
Wed, 30 Sep 2009 03:56:05 +0000 (11:56 +0800)
* resume credential storage settings in onResume() in case if a new
  activity changes the settings and switches back.
* reset mRetry in case the dialog is retried and canceled.
* update preferences in onDismiss handler in case the dialog is canceled
  and need to revert the checkbox.

src/com/android/settings/SecuritySettings.java

index 80300e0..5a4d26b 100644 (file)
@@ -231,6 +231,8 @@ public class SecuritySettings extends PreferenceActivity {
 
         mShowPassword.setChecked(Settings.System.getInt(getContentResolver(),
                 Settings.System.TEXT_SHOW_PASSWORD, 1) != 0);
+
+        mCstorHelper.resume();
     }
 
     @Override
@@ -362,7 +364,7 @@ public class SecuritySettings extends PreferenceActivity {
 
         private View mView;
         private int mDialogId;
-        private boolean mRetry = false;
+        private boolean mRetry;
         private CheckBoxPreference mAccessCheckBox;
         private Preference mResetButton;
 
@@ -383,6 +385,11 @@ public class SecuritySettings extends PreferenceActivity {
             }
         }
 
+        void resume() {
+            if (mExternalIntent != null) return;
+            updatePreferences(mKeyStore.test());
+        }
+
         private void updatePreferences(int state) {
             mAccessCheckBox.setEnabled(state != KeyStore.UNINITIALIZED);
             mAccessCheckBox.setChecked(state == KeyStore.NO_ERROR);
@@ -428,6 +435,7 @@ public class SecuritySettings extends PreferenceActivity {
 
         private void showCstorDialog(int dialogId) {
             mDialogId = dialogId;
+            mRetry = false;
             showDialog(dialogId);
         }
 
@@ -455,6 +463,7 @@ public class SecuritySettings extends PreferenceActivity {
                 showCstorDialog(mDialogId);
             } else {
                 removeDialog(mDialogId);
+                updatePreferences(mState); // may revert checkbox
 
                 if (mExternalIntent != null) {
                     finish();