Fix 2373088: Update SecuritySettings with new layout and minor logic tweaks.
diff --git a/res/drawable-hdpi/password_field_default.9.png b/res/drawable-hdpi/password_field_default.9.png
new file mode 100644
index 0000000..2c424f0
--- /dev/null
+++ b/res/drawable-hdpi/password_field_default.9.png
Binary files differ
diff --git a/res/drawable-mdpi/password_field_default.9.png b/res/drawable-mdpi/password_field_default.9.png
new file mode 100644
index 0000000..3193275
--- /dev/null
+++ b/res/drawable-mdpi/password_field_default.9.png
Binary files differ
diff --git a/res/layout-land/choose_lock_password.xml b/res/layout-land/choose_lock_password.xml
new file mode 100644
index 0000000..eba936a
--- /dev/null
+++ b/res/layout-land/choose_lock_password.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2008, The Android Open Source 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.
+*/
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:background="@android:color/background_dark"
+ android:gravity="center_horizontal">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+ <!-- "Enter PIN(Password) to unlock" -->
+ <TextView android:id="@+id/headerText"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:orientation="horizontal"
+ android:layout_marginRight="6dip"
+ android:layout_marginLeft="6dip"
+ android:layout_marginTop="10dip"
+ android:layout_marginBottom="10dip"
+ android:gravity="left"
+ android:ellipsize="marquee"
+ android:textAppearance="?android:attr/textAppearanceLarge"
+ />
+
+ <!-- Password entry field -->
+ <EditText android:id="@+id/password_entry"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:singleLine="true"
+ android:textStyle="bold"
+ android:inputType="textPassword"
+ android:gravity="center"
+ android:layout_gravity="center"
+ android:textSize="24sp"
+ android:textAppearance="?android:attr/textAppearanceLarge"
+ android:background="@drawable/password_field_default"
+ android:textColor="#ffffffff"
+ />
+ </LinearLayout>
+
+ <!-- Spacer between password entry and keyboard -->
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="0dip"
+ android:layout_weight="1" />
+
+ <!-- Alphanumeric keyboard -->
+ <com.android.internal.widget.PasswordEntryKeyboardView android:id="@+id/keyboard"
+ android:layout_alignParentBottom="true"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="#00000000"
+ android:keyBackground="@*android:drawable/btn_keyboard_key_fulltrans"
+ />
+
+ <RelativeLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="@android:drawable/bottom_bar">
+
+ <Button android:id="@+id/cancel_button"
+ android:layout_width="150dip"
+ android:layout_height="wrap_content"
+ android:layout_margin="5dip"
+ android:layout_alignParentLeft="true"
+ android:text="@string/password_cancel_button_label"
+ />
+
+ <Button android:id="@+id/next_button"
+ android:layout_width="150dip"
+ android:layout_height="wrap_content"
+ android:layout_margin="5dip"
+ android:layout_alignParentRight="true"
+ android:drawableRight="@drawable/ic_btn_next"
+ android:drawablePadding="10dip"
+ android:text="@string/password_ok_button_label"
+ />
+
+ </RelativeLayout>
+
+</LinearLayout>
diff --git a/res/layout-land/choose_lock_pin.xml b/res/layout-land/choose_lock_pin.xml
deleted file mode 100644
index cdc75d3..0000000
--- a/res/layout-land/choose_lock_pin.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-**
-** Copyright 2008, The Android Open Source 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.
-*/
--->
-
-<!-- TODO: think about moving to frameworks/base/res -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="horizontal"
- android:background="@android:color/background_dark">
-
- <LinearLayout android:id="@+id/topDisplayGroup"
- android:layout_width="0dip"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <!-- password entry -->
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_marginRight="6dip"
- android:layout_marginLeft="6dip"
- android:gravity="center_vertical"
- android:background="@android:drawable/edit_text">
-
- <!-- displays dots as user enters pin -->
- <TextView android:id="@+id/pinDisplay"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:maxLines="1"
- android:textAppearance="?android:attr/textAppearanceLargeInverse"
- android:textStyle="bold"
- android:inputType="textPassword"
- />
-
- <ImageButton android:id="@+id/backspace"
- android:src="@android:drawable/ic_input_delete"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="-3dip"
- android:layout_marginBottom="-3dip"
- />
- </LinearLayout>
-
- <!-- header text ('Enter Pin') -->
- <TextView android:id="@+id/headerText"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:lines="2"
- android:textAppearance="?android:attr/textAppearanceLarge"/>
-
- </LinearLayout>
-
- <include
- android:id="@+id/keyPad"
- layout="@layout/twelve_key_entry"
- android:layout_width="0dip"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:layout_below="@id/topDisplayGroup"
- android:layout_marginTop="10dip"
- />
-
-</LinearLayout>
diff --git a/res/layout-land/confirm_lock_password.xml b/res/layout-land/confirm_lock_password.xml
new file mode 100644
index 0000000..3a27b9d
--- /dev/null
+++ b/res/layout-land/confirm_lock_password.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2008, The Android Open Source 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.
+*/
+-->
+
+<!-- This is basically the same layout now, but will likely change -->
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+ <include
+ layout="@layout/choose_lock_password"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ />
+</merge>
diff --git a/res/layout-land/confirm_lock_pin.xml b/res/layout-land/confirm_lock_pin.xml
deleted file mode 100644
index beff4a1..0000000
--- a/res/layout-land/confirm_lock_pin.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-**
-** Copyright 2008, The Android Open Source 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.
-*/
--->
-
-<!-- TODO: think about moving to frameworks/base/res -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="@android:color/background_dark"
- android:gravity="center_horizontal">
-
- <LinearLayout android:id="@+id/topDisplayGroup"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <!-- header text ('Enter Pin') -->
- <TextView android:id="@+id/headerText"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:lines="2"
- android:textAppearance="?android:attr/textAppearanceLarge"/>
-
- <!-- password entry -->
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_marginRight="6dip"
- android:layout_marginLeft="6dip"
- android:gravity="center_vertical"
- android:background="@android:drawable/edit_text">
-
- <!-- displays dots as user enters pin -->
- <TextView android:id="@+id/pinDisplay"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:maxLines="1"
- android:textAppearance="?android:attr/textAppearanceLargeInverse"
- android:textStyle="bold"
- android:inputType="textPassword"
- />
-
- <ImageButton android:id="@+id/backspace"
- android:src="@android:drawable/ic_input_delete"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="-3dip"
- android:layout_marginBottom="-3dip"
- />
- </LinearLayout>
-
- </LinearLayout>
-
- <include
- android:id="@+id/keyPad"
- layout="@layout/twelve_key_entry"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/topDisplayGroup"
- android:layout_marginTop="10dip"
- />
-
-</LinearLayout>
diff --git a/res/layout/choose_lock_password.xml b/res/layout/choose_lock_password.xml
index 213f9a4..ffef021 100644
--- a/res/layout/choose_lock_password.xml
+++ b/res/layout/choose_lock_password.xml
@@ -16,9 +16,6 @@
** limitations under the License.
*/
-->
-
-<!-- TODO: think about moving to frameworks/base/res -->
-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
@@ -26,55 +23,80 @@
android:background="@android:color/background_dark"
android:gravity="center_horizontal">
- <LinearLayout android:id="@+id/topDisplayGroup"
+ <!-- header text ('Enter Pin') -->
+ <TextView android:id="@+id/headerText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:orientation="vertical">
+ android:gravity="center"
+ android:lines="2"
+ android:textAppearance="?android:attr/textAppearanceLarge"/>
- <!-- header text ('Enter Pin') -->
- <TextView android:id="@+id/headerText"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:lines="2"
- android:textAppearance="?android:attr/textAppearanceLarge"/>
-
- <!-- password entry -->
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_marginRight="6dip"
- android:layout_marginLeft="6dip"
- android:gravity="center_vertical"
- android:background="@android:drawable/edit_text">
-
- <!-- displays dots as user enters pin -->
- <TextView android:id="@+id/pinDisplay"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:maxLines="1"
- android:textAppearance="?android:attr/textAppearanceLargeInverse"
- android:textStyle="bold"
- android:inputType="textPassword"
- />
-
- <ImageButton android:id="@+id/backspace"
- android:src="@android:drawable/ic_input_delete"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="-3dip"
- android:layout_marginBottom="-3dip"
- />
- </LinearLayout>
-
- </LinearLayout>
-
+ <!-- spacer above text entry field -->
<View
+ android:id="@+id/spacerBottom"
android:layout_width="fill_parent"
- android:layout_height="0dip"
- android:layout_weight="1"
+ android:layout_height="1dip"
+ android:layout_marginTop="6dip"
+ android:background="@android:drawable/divider_horizontal_dark"
/>
+ <!-- Password entry field -->
+ <EditText android:id="@+id/password_entry"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:textStyle="bold"
+ android:inputType="textPassword"
+ android:gravity="center"
+ android:layout_gravity="center"
+ android:textSize="32sp"
+ android:layout_marginTop="15dip"
+ android:layout_marginLeft="30dip"
+ android:layout_marginRight="30dip"
+ android:textAppearance="?android:attr/textAppearanceLarge"
+ android:background="@drawable/password_field_default"
+ android:textColor="#ffffffff"
+ />
+
+ <!-- Spacer between password entry and keyboard -->
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="0dip"
+ android:layout_weight="1" />
+
+ <!-- Alphanumeric keyboard -->
+ <com.android.internal.widget.PasswordEntryKeyboardView android:id="@+id/keyboard"
+ android:layout_alignParentBottom="true"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="#00000000"
+ android:layout_marginBottom="30dip"
+ android:keyBackground="@*android:drawable/btn_keyboard_key_fulltrans"
+ />
+
+ <RelativeLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="@android:drawable/bottom_bar">
+
+ <Button android:id="@+id/cancel_button"
+ android:layout_width="150dip"
+ android:layout_height="wrap_content"
+ android:layout_margin="5dip"
+ android:layout_alignParentLeft="true"
+ android:text="@string/password_cancel_button_label"
+ />
+
+ <Button android:id="@+id/next_button"
+ android:layout_width="150dip"
+ android:layout_height="wrap_content"
+ android:layout_margin="5dip"
+ android:layout_alignParentRight="true"
+ android:drawableRight="@drawable/ic_btn_next"
+ android:drawablePadding="10dip"
+ android:text="@string/password_ok_button_label"
+ />
+
+ </RelativeLayout>
+
</LinearLayout>
diff --git a/res/layout/choose_lock_pin.xml b/res/layout/choose_lock_pin.xml
deleted file mode 100644
index beff4a1..0000000
--- a/res/layout/choose_lock_pin.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-**
-** Copyright 2008, The Android Open Source 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.
-*/
--->
-
-<!-- TODO: think about moving to frameworks/base/res -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="@android:color/background_dark"
- android:gravity="center_horizontal">
-
- <LinearLayout android:id="@+id/topDisplayGroup"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <!-- header text ('Enter Pin') -->
- <TextView android:id="@+id/headerText"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:lines="2"
- android:textAppearance="?android:attr/textAppearanceLarge"/>
-
- <!-- password entry -->
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_marginRight="6dip"
- android:layout_marginLeft="6dip"
- android:gravity="center_vertical"
- android:background="@android:drawable/edit_text">
-
- <!-- displays dots as user enters pin -->
- <TextView android:id="@+id/pinDisplay"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:maxLines="1"
- android:textAppearance="?android:attr/textAppearanceLargeInverse"
- android:textStyle="bold"
- android:inputType="textPassword"
- />
-
- <ImageButton android:id="@+id/backspace"
- android:src="@android:drawable/ic_input_delete"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="-3dip"
- android:layout_marginBottom="-3dip"
- />
- </LinearLayout>
-
- </LinearLayout>
-
- <include
- android:id="@+id/keyPad"
- layout="@layout/twelve_key_entry"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/topDisplayGroup"
- android:layout_marginTop="10dip"
- />
-
-</LinearLayout>
diff --git a/res/layout/confirm_lock_password.xml b/res/layout/confirm_lock_password.xml
new file mode 100644
index 0000000..3a27b9d
--- /dev/null
+++ b/res/layout/confirm_lock_password.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2008, The Android Open Source 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.
+*/
+-->
+
+<!-- This is basically the same layout now, but will likely change -->
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+ <include
+ layout="@layout/choose_lock_password"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ />
+</merge>
diff --git a/res/layout/confirm_lock_pin.xml b/res/layout/confirm_lock_pin.xml
deleted file mode 100644
index beff4a1..0000000
--- a/res/layout/confirm_lock_pin.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-**
-** Copyright 2008, The Android Open Source 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.
-*/
--->
-
-<!-- TODO: think about moving to frameworks/base/res -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="@android:color/background_dark"
- android:gravity="center_horizontal">
-
- <LinearLayout android:id="@+id/topDisplayGroup"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <!-- header text ('Enter Pin') -->
- <TextView android:id="@+id/headerText"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:lines="2"
- android:textAppearance="?android:attr/textAppearanceLarge"/>
-
- <!-- password entry -->
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_marginRight="6dip"
- android:layout_marginLeft="6dip"
- android:gravity="center_vertical"
- android:background="@android:drawable/edit_text">
-
- <!-- displays dots as user enters pin -->
- <TextView android:id="@+id/pinDisplay"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:maxLines="1"
- android:textAppearance="?android:attr/textAppearanceLargeInverse"
- android:textStyle="bold"
- android:inputType="textPassword"
- />
-
- <ImageButton android:id="@+id/backspace"
- android:src="@android:drawable/ic_input_delete"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="-3dip"
- android:layout_marginBottom="-3dip"
- />
- </LinearLayout>
-
- </LinearLayout>
-
- <include
- android:id="@+id/keyPad"
- layout="@layout/twelve_key_entry"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/topDisplayGroup"
- android:layout_marginTop="10dip"
- />
-
-</LinearLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 47421e2..39198ef 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -534,6 +534,10 @@
<string name="manage_device_admin">Select device administrators</string>
<!-- Summary of preference to manage device policies -->
<string name="manage_device_admin_summary">Add or remove device administrators</string>
+ <!-- Label for ChoosePassword/PIN OK button -->
+ <string name="password_ok_button_label">OK</string>
+ <!-- Label for ChoosePassword/PIN OK button -->
+ <string name="password_cancel_button_label">Cancel</string>
<!-- Bluetooth settings -->
<!-- Bluetooth settings check box title on Main Settings screen -->
@@ -966,7 +970,7 @@
<string name="dock_not_found_title">Dock not found</string>
<!-- Dock not found dialog text -->
<string name="dock_not_found_text">The phone must be docked to configure dock audio</string>
-
+
<!-- Acounts & Sync settings screen setting option name to go into the screen for data sync settings-->
<string name="sync_settings">Accounts & sync</string>
<!-- Main Settings screen setting option summary text for the itme to go into the screen with data sync settings-->
@@ -1125,7 +1129,7 @@
<!-- SD card & phone storage settings item title that will result in the phone unmounting the SD card. This will be done before the user phyiscally removes the SD card from the phone. Kind of like the "Safely remove" on some operating systems. -->
<string name="sd_eject_summary">Unmount the SD card for safe removal</string>
-
+
<!-- SD card & phone storage settings item summary that is displayed when no SD card is inserted -->
<string name="sd_insert_summary">Insert an SD card for mounting</string>
<!-- SD card & phone storage settings item title that will result in the phone mounting the SD card. -->
@@ -2006,7 +2010,7 @@
<string name="voice_search_settings_title">Voice search</string>
<!-- Title of keyboard settings list item within voice input/output settings -->
<string name="keyboard_settings_title">Android keyboard</string>
-
+
<!-- Text-To-Speech (TTS) settings --><skip />
<!-- Title of setting on main settings screen. This item will take the user to the screen to tweak settings related to the text-to-speech functionality -->
<string name="tts_settings">Text-to-speech</string>
@@ -2313,7 +2317,7 @@
<string name="device_admin_status">This administrator is active and allows
the application <xliff:g id="app_name">%1$s</xliff:g> to perform the
following operations:</string>
-
+
<!-- Name to assign to a Network Access Point that was saved without a name -->
<string name="untitled_apn">Untitled</string>
</resources>
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 6f9cefd..ed4150a 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -20,26 +20,30 @@
import java.util.regex.Pattern;
import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.PasswordEntryKeyboardHelper;
+import com.android.internal.widget.PasswordEntryKeyboardView;
import com.android.settings.ChooseLockPattern.LeftButtonMode;
import com.android.settings.ChooseLockPattern.RightButtonMode;
import com.android.settings.ChooseLockPattern.Stage;
import android.app.Activity;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.graphics.PixelFormat;
+import android.inputmethodservice.KeyboardView;
import android.os.Bundle;
import android.os.Handler;
import android.text.Editable;
import android.text.TextUtils;
import android.view.View;
+import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class ChooseLockPassword extends Activity implements OnClickListener {
- private final int digitIds[] = new int[] { R.id.zero, R.id.one, R.id.two, R.id.three,
- R.id.four, R.id.five, R.id.six, R.id.seven, R.id.eight, R.id.nine };
- private TextView mPasswordTextView;
+ private TextView mPasswordEntry;
private int mPasswordMinLength = 4;
private int mPasswordMaxLength = 8;
private LockPatternUtils mLockPatternUtils;
@@ -48,6 +52,8 @@
private com.android.settings.ChooseLockPassword.Stage mUiStage = Stage.Introduction;
private TextView mHeaderText;
private String mFirstPin;
+ private KeyboardView mKeyboardView;
+ private PasswordEntryKeyboardHelper mKeyboardHelper;
public static final String PASSWORD_MIN_KEY = "lockscreen.password_min";
public static final String PASSWORD_MAX_KEY = "lockscreen.password_max";
private static Handler mHandler = new Handler();
@@ -79,7 +85,7 @@
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLockPatternUtils = new LockPatternUtils(this);
- mRequestedMode = getIntent().getIntExtra("password_mode", mRequestedMode);
+ mRequestedMode = getIntent().getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY, mRequestedMode);
mPasswordMinLength = getIntent().getIntExtra("password_min_length", mPasswordMinLength);
mPasswordMaxLength = getIntent().getIntExtra("password_max_length", mPasswordMaxLength);
int minMode = mLockPatternUtils.getRequestedPasswordMode();
@@ -99,25 +105,38 @@
}
private void initViews() {
- switch(mRequestedMode) {
- case LockPatternUtils.MODE_PIN:
- case LockPatternUtils.MODE_PASSWORD:
- case LockPatternUtils.MODE_PATTERN:
- setContentView(R.layout.choose_lock_pin);
- // TODO: alphanumeric layout
- // setContentView(R.layout.choose_lock_password);
- for (int i = 0; i < digitIds.length; i++) {
- Button button = (Button) findViewById(digitIds[i]);
- button.setOnClickListener(this);
- button.setText(Integer.toString(i));
- }
- break;
- }
- findViewById(R.id.ok).setOnClickListener(this);
- findViewById(R.id.cancel).setOnClickListener(this);
- findViewById(R.id.backspace).setOnClickListener(this);
- mPasswordTextView = (TextView) findViewById(R.id.pinDisplay);
+ setContentView(R.layout.choose_lock_password);
+ // Disable IME on our window since we provide our own keyboard
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
+ WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
+
+ findViewById(R.id.cancel_button).setOnClickListener(this);
+ findViewById(R.id.next_button).setOnClickListener(this);
+
+ mKeyboardView = (PasswordEntryKeyboardView) findViewById(R.id.keyboard);
+ mPasswordEntry = (TextView) findViewById(R.id.password_entry);
+
+ final boolean isAlpha = LockPatternUtils.MODE_PASSWORD == mRequestedMode;
+ mKeyboardHelper = new PasswordEntryKeyboardHelper(this, mKeyboardView, mPasswordEntry);
+ mKeyboardHelper.setKeyboardMode(isAlpha ? PasswordEntryKeyboardHelper.KEYBOARD_MODE_ALPHA
+ : PasswordEntryKeyboardHelper.KEYBOARD_MODE_NUMERIC);
+
mHeaderText = (TextView) findViewById(R.id.headerText);
+ mKeyboardView.requestFocus();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mKeyboardView.requestFocus();
+ }
+
+ @Override
+ protected void onResume() {
+ // TODO Auto-generated method stub
+ super.onResume();
+ updateStage(mUiStage);
+ mKeyboardView.requestFocus();
}
@Override
@@ -136,7 +155,7 @@
protected void updateStage(Stage stage) {
mHeaderText.setText(stage.headerMessage);
- mPasswordTextView.setText("");
+ mPasswordEntry.setText("");
mUiStage = stage;
}
@@ -172,9 +191,9 @@
public void onClick(View v) {
switch (v.getId()) {
- case R.id.ok:
+ case R.id.next_button:
{
- final String pin = mPasswordTextView.getText().toString();
+ final String pin = mPasswordEntry.getText().toString();
if (TextUtils.isEmpty(pin)) {
break;
}
@@ -203,35 +222,15 @@
}
break;
- case R.id.backspace:
- {
- final Editable digits = mPasswordTextView.getEditableText();
- final int len = digits.length();
- if (len > 0) {
- digits.delete(len-1, len);
- }
- }
- break;
-
- case R.id.cancel:
+ case R.id.cancel_button:
finish();
break;
-
- default:
- // Digits
- for (int i = 0; i < digitIds.length; i++) {
- if (v.getId() == digitIds[i]) {
- mPasswordTextView.append(Integer.toString(i));
- return;
- }
- }
- break;
}
}
private void showError(String msg, final Stage next) {
mHeaderText.setText(msg);
- mPasswordTextView.setText("");
+ mPasswordEntry.setText("");
mHandler.postDelayed(new Runnable() {
public void run() {
updateStage(next);
diff --git a/src/com/android/settings/ConfirmLockPassword.java b/src/com/android/settings/ConfirmLockPassword.java
index 5308f88..78d6ff1 100644
--- a/src/com/android/settings/ConfirmLockPassword.java
+++ b/src/com/android/settings/ConfirmLockPassword.java
@@ -17,24 +17,27 @@
package com.android.settings;
import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.PasswordEntryKeyboardHelper;
+import com.android.internal.widget.PasswordEntryKeyboardView;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.text.Editable;
import android.view.View;
+import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class ConfirmLockPassword extends Activity implements OnClickListener {
private static final long ERROR_MESSAGE_TIMEOUT = 3000;
- private final int digitIds[] = new int[] { R.id.zero, R.id.one, R.id.two, R.id.three,
- R.id.four, R.id.five, R.id.six, R.id.seven, R.id.eight, R.id.nine };
- private TextView mPasswordTextView;
+ private TextView mPasswordEntry;
private LockPatternUtils mLockPatternUtils;
private TextView mHeaderText;
private Handler mHandler = new Handler();
+ private PasswordEntryKeyboardHelper mKeyboardHelper;
+ private PasswordEntryKeyboardView mKeyboardView;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -45,27 +48,43 @@
private void initViews() {
int mode = mLockPatternUtils.getPasswordMode();
- if (LockPatternUtils.MODE_PIN == mode || LockPatternUtils.MODE_PASSWORD == mode) {
- setContentView(R.layout.confirm_lock_pin);
- for (int i = 0; i < digitIds.length; i++) {
- Button button = (Button) findViewById(digitIds[i]);
- button.setOnClickListener(this);
- button.setText(Integer.toString(i));
- }
- findViewById(R.id.ok).setOnClickListener(this);
- findViewById(R.id.cancel).setOnClickListener(this);
- }
- findViewById(R.id.backspace).setOnClickListener(this);
- mPasswordTextView = (TextView) findViewById(R.id.pinDisplay);
+ setContentView(R.layout.confirm_lock_password);
+ // Disable IME on our window since we provide our own keyboard
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
+ WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
+
+ findViewById(R.id.cancel_button).setOnClickListener(this);
+ findViewById(R.id.next_button).setOnClickListener(this);
+ mPasswordEntry = (TextView) findViewById(R.id.password_entry);
+ mKeyboardView = (PasswordEntryKeyboardView) findViewById(R.id.keyboard);
mHeaderText = (TextView) findViewById(R.id.headerText);
mHeaderText.setText(R.string.lockpassword_confirm_your_password_header);
+ final boolean isAlpha =
+ LockPatternUtils.MODE_PASSWORD == mLockPatternUtils.getPasswordMode();
+ mKeyboardHelper = new PasswordEntryKeyboardHelper(this, mKeyboardView, mPasswordEntry);
+ mKeyboardHelper.setKeyboardMode(isAlpha ? PasswordEntryKeyboardHelper.KEYBOARD_MODE_ALPHA
+ : PasswordEntryKeyboardHelper.KEYBOARD_MODE_NUMERIC);
+ mKeyboardView.requestFocus();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mKeyboardView.requestFocus();
+ }
+
+ @Override
+ protected void onResume() {
+ // TODO Auto-generated method stub
+ super.onResume();
+ mKeyboardView.requestFocus();
}
public void onClick(View v) {
switch (v.getId()) {
- case R.id.ok:
+ case R.id.next_button:
{
- final String pin = mPasswordTextView.getText().toString();
+ final String pin = mPasswordEntry.getText().toString();
if (mLockPatternUtils.checkPassword(pin)) {
setResult(RESULT_OK);
finish();
@@ -75,36 +94,16 @@
}
break;
- case R.id.backspace:
- {
- final Editable digits = mPasswordTextView.getEditableText();
- final int len = digits.length();
- if (len > 0) {
- digits.delete(len-1, len);
- }
- }
- break;
-
- case R.id.cancel:
+ case R.id.cancel_button:
setResult(RESULT_CANCELED);
finish();
break;
-
- default:
- // Digits
- for (int i = 0; i < digitIds.length; i++) {
- if (v.getId() == digitIds[i]) {
- mPasswordTextView.append(Integer.toString(i));
- return;
- }
- }
- break;
}
}
private void showError(int msg) {
mHeaderText.setText(msg);
- mPasswordTextView.setText(null);
+ mPasswordEntry.setText(null);
mHandler.postDelayed(new Runnable() {
public void run() {
mHeaderText.setText(R.string.lockpassword_confirm_your_password_header);