diff options
-rw-r--r-- | AndroidManifest.xml | 2 | ||||
-rw-r--r-- | res/values/strings.xml | 6 | ||||
-rw-r--r-- | res/xml/security_settings_pattern_size.xml | 36 | ||||
-rw-r--r-- | src/com/android/settings/ChooseLockGeneric.java | 4 | ||||
-rw-r--r-- | src/com/android/settings/ChooseLockPattern.java | 27 | ||||
-rw-r--r-- | src/com/android/settings/ChooseLockPatternSize.java | 83 | ||||
-rw-r--r-- | src/com/android/settings/ChooseLockPatternTutorial.java | 19 | ||||
-rw-r--r-- | src/com/android/settings/ConfirmLockPattern.java | 3 |
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(); |