diff options
author | Amith Yamasani <yamasani@google.com> | 2009-08-28 15:36:52 -0700 |
---|---|---|
committer | Amith Yamasani <yamasani@google.com> | 2009-08-28 17:10:46 -0700 |
commit | 11cd8c5ac95334c9363a82fd81d05d85623f9d17 (patch) | |
tree | cc9c499b20abd820330cc3fd4b89668940e978c8 | |
parent | 98fa0e2941a86284d3eaae8c60fbde4a2410b786 (diff) | |
download | packages_apps_Settings-11cd8c5ac95334c9363a82fd81d05d85623f9d17.zip packages_apps_Settings-11cd8c5ac95334c9363a82fd81d05d85623f9d17.tar.gz packages_apps_Settings-11cd8c5ac95334c9363a82fd81d05d85623f9d17.tar.bz2 |
Fix for 1785342: The old PIN is required after entering New PIN
State of dialogs was not properly maintained across pause/resume.
-rw-r--r-- | src/com/android/settings/EditPinPreference.java | 25 | ||||
-rw-r--r-- | src/com/android/settings/IccLockSettings.java | 12 |
2 files changed, 19 insertions, 18 deletions
diff --git a/src/com/android/settings/EditPinPreference.java b/src/com/android/settings/EditPinPreference.java index ee3143c..362bed1 100644 --- a/src/com/android/settings/EditPinPreference.java +++ b/src/com/android/settings/EditPinPreference.java @@ -16,6 +16,7 @@ package com.android.settings; +import android.app.Dialog; import android.content.Context; import android.preference.EditTextPreference; import android.text.method.DigitsKeyListener; @@ -24,15 +25,11 @@ import android.util.AttributeSet; import android.view.View; import android.widget.EditText; -import java.util.Map; - /** * TODO: Add a soft dialpad for PIN entry. */ class EditPinPreference extends EditTextPreference { - private boolean mDialogOpen; - interface OnPinEnteredListener { void onPinEntered(EditPinPreference preference, boolean positiveResult); } @@ -50,13 +47,13 @@ class EditPinPreference extends EditTextPreference { public void setOnPinEnteredListener(OnPinEnteredListener listener) { mPinListener = listener; } - + @Override protected void onBindDialogView(View view) { super.onBindDialogView(view); - + final EditText editText = (EditText) view.findViewById(android.R.id.edit); - + if (editText != null) { editText.setSingleLine(true); editText.setTransformationMethod(PasswordTransformationMethod.getInstance()); @@ -65,20 +62,22 @@ class EditPinPreference extends EditTextPreference { } public boolean isDialogOpen() { - return mDialogOpen; + Dialog dialog = getDialog(); + return dialog != null && dialog.isShowing(); } - + @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); - mDialogOpen = false; if (mPinListener != null) { mPinListener.onPinEntered(this, positiveResult); } } - + public void showPinDialog() { - mDialogOpen = true; - showDialog(null); + Dialog dialog = getDialog(); + if (dialog == null || !dialog.isShowing()) { + showDialog(null); + } } } diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java index 18beb32..3a7a708 100644 --- a/src/com/android/settings/IccLockSettings.java +++ b/src/com/android/settings/IccLockSettings.java @@ -261,10 +261,13 @@ public class IccLockSettings extends PreferenceActivity mPinToggle.setChecked(!mToState); mDialogState = ICC_LOCK_MODE; showPinDialog(); + } else if (preference == mPinDialog) { + mDialogState = ICC_OLD_MODE; + return false; } return true; } - + private void tryChangeIccLockState() { // Try to change icc lock. If it succeeds, toggle the lock state and // reset dialog state. Else inject error message and show dialog again. @@ -277,7 +280,6 @@ public class IccLockSettings extends PreferenceActivity if (success) { mPinToggle.setChecked(mToState); } else { - // TODO: I18N Toast.makeText(this, mRes.getString(R.string.sim_lock_failed), Toast.LENGTH_SHORT) .show(); } @@ -286,7 +288,6 @@ public class IccLockSettings extends PreferenceActivity private void iccPinChanged(boolean success) { if (!success) { - // TODO: I18N Toast.makeText(this, mRes.getString(R.string.sim_change_failed), Toast.LENGTH_SHORT) .show(); @@ -304,7 +305,7 @@ public class IccLockSettings extends PreferenceActivity mPhone.getIccCard().changeIccLockPassword(mOldPin, mNewPin, callback); } - + private boolean reasonablePin(String pin) { if (pin == null || pin.length() < MIN_PIN_LENGTH || pin.length() > MAX_PIN_LENGTH) { return false; @@ -312,11 +313,12 @@ public class IccLockSettings extends PreferenceActivity return true; } } - + private void resetDialogState() { mError = null; mDialogState = ICC_OLD_MODE; // Default for when Change PIN is clicked mPin = ""; setDialogValues(); + mDialogState = OFF_MODE; } } |