diff options
author | Michael Bestas <mikeioannina@gmail.com> | 2013-12-12 05:40:54 +0200 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2015-12-11 10:34:04 -0800 |
commit | 0dbfd2ee3c769c4f4bbd544509aad5ef5d7ecc44 (patch) | |
tree | c0f4865990c2f2afe97aded2a60d19c45fb7fd00 /src/com/android/settings | |
parent | 497f2b7f60caf512f5ce549281c0a4385e07d863 (diff) | |
download | packages_apps_Settings-0dbfd2ee3c769c4f4bbd544509aad5ef5d7ecc44.zip packages_apps_Settings-0dbfd2ee3c769c4f4bbd544509aad5ef5d7ecc44.tar.gz packages_apps_Settings-0dbfd2ee3c769c4f4bbd544509aad5ef5d7ecc44.tar.bz2 |
Settings: forward port lock pattern grid size (2/2)
Change-Id: I7078d703c218cd096d9b77c003a94b52fbce6322
Diffstat (limited to 'src/com/android/settings')
-rw-r--r-- | src/com/android/settings/ChooseLockPattern.java | 39 | ||||
-rw-r--r-- | src/com/android/settings/ChooseLockPatternSize.java | 94 | ||||
-rw-r--r-- | src/com/android/settings/ConfirmLockPattern.java | 4 | ||||
-rw-r--r-- | src/com/android/settings/CryptKeeper.java | 3 |
4 files changed, 126 insertions, 14 deletions
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java index 1dd24f2..926884c 100644 --- a/src/com/android/settings/ChooseLockPattern.java +++ b/src/com/android/settings/ChooseLockPattern.java @@ -75,7 +75,7 @@ public class ChooseLockPattern extends SettingsActivity { public static Intent createIntent(Context context, boolean requirePassword, boolean confirmCredentials) { - Intent intent = new Intent(context, ChooseLockPattern.class); + Intent intent = new Intent(context, ChooseLockPatternSize.class); intent.putExtra("key_lock_method", "pattern"); intent.putExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, confirmCredentials); intent.putExtra(EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, requirePassword); @@ -148,16 +148,12 @@ public class ChooseLockPattern extends SettingsActivity { private TextView mFooterRightButton; protected List<LockPatternView.Cell> mChosenPattern = null; + private byte mPatternSize = LockPatternUtils.PATTERN_SIZE_DEFAULT; + /** * The patten used during the help screen to show how to draw a pattern. */ - private final List<LockPatternView.Cell> mAnimatePattern = - Collections.unmodifiableList(Lists.newArrayList( - LockPatternView.Cell.of(0, 0), - LockPatternView.Cell.of(0, 1), - LockPatternView.Cell.of(1, 1), - LockPatternView.Cell.of(2, 1) - )); + private List<LockPatternView.Cell> mAnimatePattern; @Override public void onActivityResult(int requestCode, int resultCode, @@ -373,6 +369,17 @@ public class ChooseLockPattern extends SettingsActivity { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + mPatternSize = getActivity().getIntent().getByteExtra("pattern_size", + LockPatternUtils.PATTERN_SIZE_DEFAULT); + LockPatternView.Cell.updateSize(mPatternSize); + mAnimatePattern = Collections.unmodifiableList(Lists.newArrayList( + LockPatternView.Cell.of(0, 0, mPatternSize), + LockPatternView.Cell.of(0, 1, mPatternSize), + LockPatternView.Cell.of(1, 1, mPatternSize), + LockPatternView.Cell.of(2, 1, mPatternSize) + )); + return inflater.inflate(R.layout.choose_lock_pattern, container, false); } @@ -384,6 +391,8 @@ public class ChooseLockPattern extends SettingsActivity { mLockPatternView.setOnPatternListener(mChooseNewLockPatternListener); mLockPatternView.setTactileFeedbackEnabled( mChooseLockSettingsHelper.utils().isTactileFeedbackEnabled()); + mLockPatternView.setLockPatternUtils(mChooseLockSettingsHelper.utils()); + mLockPatternView.setLockPatternSize(mPatternSize); mFooterText = (TextView) view.findViewById(R.id.footerText); @@ -427,7 +436,9 @@ public class ChooseLockPattern extends SettingsActivity { // restore from previous state final String patternString = savedInstanceState.getString(KEY_PATTERN_CHOICE); if (patternString != null) { - mChosenPattern = LockPatternUtils.stringToPattern(patternString); + LockPatternUtils utils = mChooseLockSettingsHelper.utils(); + mChosenPattern = LockPatternUtils.stringToPattern(patternString, + utils.getLockPatternSize()); } if (mCurrentPattern == null) { @@ -529,8 +540,9 @@ public class ChooseLockPattern extends SettingsActivity { outState.putInt(KEY_UI_STAGE, mUiStage.ordinal()); if (mChosenPattern != null) { + LockPatternUtils utils = mChooseLockSettingsHelper.utils(); outState.putString(KEY_PATTERN_CHOICE, - LockPatternUtils.patternToString(mChosenPattern)); + utils.patternToString(mChosenPattern)); } if (mCurrentPattern != null) { @@ -645,7 +657,7 @@ public class ChooseLockPattern extends SettingsActivity { final boolean required = getActivity().getIntent().getBooleanExtra( EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true); mSaveAndFinishWorker.start(mChooseLockSettingsHelper.utils(), required, - mHasChallenge, mChallenge, mChosenPattern, mCurrentPattern); + mHasChallenge, mChallenge, mChosenPattern, mCurrentPattern, mPatternSize); } @Override @@ -667,14 +679,16 @@ public class ChooseLockPattern extends SettingsActivity { private List<LockPatternView.Cell> mChosenPattern; private String mCurrentPattern; private boolean mLockVirgin; + private byte mPatternSize; public void start(LockPatternUtils utils, boolean credentialRequired, boolean hasChallenge, long challenge, - List<LockPatternView.Cell> chosenPattern, String currentPattern) { + List<LockPatternView.Cell> chosenPattern, String currentPattern, byte patternSize) { prepare(utils, credentialRequired, hasChallenge, challenge); mCurrentPattern = currentPattern; mChosenPattern = chosenPattern; + mPatternSize = patternSize; mLockVirgin = !mUtils.isPatternEverChosen(UserHandle.myUserId()); @@ -685,6 +699,7 @@ public class ChooseLockPattern extends SettingsActivity { protected Intent saveAndVerifyInBackground() { Intent result = null; final int userId = UserHandle.myUserId(); + mUtils.setLockPatternSize(mPatternSize); mUtils.saveLockPattern(mChosenPattern, mCurrentPattern, userId); if (mHasChallenge) { diff --git a/src/com/android/settings/ChooseLockPatternSize.java b/src/com/android/settings/ChooseLockPatternSize.java new file mode 100644 index 0000000..814454d --- /dev/null +++ b/src/com/android/settings/ChooseLockPatternSize.java @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2012-2013 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings; + +import android.content.Intent; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceScreen; + +import com.android.internal.logging.MetricsConstants; +import com.android.internal.widget.LockPatternUtils; + +public class ChooseLockPatternSize extends PreferenceActivity { + + @Override + public Intent getIntent() { + Intent modIntent = new Intent(super.getIntent()); + modIntent.putExtra(EXTRA_SHOW_FRAGMENT, ChooseLockPatternSizeFragment.class.getName()); + modIntent.putExtra(EXTRA_NO_HEADERS, true); + return modIntent; + } + + @Override + protected boolean isValidFragment(String fragmentName) { + if (ChooseLockPatternSizeFragment.class.getName().equals(fragmentName)) return true; + return false; + } + + public static class ChooseLockPatternSizeFragment extends SettingsPreferenceFragment { + private ChooseLockSettingsHelper mChooseLockSettingsHelper; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity()); + if (!(getActivity() instanceof ChooseLockPatternSize)) { + throw new SecurityException("Fragment contained in wrong activity"); + } + addPreferencesFromResource(R.xml.security_settings_pattern_size); + } + + @Override + public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, + Preference preference) { + final String key = preference.getKey(); + + byte patternSize; + if ("lock_pattern_size_4".equals(key)) { + patternSize = 4; + } else if ("lock_pattern_size_5".equals(key)) { + patternSize = 5; + } else if ("lock_pattern_size_6".equals(key)) { + patternSize = 6; + } else { + patternSize = 3; + } + + final boolean isFallback = getActivity().getIntent() + .getBooleanExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, false); + + Intent intent = new Intent(getActivity(), ChooseLockPattern.class); + intent.putExtra("pattern_size", patternSize); + intent.putExtra("key_lock_method", "pattern"); + intent.putExtra("confirm_credentials", false); + intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, + isFallback); + intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); + startActivity(intent); + + finish(); + return true; + } + + @Override + protected int getMetricsCategory() { + return MetricsConstants.DONT_TRACK_ME_BRO; + } + } +} diff --git a/src/com/android/settings/ConfirmLockPattern.java b/src/com/android/settings/ConfirmLockPattern.java index 94ba01a..a402b4b 100644 --- a/src/com/android/settings/ConfirmLockPattern.java +++ b/src/com/android/settings/ConfirmLockPattern.java @@ -16,6 +16,7 @@ package com.android.settings; +import android.os.UserHandle; import com.android.internal.logging.MetricsLogger; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternView; @@ -145,6 +146,7 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity { mLockPatternUtils.isTactileFeedbackEnabled()); mLockPatternView.setInStealthMode(!mLockPatternUtils.isVisiblePatternEnabled( mEffectiveUserId)); + mLockPatternView.setLockPatternSize(mLockPatternUtils.getLockPatternSize()); mLockPatternView.setOnPatternListener(mConfirmExistingLockPatternListener); updateStage(Stage.NeedToUnlock); @@ -457,7 +459,7 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity { intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_TYPE, StorageManager.CRYPT_TYPE_PATTERN); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD, - LockPatternUtils.patternToString(pattern)); + mLockPatternUtils.patternToString(pattern)); } mCredentialCheckResultTracker.setResult(matched, intent, timeoutMs, localEffectiveUserId); diff --git a/src/com/android/settings/CryptKeeper.java b/src/com/android/settings/CryptKeeper.java index 8e4aae9..94b4618 100644 --- a/src/com/android/settings/CryptKeeper.java +++ b/src/com/android/settings/CryptKeeper.java @@ -751,7 +751,8 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList public void onPatternDetected(List<LockPatternView.Cell> pattern) { mLockPatternView.setEnabled(false); if (pattern.size() >= MIN_LENGTH_BEFORE_REPORT) { - new DecryptTask().execute(LockPatternUtils.patternToString(pattern)); + new DecryptTask().execute(new LockPatternUtils(CryptKeeper.this) + .patternToString(pattern)); } else { // Allow user to make as many of these as they want. fakeUnlockAttempt(mLockPatternView); |