diff options
author | Paul Lawrence <paullawrence@google.com> | 2015-08-03 09:44:23 -0700 |
---|---|---|
committer | Paul Lawrence <paullawrence@google.com> | 2015-08-11 15:17:04 -0700 |
commit | cff37ecbdd4a3d8f9b81fc295155bde5fcf8ea0c (patch) | |
tree | b35816248524df05ad65c6bb5a712fd326721810 /src/com/android/settings/ChooseLockPattern.java | |
parent | 18d8682802460074f4b0e628bae4d4051d542c77 (diff) | |
download | packages_apps_Settings-cff37ecbdd4a3d8f9b81fc295155bde5fcf8ea0c.zip packages_apps_Settings-cff37ecbdd4a3d8f9b81fc295155bde5fcf8ea0c.tar.gz packages_apps_Settings-cff37ecbdd4a3d8f9b81fc295155bde5fcf8ea0c.tar.bz2 |
Gray out confirm button on pattern/pin/password set dialog
Setting a pin/pattern/password can take a second. Gray out the confirm
button to avoid multiple submissions.
Note that this requires async tasks so that the button is shown as gray
in a timely way.
Also don't add another stage - this causes a11y to repeat the title.
Bug: 22882174
Change-Id: Ib8047fde9e12afa25e82ebfa3a1e799a4b7043f2
Diffstat (limited to 'src/com/android/settings/ChooseLockPattern.java')
-rw-r--r-- | src/com/android/settings/ChooseLockPattern.java | 58 |
1 files changed, 35 insertions, 23 deletions
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java index 087a23e..026fd46 100644 --- a/src/com/android/settings/ChooseLockPattern.java +++ b/src/com/android/settings/ChooseLockPattern.java @@ -346,7 +346,6 @@ public class ChooseLockPattern extends SettingsActivity { } private Stage mUiStage = Stage.Introduction; - private boolean mDone = false; private Runnable mClearPatternRunnable = new Runnable() { public void run() { @@ -435,7 +434,6 @@ public class ChooseLockPattern extends SettingsActivity { } updateStage(Stage.values()[savedInstanceState.getInt(KEY_UI_STAGE)]); } - mDone = false; } @Override @@ -483,7 +481,7 @@ public class ChooseLockPattern extends SettingsActivity { throw new IllegalStateException("expected ui stage " + Stage.ChoiceConfirmed + " when button is " + RightButtonMode.Confirm); } - saveChosenPatternAndFinish(); + new SaveChosenPatternAndFinish().execute(); } else if (mUiStage.rightMode == RightButtonMode.Ok) { if (mUiStage != Stage.HelpScreen) { throw new IllegalStateException("Help screen is only mode with ok button, " @@ -623,34 +621,49 @@ public class ChooseLockPattern extends SettingsActivity { mLockPatternView.postDelayed(mClearPatternRunnable, WRONG_PATTERN_CLEAR_TIMEOUT_MS); } - private void saveChosenPatternAndFinish() { - if (mDone) return; - LockPatternUtils utils = mChooseLockSettingsHelper.utils(); - final boolean lockVirgin = !utils.isPatternEverChosen(UserHandle.myUserId()); + private class SaveChosenPatternAndFinish extends AsyncTask<Void,Void,Void> { + boolean mLockVirgin; + LockPatternUtils mUtils; + boolean mWasSecureBefore; - boolean wasSecureBefore = utils.isSecure(UserHandle.myUserId()); + @Override + protected void onPreExecute(){ + setRightButtonEnabled(false); + mUtils = mChooseLockSettingsHelper.utils(); + mLockVirgin = !mUtils.isPatternEverChosen(UserHandle.myUserId()); - final boolean required = getActivity().getIntent().getBooleanExtra( + mWasSecureBefore = mUtils.isSecure(UserHandle.myUserId()); + + final boolean required = getActivity().getIntent().getBooleanExtra( EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true); - utils.setCredentialRequiredToDecrypt(required); - utils.saveLockPattern(mChosenPattern, mCurrentPattern, UserHandle.myUserId()); + mUtils.setCredentialRequiredToDecrypt(required); + } - if (lockVirgin) { - utils.setVisiblePatternEnabled(true, UserHandle.myUserId()); + @Override + protected Void doInBackground(Void... params){ + mUtils.saveLockPattern(mChosenPattern, mCurrentPattern, UserHandle.myUserId()); + return null; } - if (mHasChallenge) { - startVerifyPattern(utils, wasSecureBefore); - } else { - if (!wasSecureBefore) { - Intent intent = getRedactionInterstitialIntent(getActivity()); - if (intent != null) { - startActivity(intent); + @Override + protected void onPostExecute(Void param) { + if (mLockVirgin) { + mUtils.setVisiblePatternEnabled(true, UserHandle.myUserId()); + } + + if (mHasChallenge) { + startVerifyPattern(mUtils, mWasSecureBefore); + } else { + if (!mWasSecureBefore) { + Intent intent = getRedactionInterstitialIntent(getActivity()); + if (intent != null) { + startActivity(intent); + } } + getActivity().setResult(RESULT_FINISHED); + doFinish(); } - getActivity().setResult(RESULT_FINISHED); - doFinish(); } } @@ -693,7 +706,6 @@ public class ChooseLockPattern extends SettingsActivity { private void doFinish() { getActivity().finish(); - mDone = true; } } } |