diff options
author | Roman Birg <roman@cyngn.com> | 2015-04-06 12:20:33 -0700 |
---|---|---|
committer | Roman Birg <roman@cyngn.com> | 2015-12-11 10:35:37 -0800 |
commit | bc86445070a5ea526242d8e4e4389d7824a75fd4 (patch) | |
tree | 53ca073a2382cf897012fe836a9eb9fde4a65263 | |
parent | f47c70b11106be8aa148c4788e06081df2ea0a1d (diff) | |
download | packages_apps_Settings-bc86445070a5ea526242d8e4e4389d7824a75fd4.zip packages_apps_Settings-bc86445070a5ea526242d8e4e4389d7824a75fd4.tar.gz packages_apps_Settings-bc86445070a5ea526242d8e4e4389d7824a75fd4.tar.bz2 |
Settings: handle decrypting larger pattern sizes
Change-Id: Id24d46829063171fa87cabb23a7da378726d7548
Signed-off-by: Roman Birg <roman@cyngn.com>
-rw-r--r-- | res/layout/crypt_keeper_pattern_entry.xml | 12 | ||||
-rw-r--r-- | res/layout/crypt_keeper_pattern_sizes.xml | 73 | ||||
-rw-r--r-- | src/com/android/settings/CryptKeeper.java | 37 |
3 files changed, 120 insertions, 2 deletions
diff --git a/res/layout/crypt_keeper_pattern_entry.xml b/res/layout/crypt_keeper_pattern_entry.xml index 00d3d6e..410f019 100644 --- a/res/layout/crypt_keeper_pattern_entry.xml +++ b/res/layout/crypt_keeper_pattern_entry.xml @@ -36,6 +36,18 @@ </LinearLayout> + <LinearLayout + android:id="@+id/pattern_sizes" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/crypt_keeper_pattern_margin" + android:layout_marginEnd="@dimen/crypt_keeper_pattern_margin" + android:orientation="horizontal"> + + <include layout="@layout/crypt_keeper_pattern_sizes" /> + + </LinearLayout> + <include layout="@layout/crypt_keeper_emergency_button" /> </LinearLayout> diff --git a/res/layout/crypt_keeper_pattern_sizes.xml b/res/layout/crypt_keeper_pattern_sizes.xml new file mode 100644 index 0000000..acbb238 --- /dev/null +++ b/res/layout/crypt_keeper_pattern_sizes.xml @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2015 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. +--> +<merge xmlns:android="http://schemas.android.com/apk/res/android"> + + <Button + android:id="@+id/lock_pattern_size_3" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:textSize="14sp" + android:fontFamily="sans-serif" + android:text="@string/lock_pattern_size_3" + android:textColor="@color/text_color_white" + android:layout_weight="1" + android:onClick="onPatternButtonClick" + style="?android:attr/borderlessButtonStyle"/> + + <Button + android:id="@+id/lock_pattern_size_4" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:textSize="14sp" + android:fontFamily="sans-serif" + android:text="@string/lock_pattern_size_4" + android:textColor="@color/text_color_white" + android:layout_weight="1" + android:onClick="onPatternButtonClick" + style="?android:attr/borderlessButtonStyle"/> + + <Button + android:id="@+id/lock_pattern_size_5" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:textSize="14sp" + android:fontFamily="sans-serif" + android:text="@string/lock_pattern_size_5" + android:textColor="@color/text_color_white" + android:layout_weight="1" + android:onClick="onPatternButtonClick" + style="?android:attr/borderlessButtonStyle"/> + + <Button + android:id="@+id/lock_pattern_size_6" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:textSize="14sp" + android:fontFamily="sans-serif" + android:text="@string/lock_pattern_size_6" + android:textColor="@color/text_color_white" + android:layout_weight="1" + android:onClick="onPatternButtonClick" + style="?android:attr/borderlessButtonStyle"/> + + +</merge > + diff --git a/src/com/android/settings/CryptKeeper.java b/src/com/android/settings/CryptKeeper.java index 94b4618..0bc0508 100644 --- a/src/com/android/settings/CryptKeeper.java +++ b/src/com/android/settings/CryptKeeper.java @@ -48,6 +48,8 @@ import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; import android.view.View.OnClickListener; import android.view.View.OnKeyListener; import android.view.View.OnTouchListener; @@ -208,6 +210,7 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList hide(R.id.lockPattern); hide(R.id.owner_info); hide(R.id.emergencyCallButton); + hide(R.id.pattern_sizes); } else if (failedAttempts == MAX_FAILED_ATTEMPTS) { // Factory reset the device. if(mMdtpActivated){ @@ -710,8 +713,13 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList if (mPasswordEntry != null) { mPasswordEntry.setEnabled(false); } + + final ViewGroup sizes = (ViewGroup) findViewById(R.id.status); if (mLockPatternView != null) { mLockPatternView.setEnabled(false); + if (sizes != null) { + sizes.setEnabled(false); + } } final TextView status = (TextView) findViewById(R.id.status); @@ -751,8 +759,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(new LockPatternUtils(CryptKeeper.this) - .patternToString(pattern)); + new DecryptTask().execute(LockPatternUtils.patternToString(pattern, + mLockPatternView.getLockPatternSize())); } else { // Allow user to make as many of these as they want. fakeUnlockAttempt(mLockPatternView); @@ -1059,4 +1067,29 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } + + public void onPatternButtonClick(View v) { + byte size; + switch (v.getId()) { + default: + case R.id.lock_pattern_size_3: + size = 3; + break; + case R.id.lock_pattern_size_4: + size = 4; + break; + case R.id.lock_pattern_size_5: + size = 5; + break; + case R.id.lock_pattern_size_6: + size = 6; + break; + } + if (mLockPatternView != null) { + setContentView(R.layout.crypt_keeper_pattern_entry); + passwordEntryInit(); + mLockPatternView.setLockPatternSize(size); + mLockPatternView.postInvalidate(); + } + } } |