summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml2
-rw-r--r--res/values/strings.xml6
-rw-r--r--res/xml/security_settings_pattern_size.xml36
-rw-r--r--src/com/android/settings/ChooseLockGeneric.java4
-rw-r--r--src/com/android/settings/ChooseLockPattern.java27
-rw-r--r--src/com/android/settings/ChooseLockPatternSize.java83
-rw-r--r--src/com/android/settings/ChooseLockPatternTutorial.java19
-rw-r--r--src/com/android/settings/ConfirmLockPattern.java3
8 files changed, 162 insertions, 18 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 84171ef..53a838d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -953,6 +953,8 @@
</intent-filter>
</activity>
+ <activity android:name="ChooseLockPatternSize" android:exported="false"/>
+
<activity android:name="ChooseLockPattern" android:exported="false"/>
<activity android:name="ChooseLockPassword" android:exported="false"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a906c98..a589807 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -869,6 +869,12 @@
<!-- Summary for "Configure lockscreen" when security password is enabled [CHAR LIMIT=45] -->
<string name="unlock_set_unlock_mode_password">Password</string>
+ <!-- Sizes for pattern lockscreen -->
+ <string name="lock_pattern_size_3">3x3</string>
+ <string name="lock_pattern_size_4">4x4</string>
+ <string name="lock_pattern_size_5">5x5</string>
+ <string name="lock_pattern_size_6">6x6</string>
+
<!-- Title for option to turn of password/pin/pattern unlock. [CHAR LIMIT=22] -->
<string name="unlock_disable_lock_title">Turn off screen lock</string>
diff --git a/res/xml/security_settings_pattern_size.xml b/res/xml/security_settings_pattern_size.xml
new file mode 100644
index 0000000..458efb6
--- /dev/null
+++ b/res/xml/security_settings_pattern_size.xml
@@ -0,0 +1,36 @@
+<!-- Copyright (C) 2012 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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+ <PreferenceScreen
+ android:key="lock_pattern_size_3"
+ android:title="@string/lock_pattern_size_3"
+ android:persistent="false"/>
+
+ <PreferenceScreen
+ android:key="lock_pattern_size_4"
+ android:title="@string/lock_pattern_size_4"
+ android:persistent="false"/>
+
+ <PreferenceScreen
+ android:key="lock_pattern_size_5"
+ android:title="@string/lock_pattern_size_5"
+ android:persistent="false"/>
+
+ <PreferenceScreen
+ android:key="lock_pattern_size_6"
+ android:title="@string/lock_pattern_size_6"
+ android:persistent="false"/>
+</PreferenceScreen>
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 6854305..f191079 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -385,9 +385,7 @@ public class ChooseLockGeneric extends PreferenceActivity {
} else if (quality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) {
boolean showTutorial = !mChooseLockSettingsHelper.utils().isPatternEverChosen();
Intent intent = new Intent();
- intent.setClass(getActivity(), showTutorial
- ? ChooseLockPatternTutorial.class
- : ChooseLockPattern.class);
+ intent.setClass(getActivity(), ChooseLockPatternSize.class);
intent.putExtra("key_lock_method", "pattern");
intent.putExtra(CONFIRM_CREDENTIALS, false);
intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK,
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index f9c01b6..b7c14dd 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -103,16 +103,12 @@ public class ChooseLockPattern extends PreferenceActivity {
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,
@@ -307,6 +303,15 @@ public class ChooseLockPattern extends PreferenceActivity {
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)
+ ));
+
// setupViews()
View view = inflater.inflate(R.layout.choose_lock_pattern, null);
mHeaderText = (TextView) view.findViewById(R.id.headerText);
@@ -314,6 +319,7 @@ public class ChooseLockPattern extends PreferenceActivity {
mLockPatternView.setOnPatternListener(mChooseNewLockPatternListener);
mLockPatternView.setTactileFeedbackEnabled(
mChooseLockSettingsHelper.utils().isTactileFeedbackEnabled());
+ mLockPatternView.setLockPatternSize(mPatternSize);
mFooterText = (TextView) view.findViewById(R.id.footerText);
@@ -351,7 +357,8 @@ public class ChooseLockPattern extends PreferenceActivity {
// restore from previous state
final String patternString = savedInstanceState.getString(KEY_PATTERN_CHOICE);
if (patternString != null) {
- mChosenPattern = LockPatternUtils.stringToPattern(patternString);
+ LockPatternUtils utils = mChooseLockSettingsHelper.utils();
+ mChosenPattern = utils.stringToPattern(patternString);
}
updateStage(Stage.values()[savedInstanceState.getInt(KEY_UI_STAGE)]);
}
@@ -417,8 +424,9 @@ public class ChooseLockPattern extends PreferenceActivity {
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));
}
}
@@ -516,6 +524,7 @@ public class ChooseLockPattern extends PreferenceActivity {
final boolean isFallback = getActivity().getIntent()
.getBooleanExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, false);
+ utils.setLockPatternSize(mPatternSize);
utils.saveLockPattern(mChosenPattern, isFallback);
utils.setLockPatternEnabled(true);
diff --git a/src/com/android/settings/ChooseLockPatternSize.java b/src/com/android/settings/ChooseLockPatternSize.java
new file mode 100644
index 0000000..f6f25c2
--- /dev/null
+++ b/src/com/android/settings/ChooseLockPatternSize.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2012 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.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;
+ }
+
+ public static class ChooseLockPatternSizeFragment extends SettingsPreferenceFragment {
+ private ChooseLockSettingsHelper mChooseLockSettingsHelper;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity());
+ 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);
+ boolean showTutorial = !mChooseLockSettingsHelper.utils().isPatternEverChosen();
+
+ Intent intent = new Intent();
+ intent.setClass(getActivity(), showTutorial
+ ? ChooseLockPatternTutorial.class
+ : 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;
+ }
+ }
+}
diff --git a/src/com/android/settings/ChooseLockPatternTutorial.java b/src/com/android/settings/ChooseLockPatternTutorial.java
index 5dbd616..66e40c1 100644
--- a/src/com/android/settings/ChooseLockPatternTutorial.java
+++ b/src/com/android/settings/ChooseLockPatternTutorial.java
@@ -57,12 +57,15 @@ public class ChooseLockPatternTutorial extends PreferenceActivity {
private View mSkipButton;
private LockPatternView mPatternView;
+ private byte mPatternSize = LockPatternUtils.PATTERN_SIZE_DEFAULT;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Don't show the tutorial if the user has seen it before.
LockPatternUtils lockPatternUtils = new LockPatternUtils(getActivity());
if (savedInstanceState == null && lockPatternUtils.isPatternEverChosen()) {
+ mPatternSize = getActivity().getIntent().getByteExtra("pattern_size", LockPatternUtils.PATTERN_SIZE_DEFAULT);
Intent intent = new Intent(getActivity(), ChooseLockPattern.class);
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
intent.putExtra("confirm_credentials", false);
@@ -70,6 +73,7 @@ public class ChooseLockPatternTutorial extends PreferenceActivity {
.getBooleanExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, false);
intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK,
isFallback);
+ intent.putExtra("pattern_size", mPatternSize);
startActivity(intent);
getActivity().finish();
}
@@ -84,13 +88,17 @@ public class ChooseLockPatternTutorial extends PreferenceActivity {
mSkipButton = view.findViewById(R.id.skip_button);
mSkipButton.setOnClickListener(this);
+ mPatternSize = getActivity().getIntent().getByteExtra("pattern_size", LockPatternUtils.PATTERN_SIZE_DEFAULT);
+
// Set up LockPatternView to be a non-interactive demo animation
- mPatternView = (LockPatternView) view.findViewById(R.id.lockPattern);
+ LockPatternView.Cell.updateSize(mPatternSize);
ArrayList<LockPatternView.Cell> demoPattern = new ArrayList<LockPatternView.Cell>();
- demoPattern.add(LockPatternView.Cell.of(0,0));
- demoPattern.add(LockPatternView.Cell.of(0,1));
- demoPattern.add(LockPatternView.Cell.of(1,1));
- demoPattern.add(LockPatternView.Cell.of(2,1));
+ demoPattern.add(LockPatternView.Cell.of(0,0, mPatternSize));
+ demoPattern.add(LockPatternView.Cell.of(0,1, mPatternSize));
+ demoPattern.add(LockPatternView.Cell.of(1,1, mPatternSize));
+ demoPattern.add(LockPatternView.Cell.of(2,1, mPatternSize));
+ mPatternView = (LockPatternView) view.findViewById(R.id.lockPattern);
+ mPatternView.setLockPatternSize(mPatternSize);
mPatternView.setPattern(LockPatternView.DisplayMode.Animate, demoPattern);
mPatternView.disableInput();
@@ -109,6 +117,7 @@ public class ChooseLockPatternTutorial extends PreferenceActivity {
intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK,
isFallback);
+ intent.putExtra("pattern_size", mPatternSize);
startActivity(intent);
getActivity().overridePendingTransition(0, 0); // no animation
getActivity().finish();
diff --git a/src/com/android/settings/ConfirmLockPattern.java b/src/com/android/settings/ConfirmLockPattern.java
index dd375cc..b2cd568 100644
--- a/src/com/android/settings/ConfirmLockPattern.java
+++ b/src/com/android/settings/ConfirmLockPattern.java
@@ -131,6 +131,7 @@ public class ConfirmLockPattern extends PreferenceActivity {
}
mLockPatternView.setTactileFeedbackEnabled(mLockPatternUtils.isTactileFeedbackEnabled());
+ mLockPatternView.setLockPatternSize(mLockPatternUtils.getLockPatternSize());
mLockPatternView.setOnPatternListener(mConfirmExistingLockPatternListener);
updateStage(Stage.NeedToUnlock);
@@ -262,7 +263,7 @@ public class ConfirmLockPattern extends PreferenceActivity {
Intent intent = new Intent();
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD,
- LockPatternUtils.patternToString(pattern));
+ mLockPatternUtils.patternToString(pattern));
getActivity().setResult(Activity.RESULT_OK, intent);
getActivity().finish();