summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings
diff options
context:
space:
mode:
authorMichael Bestas <mikeioannina@gmail.com>2013-12-12 05:40:54 +0200
committerGerrit Code Review <gerrit@cyanogenmod.org>2015-12-11 10:34:04 -0800
commit0dbfd2ee3c769c4f4bbd544509aad5ef5d7ecc44 (patch)
treec0f4865990c2f2afe97aded2a60d19c45fb7fd00 /src/com/android/settings
parent497f2b7f60caf512f5ce549281c0a4385e07d863 (diff)
downloadpackages_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.java39
-rw-r--r--src/com/android/settings/ChooseLockPatternSize.java94
-rw-r--r--src/com/android/settings/ConfirmLockPattern.java4
-rw-r--r--src/com/android/settings/CryptKeeper.java3
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);