summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/ChooseLockPattern.java
diff options
context:
space:
mode:
authorPaul Lawrence <paullawrence@google.com>2015-08-03 09:44:23 -0700
committerPaul Lawrence <paullawrence@google.com>2015-08-11 15:17:04 -0700
commitcff37ecbdd4a3d8f9b81fc295155bde5fcf8ea0c (patch)
treeb35816248524df05ad65c6bb5a712fd326721810 /src/com/android/settings/ChooseLockPattern.java
parent18d8682802460074f4b0e628bae4d4051d542c77 (diff)
downloadpackages_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.java58
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;
}
}
}