Merge change 26295 into eclair

* changes:
  Don't CCO when picking from disambig list.
diff --git a/res/drawable-finger/btn_dial_delete.xml b/res/drawable-finger/btn_dial_delete.xml
index 235554d..b8c672d 100644
--- a/res/drawable-finger/btn_dial_delete.xml
+++ b/res/drawable-finger/btn_dial_delete.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
+<!-- Copyright (C) 2009 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.
@@ -14,12 +14,20 @@
      limitations under the License.
 -->
 
+<!-- Background resource for backspace button for the various 12 key dialers. -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true" 
-        android:drawable="@drawable/btn_dial_delete_pressed" />
-    <item android:state_focused="true"
-        android:drawable="@drawable/btn_dial_delete_selected" />
-    <item
-        android:drawable="@drawable/btn_dial_delete_normal" />
+    <!-- Disabled views -->
+    <item android:state_focused="true" android:state_enabled="false"
+        android:drawable="@drawable/btn_dial_action_right_disable_focused" />
+    <item android:state_enabled="false"
+        android:drawable="@drawable/btn_dial_action_right_disable" />
+
+    <!-- Enabled views -->
+    <item android:state_pressed="true" android:state_enabled="true"
+        android:drawable="@drawable/btn_dial_action_right_pressed" />
+    <item android:state_focused="true" android:state_enabled="true"
+        android:drawable="@drawable/btn_dial_action_right_selected" />
+    <item android:state_enabled="true"
+        android:drawable="@drawable/btn_dial_action_right_normal" />
 </selector>
 
diff --git a/res/drawable-finger/btn_dial_delete_activated.9.png b/res/drawable-finger/btn_dial_delete_activated.9.png
deleted file mode 100644
index 453a368..0000000
--- a/res/drawable-finger/btn_dial_delete_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/btn_dial_delete_active.xml b/res/drawable-finger/btn_dial_delete_active.xml
deleted file mode 100644
index 3403f34..0000000
--- a/res/drawable-finger/btn_dial_delete_active.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true" 
-        android:drawable="@drawable/btn_dial_delete_pressed" />
-    <item android:state_focused="true"
-        android:drawable="@drawable/btn_dial_delete_selected" />
-    <item
-        android:drawable="@drawable/btn_dial_delete_activated" />
-</selector>
-
diff --git a/res/drawable-finger/btn_dial_delete_normal.9.png b/res/drawable-finger/btn_dial_delete_normal.9.png
deleted file mode 100644
index 9da1cff..0000000
--- a/res/drawable-finger/btn_dial_delete_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/btn_dial_delete_pressed.9.png b/res/drawable-finger/btn_dial_delete_pressed.9.png
deleted file mode 100644
index 5bbc20d..0000000
--- a/res/drawable-finger/btn_dial_delete_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/btn_dial_delete_selected.9.png b/res/drawable-finger/btn_dial_delete_selected.9.png
deleted file mode 100644
index d959768..0000000
--- a/res/drawable-finger/btn_dial_delete_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/btn_dial_textfield_activated.9.png b/res/drawable-finger/btn_dial_textfield_activated.9.png
deleted file mode 100644
index 4c34576..0000000
--- a/res/drawable-finger/btn_dial_textfield_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/btn_dial_textfield_normal.9.png b/res/drawable-finger/btn_dial_textfield_normal.9.png
deleted file mode 100644
index 40ab866..0000000
--- a/res/drawable-finger/btn_dial_textfield_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/btn_dial_textfield_pressed.9.png b/res/drawable-finger/btn_dial_textfield_pressed.9.png
deleted file mode 100644
index 0087327..0000000
--- a/res/drawable-finger/btn_dial_textfield_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/btn_dial_textfield_selected.9.png b/res/drawable-finger/btn_dial_textfield_selected.9.png
deleted file mode 100644
index 63fceaa..0000000
--- a/res/drawable-finger/btn_dial_textfield_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/ic_delete_phone_number.xml b/res/drawable-finger/ic_delete_phone_number.xml
deleted file mode 100644
index adfc0ce..0000000
--- a/res/drawable-finger/ic_delete_phone_number.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true" 
-        android:drawable="@drawable/ic_delete_phone_number_blk" />
-    <item android:state_focused="true"
-        android:drawable="@drawable/ic_delete_phone_number_blk" />
-    <item
-        android:drawable="@drawable/ic_delete_phone_number_wht" />
-</selector>
-
diff --git a/res/drawable-finger/ic_delete_phone_number_blk.png b/res/drawable-finger/ic_delete_phone_number_blk.png
deleted file mode 100644
index 2e83d36..0000000
--- a/res/drawable-finger/ic_delete_phone_number_blk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/ic_delete_phone_number_wht.png b/res/drawable-finger/ic_delete_phone_number_wht.png
deleted file mode 100644
index 988bcfd..0000000
--- a/res/drawable-finger/ic_delete_phone_number_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/ic_menu_merge.png b/res/drawable-finger/ic_menu_merge.png
new file mode 100644
index 0000000..b448c27
--- /dev/null
+++ b/res/drawable-finger/ic_menu_merge.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_split.png b/res/drawable-finger/ic_menu_split.png
new file mode 100644
index 0000000..9d69e4c
--- /dev/null
+++ b/res/drawable-finger/ic_menu_split.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_dial_action_right_disable.9.png b/res/drawable-hdpi-finger/btn_dial_action_right_disable.9.png
new file mode 100755
index 0000000..6e6fa30
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_dial_action_right_disable.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_dial_action_right_disable_focused.9.png b/res/drawable-hdpi-finger/btn_dial_action_right_disable_focused.9.png
new file mode 100755
index 0000000..46a042f
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_dial_action_right_disable_focused.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_dial_action_right_normal.9.png b/res/drawable-hdpi-finger/btn_dial_action_right_normal.9.png
new file mode 100755
index 0000000..6e6fa30
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_dial_action_right_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_dial_action_right_pressed.9.png b/res/drawable-hdpi-finger/btn_dial_action_right_pressed.9.png
new file mode 100755
index 0000000..d66a509
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_dial_action_right_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_dial_action_right_selected.9.png b/res/drawable-hdpi-finger/btn_dial_action_right_selected.9.png
new file mode 100755
index 0000000..d2ee98b
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_dial_action_right_selected.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_dial_textfield_activated.9.png b/res/drawable-hdpi-finger/btn_dial_textfield_activated.9.png
new file mode 100755
index 0000000..c937c5e
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_dial_textfield_activated.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_dial_textfield_normal.9.png b/res/drawable-hdpi-finger/btn_dial_textfield_normal.9.png
new file mode 100755
index 0000000..0c38b39
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_dial_textfield_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_dial_textfield_pressed.9.png b/res/drawable-hdpi-finger/btn_dial_textfield_pressed.9.png
new file mode 100755
index 0000000..22d8235
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_dial_textfield_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_dial_textfield_selected.9.png b/res/drawable-hdpi-finger/btn_dial_textfield_selected.9.png
new file mode 100755
index 0000000..1fe4dfc
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_dial_textfield_selected.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_dial_action_delete.png b/res/drawable-hdpi-finger/ic_dial_action_delete.png
new file mode 100755
index 0000000..2e206c8
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_dial_action_delete.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/btn_dial_action_right_disable.9.png b/res/drawable-mdpi-finger/btn_dial_action_right_disable.9.png
new file mode 100755
index 0000000..85dfff0
--- /dev/null
+++ b/res/drawable-mdpi-finger/btn_dial_action_right_disable.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/btn_dial_action_right_disable_focused.9.png b/res/drawable-mdpi-finger/btn_dial_action_right_disable_focused.9.png
new file mode 100755
index 0000000..1f76f0c
--- /dev/null
+++ b/res/drawable-mdpi-finger/btn_dial_action_right_disable_focused.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/btn_dial_action_right_normal.9.png b/res/drawable-mdpi-finger/btn_dial_action_right_normal.9.png
new file mode 100755
index 0000000..85dfff0
--- /dev/null
+++ b/res/drawable-mdpi-finger/btn_dial_action_right_normal.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/btn_dial_action_right_pressed.9.png b/res/drawable-mdpi-finger/btn_dial_action_right_pressed.9.png
new file mode 100755
index 0000000..226633f
--- /dev/null
+++ b/res/drawable-mdpi-finger/btn_dial_action_right_pressed.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/btn_dial_action_right_selected.9.png b/res/drawable-mdpi-finger/btn_dial_action_right_selected.9.png
new file mode 100755
index 0000000..9cca52c
--- /dev/null
+++ b/res/drawable-mdpi-finger/btn_dial_action_right_selected.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/btn_dial_textfield_activated.9.png b/res/drawable-mdpi-finger/btn_dial_textfield_activated.9.png
new file mode 100755
index 0000000..de65d44
--- /dev/null
+++ b/res/drawable-mdpi-finger/btn_dial_textfield_activated.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/btn_dial_textfield_normal.9.png b/res/drawable-mdpi-finger/btn_dial_textfield_normal.9.png
new file mode 100755
index 0000000..d3613e3
--- /dev/null
+++ b/res/drawable-mdpi-finger/btn_dial_textfield_normal.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/btn_dial_textfield_pressed.9.png b/res/drawable-mdpi-finger/btn_dial_textfield_pressed.9.png
new file mode 100755
index 0000000..fa7147e
--- /dev/null
+++ b/res/drawable-mdpi-finger/btn_dial_textfield_pressed.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/btn_dial_textfield_selected.9.png b/res/drawable-mdpi-finger/btn_dial_textfield_selected.9.png
new file mode 100755
index 0000000..09db422
--- /dev/null
+++ b/res/drawable-mdpi-finger/btn_dial_textfield_selected.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/ic_dial_action_delete.png b/res/drawable-mdpi-finger/ic_dial_action_delete.png
new file mode 100755
index 0000000..440ae37
--- /dev/null
+++ b/res/drawable-mdpi-finger/ic_dial_action_delete.png
Binary files differ
diff --git a/res/layout-finger/create_new_contact.xml b/res/layout-finger/create_new_contact.xml
new file mode 100644
index 0000000..776c482
--- /dev/null
+++ b/res/layout-finger/create_new_contact.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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="wrap_content"
+        android:minHeight="?android:attr/listPreferredItemHeight"
+        android:orientation="horizontal"
+        android:paddingRight="6dip"
+        android:paddingLeft="6dip"
+        android:paddingTop="5dip"
+        android:paddingBottom="5dip"
+        android:gravity="center_vertical"
+        >
+    <ImageView android:id="@+id/addicon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="5dip"
+            android:layout_marginRight="11dip"
+            android:focusable="false"
+            android:src="@*android:drawable/sym_action_add"
+            android:scaleType="fitCenter"
+            />
+    <TextView android:id="@+id/title"
+            android:text="@string/pickerNewContactHeader"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textStyle="bold"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="2dip"
+            />
+</LinearLayout>
diff --git a/res/layout-finger/list_item_text_icons.xml b/res/layout-finger/list_item_text_icons.xml
index 051dde9..7e2e26e 100644
--- a/res/layout-finger/list_item_text_icons.xml
+++ b/res/layout-finger/list_item_text_icons.xml
@@ -23,7 +23,6 @@
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:orientation="horizontal"
     android:paddingLeft="9dip"
-    android:paddingRight="5dip"
     android:gravity="center_vertical"
 >
 
@@ -87,17 +86,16 @@
     <View android:id="@+id/divider"
         android:layout_width="1dip"
         android:layout_height="fill_parent"
-        android:layout_marginRight="11dip"
         android:background="@drawable/divider_vertical_dark"
     />
 
     <ImageView android:id="@+id/secondary_action_button"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="5dip"
-        android:layout_marginRight="7dip"
+        android:layout_width="64dip"
+        android:layout_height="fill_parent"
+        android:layout_centerVertical="true"
         android:gravity="center"
-        android:scaleType="centerInside"
+        android:scaleType="center"
+        android:background="@android:drawable/list_selector_background"
     />
 
 </LinearLayout>
diff --git a/res/layout-finger/twelve_key_dialer.xml b/res/layout-finger/twelve_key_dialer.xml
index c904deb..74f644b 100644
--- a/res/layout-finger/twelve_key_dialer.xml
+++ b/res/layout-finger/twelve_key_dialer.xml
@@ -20,46 +20,24 @@
     android:layout_height="fill_parent"
     android:orientation="vertical"
 >
-    <LinearLayout android:id="@+id/digitsAndBackspace"
+    <!-- Text field above the keypad where the digits are displayed -->
+    <EditText android:id="@+id/digits"
         android:layout_width="fill_parent"
         android:layout_height="66dip"
-        android:layout_marginTop="3dip"
-        android:layout_marginBottom="5dip"
-        android:layout_marginLeft="3dip"
-        android:layout_marginRight="3dip"
-        android:orientation="horizontal"
-    >
-
-        <EditText android:id="@+id/digits"
-            android:layout_width="0dip"
-            android:layout_weight="1"
-            android:layout_height="66dip"
-            android:maxLines="1"
-            android:scrollHorizontally="true"
-            android:textSize="28sp"
-            android:freezesText="true"
-            android:background="@drawable/btn_dial_textfield"
-            android:textColor="@color/dialer_button_text"
-            android:focusableInTouchMode="false"
-            android:nextFocusRight="@+id/backspace"
-        />
-
-        <ImageButton android:id="@+id/backspace"
-            style="@android:style/Widget.Button.Inset"
-            android:layout_width="wrap_content"
-            android:layout_height="66dip"
-            android:background="@drawable/btn_dial_delete"
-            android:src="@drawable/ic_delete_phone_number"
-            android:gravity="center"
-        />
-
-    </LinearLayout>
+        android:maxLines="1"
+        android:scrollHorizontally="true"
+        android:textSize="28sp"
+        android:freezesText="true"
+        android:background="@drawable/btn_dial_textfield"
+        android:textColor="@color/dialer_button_text"
+        android:focusableInTouchMode="false"
+    />
 
     <!-- Keypad section -->
     <include layout="@layout/dialpad" />
 
-    <!-- Horizontal row of buttons (Voicemail + DialButton + Backspace.) -->
-    <LinearLayout android:id="@+id/voicemailAndDialAndBackspace"
+    <!-- Horizontal row of buttons (Voicemail + DialButton + Delete.) -->
+    <LinearLayout android:id="@+id/voicemailAndDialAndDelete"
         android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_gravity="center_horizontal"
@@ -85,6 +63,15 @@
             android:state_enabled="false"
             android:background="@drawable/btn_dial_action"
             android:src="@drawable/ic_dial_action_call" />
+
+        <!-- Onscreen "Backspace/Delete" button -->
+        <ImageButton android:id="@+id/deleteButton"
+            android:layout_width="90dip"
+            android:layout_height="52dip"
+            android:layout_gravity="center_vertical"
+            android:state_enabled="false"
+            android:background="@drawable/btn_dial_delete"
+            android:src="@drawable/ic_dial_action_delete" />
     </LinearLayout>
 
     <!-- "Dialpad chooser" UI, shown only when the user brings up the
diff --git a/res/layout-land-finger/twelve_key_dialer.xml b/res/layout-land-finger/twelve_key_dialer.xml
index 9547ed5..0b89572 100644
--- a/res/layout-land-finger/twelve_key_dialer.xml
+++ b/res/layout-land-finger/twelve_key_dialer.xml
@@ -20,47 +20,22 @@
     android:layout_height="fill_parent"
     android:orientation="vertical"
 >
-    <LinearLayout android:id="@+id/digitsAndBackspace"
+
+    <!-- Text field above the keypad where the digits are displayed -->
+    <EditText android:id="@+id/digits"
         android:layout_width="fill_parent"
         android:layout_height="66dip"
-        android:addStatesFromChildren="true"
-        android:gravity="center_vertical"
-        android:baselineAligned="false"
-        android:layout_marginTop="3dip"
-        android:layout_marginBottom="5dip"
-        android:layout_marginLeft="3dip"
-        android:layout_marginRight="3dip"
-    >
+        android:maxLines="1"
+        android:scrollHorizontally="true"
+        android:textSize="28sp"
+        android:freezesText="true"
+        android:background="@drawable/btn_dial_textfield"
+        android:textColor="@color/dialer_button_text"
+        android:hint="@string/dialerKeyboardHintText"
+     />
 
-        <EditText android:id="@+id/digits"
-            android:layout_width="0dip"
-            android:layout_weight="1"
-            android:layout_height="66dip"
-            android:maxLines="1"
-            android:scrollHorizontally="true"
-            android:textSize="28sp"
-            android:freezesText="true"
-            android:background="@drawable/btn_dial_textfield"
-            android:textColor="@color/dialer_button_text"
-            android:hint="@string/dialerKeyboardHintText"
-        />
-
-        <!--
-            The button goes at the right.
-        -->
-        <ImageButton android:id="@+id/backspace"
-            style="@android:style/Widget.Button.Inset"
-            android:src="@drawable/ic_delete_phone_number"
-            android:layout_width="wrap_content"
-            android:layout_height="66dip"
-            android:background="@drawable/btn_dial_delete"
-            android:gravity="center"
-        />
-
-    </LinearLayout>
-
-    <!-- Horizontal row of buttons (Voicemail + DialButton + Backspace.) -->
-    <LinearLayout android:id="@+id/voicemailAndDialAndBackspace"
+    <!-- Horizontal row of buttons (Voicemail + DialButton + Delete.) -->
+    <LinearLayout android:id="@+id/voicemailAndDialAndDelete"
         android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_gravity="center_horizontal"
@@ -86,6 +61,15 @@
             android:state_enabled="false"
             android:background="@drawable/btn_dial_action"
             android:src="@drawable/ic_dial_action_call" />
+
+        <!-- Onscreen "Backspace/Delete" button -->
+        <ImageButton android:id="@+id/deleteButton"
+            android:layout_width="90dip"
+            android:layout_height="52dip"
+            android:layout_gravity="center_vertical"
+            android:state_enabled="false"
+            android:background="@drawable/btn_dial_delete"
+            android:src="@drawable/ic_dial_action_delete" />
     </LinearLayout>
 
     <!-- "Dialpad chooser" UI, shown only when the user brings up the
diff --git a/res/menu/view.xml b/res/menu/view.xml
index cf43802..48cbeb1 100644
--- a/res/menu/view.xml
+++ b/res/menu/view.xml
@@ -35,12 +35,12 @@
     <!-- TODO: use new split/join icons -->
     <item
         android:id="@+id/menu_split"
-        android:icon="@android:drawable/ic_menu_share"
+        android:icon="@drawable/ic_menu_split"
         android:title="@string/menu_splitAggregate" />
 
     <item
         android:id="@+id/menu_join"
-        android:icon="@android:drawable/ic_menu_add"
+        android:icon="@drawable/ic_menu_merge"
         android:title="@string/menu_joinAggregate" />
 
     <item
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index dc5f8f8..125701b 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -540,9 +540,7 @@
         if ((mMode & MODE_MASK_CREATE_NEW) != 0) {
             // Add the header for creating a new contact
             final LayoutInflater inflater = getLayoutInflater();
-            View header = inflater.inflate(android.R.layout.simple_list_item_1, list, false);
-            TextView text = (TextView) header.findViewById(android.R.id.text1);
-            text.setText(R.string.pickerNewContactHeader);
+            View header = inflater.inflate(R.layout.create_new_contact, list, false);
             list.addHeaderView(header);
         }
 
diff --git a/src/com/android/contacts/SplitAggregateView.java b/src/com/android/contacts/SplitAggregateView.java
index 5ab8ed1..09cf5ec 100644
--- a/src/com/android/contacts/SplitAggregateView.java
+++ b/src/com/android/contacts/SplitAggregateView.java
@@ -56,19 +56,21 @@
 
     private static final String TAG = "SplitAggregateView";
 
-    private static final String[] AGGREGATE_DATA_PROJECTION = new String[] {
-            Data.MIMETYPE, RawContacts.ACCOUNT_TYPE, Data.RAW_CONTACT_ID, Data.DATA1, Data.DATA2,
-            Data.IS_PRIMARY, StructuredName.DISPLAY_NAME
-    };
+    private interface SplitQuery {
+        String[] COLUMNS = new String[] {
+                Data.MIMETYPE, RawContacts.ACCOUNT_TYPE, Data.RAW_CONTACT_ID, Data.IS_PRIMARY,
+                StructuredName.DISPLAY_NAME, Nickname.NAME, Email.DATA, Phone.NUMBER
+        };
 
-    private static final int COL_MIMETYPE = 0;
-    private static final int COL_ACCOUNT_TYPE = 1;
-    private static final int COL_RAW_CONTACT_ID = 2;
-    private static final int COL_DATA1 = 3;
-    private static final int COL_DATA2 = 4;
-    private static final int COL_IS_PRIMARY = 5;
-    private static final int COL_DISPLAY_NAME = 6;
-
+        int MIMETYPE = 0;
+        int ACCOUNT_TYPE = 1;
+        int RAW_CONTACT_ID = 2;
+        int IS_PRIMARY = 3;
+        int DISPLAY_NAME = 4;
+        int NICKNAME = 5;
+        int EMAIL = 6;
+        int PHONE = 7;
+    }
 
     private final Uri mAggregateUri;
     private OnContactSelectedListener mListener;
@@ -155,18 +157,18 @@
         HashMap<Long, RawContactInfo> rawContactInfos = new HashMap<Long, RawContactInfo>();
         Uri dataUri = Uri.withAppendedPath(mAggregateUri, Data.CONTENT_DIRECTORY);
         Cursor cursor = getContext().getContentResolver().query(dataUri,
-                AGGREGATE_DATA_PROJECTION, null, null, null);
+                SplitQuery.COLUMNS, null, null, null);
         try {
             while (cursor.moveToNext()) {
-                long rawContactId = cursor.getLong(COL_RAW_CONTACT_ID);
+                long rawContactId = cursor.getLong(SplitQuery.RAW_CONTACT_ID);
                 RawContactInfo info = rawContactInfos.get(rawContactId);
                 if (info == null) {
                     info = new RawContactInfo(rawContactId);
                     rawContactInfos.put(rawContactId, info);
-                    info.accountType = cursor.getString(COL_ACCOUNT_TYPE);
+                    info.accountType = cursor.getString(SplitQuery.ACCOUNT_TYPE);
                 }
 
-                String mimetype = cursor.getString(COL_MIMETYPE);
+                String mimetype = cursor.getString(SplitQuery.MIMETYPE);
                 if (StructuredName.CONTENT_ITEM_TYPE.equals(mimetype)) {
                     loadStructuredName(cursor, info);
                 } else if (Phone.CONTENT_ITEM_TYPE.equals(mimetype)) {
@@ -187,44 +189,24 @@
     }
 
     private void loadStructuredName(Cursor cursor, RawContactInfo info) {
-        info.name = cursor.getString(COL_DISPLAY_NAME);
-        if (info.name != null) {
-            return;
-        }
-
-        StringBuilder sb = new StringBuilder();
-        String firstName = cursor.getString(COL_DATA1);
-        String lastName = cursor.getString(COL_DATA2);
-        if (!TextUtil.isEmpty(firstName)) {
-            sb.append(firstName);
-        }
-        if  (!TextUtil.isEmpty(firstName) && !TextUtil.isEmpty(lastName)) {
-            sb.append(" ");
-        }
-        if (!TextUtil.isEmpty(lastName)) {
-            sb.append(lastName);
-        }
-
-        if (sb.length() != 0) {
-            info.name = sb.toString();
-        }
+        info.name = cursor.getString(SplitQuery.DISPLAY_NAME);
     }
 
     private void loadNickname(Cursor cursor, RawContactInfo info) {
-        if (info.nickname == null || cursor.getInt(COL_IS_PRIMARY) != 0) {
-            info.nickname = cursor.getString(COL_DATA2);
+        if (info.nickname == null || cursor.getInt(SplitQuery.IS_PRIMARY) != 0) {
+            info.nickname = cursor.getString(SplitQuery.NICKNAME);
         }
     }
 
     private void loadEmail(Cursor cursor, RawContactInfo info) {
-        if (info.email == null || cursor.getInt(COL_IS_PRIMARY) != 0) {
-            info.email = cursor.getString(COL_DATA2);
+        if (info.email == null || cursor.getInt(SplitQuery.IS_PRIMARY) != 0) {
+            info.email = cursor.getString(SplitQuery.EMAIL);
         }
     }
 
     private void loadPhoneNumber(Cursor cursor, RawContactInfo info) {
-        if (info.phone == null || cursor.getInt(COL_IS_PRIMARY) != 0) {
-            info.phone = cursor.getString(COL_DATA2);
+        if (info.phone == null || cursor.getInt(SplitQuery.IS_PRIMARY) != 0) {
+            info.phone = cursor.getString(SplitQuery.PHONE);
         }
     }
 
diff --git a/src/com/android/contacts/TwelveKeyDialer.java b/src/com/android/contacts/TwelveKeyDialer.java
index 2be677a..ebb76c0 100644
--- a/src/com/android/contacts/TwelveKeyDialer.java
+++ b/src/com/android/contacts/TwelveKeyDialer.java
@@ -89,11 +89,8 @@
     private Object mToneGeneratorLock = new Object();
     private Drawable mDigitsBackground;
     private Drawable mDigitsEmptyBackground;
-    private Drawable mDeleteBackground;
-    private Drawable mDeleteEmptyBackground;
-    private View mDigitsAndBackspace;
     private View mDialpad;
-    private View mVoicemailDialAndBackspaceRow;
+    private View mVoicemailDialAndDeleteRow;
     private View mVoicemailButton;
     private View mDialButton;
     private ListView mDialpadChooser;
@@ -158,19 +155,7 @@
             mDigits.getText().clear();
         }
 
-        // Set the proper background for the dial input area
-        if (mDigits.length() != 0) {
-            mDelete.setBackgroundDrawable(mDeleteBackground);
-            mDigits.setBackgroundDrawable(mDigitsBackground);
-            mDigits.setCompoundDrawablesWithIntrinsicBounds(
-                    getResources().getDrawable(R.drawable.ic_dial_number), null, null, null);
-        } else {
-            mDelete.setBackgroundDrawable(mDeleteEmptyBackground);
-            mDigits.setBackgroundDrawable(mDigitsEmptyBackground);
-            mDigits.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
-        }
-
-        updateDialButtonStateEnabledAttr();
+        updateDialAndDeleteButtonStateEnabledAttr();
     }
 
     @Override
@@ -185,11 +170,6 @@
         mDigitsBackground = r.getDrawable(R.drawable.btn_dial_textfield_active);
         //mDigitsBackground.setDither(true);
         mDigitsEmptyBackground = r.getDrawable(R.drawable.btn_dial_textfield);
-        //mDigitsEmptyBackground.setDither(true);
-        mDeleteBackground = r.getDrawable(R.drawable.btn_dial_delete_active);
-        //mDeleteBackground.setDither(true);
-        mDeleteEmptyBackground = r.getDrawable(R.drawable.btn_dial_delete);
-        //mDeleteEmptyBackground.setDither(true);
 
         mDigits = (EditText) findViewById(R.id.digits);
         mDigits.setKeyListener(DialerKeyListener.getInstance());
@@ -203,12 +183,12 @@
             setupKeypad();
         }
 
-        mVoicemailDialAndBackspaceRow = findViewById(R.id.voicemailAndDialAndBackspace);
+        mVoicemailDialAndDeleteRow = findViewById(R.id.voicemailAndDialAndDelete);
 
         initVoicemailButton();
 
         // Check whether we should show the onscreen "Dial" button.
-        mDialButton = mVoicemailDialAndBackspaceRow.findViewById(R.id.dialButton);
+        mDialButton = mVoicemailDialAndDeleteRow.findViewById(R.id.dialButton);
 
         if (r.getBoolean(R.bool.config_show_onscreen_dial_button)) {
             mDialButton.setOnClickListener(this);
@@ -217,12 +197,11 @@
             mDialButton = null;
         }
 
-        view = findViewById(R.id.backspace);
+        view = mVoicemailDialAndDeleteRow.findViewById(R.id.deleteButton);
         view.setOnClickListener(this);
         view.setOnLongClickListener(this);
         mDelete = view;
 
-        mDigitsAndBackspace = findViewById(R.id.digitsAndBackspace);
         mDialpad = findViewById(R.id.dialpad);  // This is null in landscape mode
 
         // Set up the "dialpad chooser" UI; see showDialpadChooser().
@@ -438,7 +417,7 @@
             showDialpadChooser(false);
         }
 
-        updateDialButtonStateEnabledAttr();
+        updateDialAndDeleteButtonStateEnabledAttr();
     }
 
     @Override
@@ -666,7 +645,7 @@
                 keyPressed(KeyEvent.KEYCODE_STAR);
                 return;
             }
-            case R.id.backspace: {
+            case R.id.deleteButton: {
                 keyPressed(KeyEvent.KEYCODE_DEL);
                 return;
             }
@@ -688,8 +667,12 @@
         final Editable digits = mDigits.getText();
         int id = view.getId();
         switch (id) {
-            case R.id.backspace: {
+            case R.id.deleteButton: {
                 digits.clear();
+                // TODO: The framework forgets to clear the pressed
+                // status of disabled button. Until this is fixed,
+                // clear manually the pressed status. b/2133127
+                mDelete.setPressed(false);
                 return true;
             }
             case R.id.one: {
@@ -789,9 +772,9 @@
     private void showDialpadChooser(boolean enabled) {
         if (enabled) {
             // Log.i(TAG, "Showing dialpad chooser!");
-            mDigitsAndBackspace.setVisibility(View.GONE);
+            mDigits.setVisibility(View.GONE);
             if (mDialpad != null) mDialpad.setVisibility(View.GONE);
-            mVoicemailDialAndBackspaceRow.setVisibility(View.GONE);
+            mVoicemailDialAndDeleteRow.setVisibility(View.GONE);
             mDialpadChooser.setVisibility(View.VISIBLE);
 
             // Instantiate the DialpadChooserAdapter and hook it up to the
@@ -802,9 +785,9 @@
             }
         } else {
             // Log.i(TAG, "Displaying normal Dialer UI.");
-            mDigitsAndBackspace.setVisibility(View.VISIBLE);
+            mDigits.setVisibility(View.VISIBLE);
             if (mDialpad != null) mDialpad.setVisibility(View.VISIBLE);
-            mVoicemailDialAndBackspaceRow.setVisibility(View.VISIBLE);
+            mVoicemailDialAndDeleteRow.setVisibility(View.VISIBLE);
             mDialpadChooser.setVisibility(View.GONE);
         }
     }
@@ -1046,14 +1029,18 @@
     }
 
     /**
-     * Update the enabledness of the "Dial" button if applicable.
+     * Update the enabledness of the "Dial" and "Backspace" buttons if applicable.
      */
-    private void updateDialButtonStateEnabledAttr() {
+    private void updateDialAndDeleteButtonStateEnabledAttr() {
+        final boolean notEmpty = mDigits.length() != 0;
+
         if (mDialButton != null) {
-            mDialButton.setEnabled(mDigits.length() != 0);
+            mDialButton.setEnabled(notEmpty);
         }
+        mDelete.setEnabled(notEmpty);
     }
 
+
     /**
      * Check if voicemail is enabled/accessible.
      */
@@ -1065,7 +1052,7 @@
             // Possibly no READ_PHONE_STATE privilege.
         }
 
-        mVoicemailButton = mVoicemailDialAndBackspaceRow.findViewById(R.id.voicemailButton);
+        mVoicemailButton = mVoicemailDialAndDeleteRow.findViewById(R.id.voicemailButton);
         if (hasVoicemail) {
             mVoicemailButton.setOnClickListener(this);
         } else {
diff --git a/src/com/android/contacts/ViewContactActivity.java b/src/com/android/contacts/ViewContactActivity.java
index 385fbc6..be78bea 100644
--- a/src/com/android/contacts/ViewContactActivity.java
+++ b/src/com/android/contacts/ViewContactActivity.java
@@ -231,8 +231,6 @@
 
         //TODO Read this value from a preference
         mShowSmsLinksForAllPhones = true;
-
-        startEntityQuery();
     }
 
     @Override
@@ -306,10 +304,6 @@
                     ContactsSource.LEVEL_SUMMARY);
             addTab(rawContactId, ContactsUtils.createTabIndicatorView(mTabWidget.getTabParent(), source));
         }
-
-        selectInitialTab();
-        mTabWidget.setVisibility(View.VISIBLE);
-        mTabWidget.postInvalidate();
     }
 
     /**
@@ -342,6 +336,8 @@
 
         mTabWidget.setCurrentTab(selectedTabIndex);
         onTabSelectionChanged(selectedTabIndex, false);
+        mTabWidget.setVisibility(View.VISIBLE);
+        mTabWidget.postInvalidate();
     }
 
     private void addAllTab() {
@@ -352,9 +348,11 @@
     }
 
     public void onTabSelectionChanged(int tabIndex, boolean clicked) {
-        long rawContactId = getTabRawContactId(tabIndex);
-        mSelectedRawContactId = rawContactId;
-        bindData();
+        Long rawContactId = getTabRawContactId(tabIndex);
+        if (rawContactId != null) {
+            mSelectedRawContactId = rawContactId;
+            bindData();
+        }
     }
 
     /**
@@ -363,7 +361,7 @@
      * @param index The index of the tab in question.
      * @return The contactId associated with the tab at the specified index.
      */
-    protected long getTabRawContactId(int index) {
+    protected Long getTabRawContactId(int index) {
         return mTabRawContactIdMap.get(index);
     }
 
@@ -392,7 +390,7 @@
                 clearCurrentTabs();
                 mEntities = readEntities(iterator);
                 bindTabs();
-                bindData();
+                selectInitialTab();
             }
         } finally {
             if (iterator != null) {
@@ -851,6 +849,13 @@
                 // TODO: entry.contactId should be renamed to entry.rawContactId
                 long contactId = entValues.getAsLong(RawContacts._ID);
 
+                // This performs the tab filtering
+                if (mSelectedRawContactId != null
+                        && mSelectedRawContactId != contactId
+                        && mSelectedRawContactId != ALL_CONTACTS_ID) {
+                    continue;
+                }
+
                 for (NamedContentValues subValue : entity.getSubValues()) {
                     ViewEntry entry = new ViewEntry();
 
@@ -896,13 +901,6 @@
                         mRawContactIds.add(entry.contactId);
                     }
 
-                    // This performs the tab filtering
-                    if (mSelectedRawContactId != null
-                            && mSelectedRawContactId != entry.contactId
-                            && mSelectedRawContactId != ALL_CONTACTS_ID) {
-                        continue;
-                    }
-
                     if (CommonDataKinds.Phone.CONTENT_ITEM_TYPE.equals(mimetype)
                             || CommonDataKinds.Email.CONTENT_ITEM_TYPE.equals(mimetype)
                             || CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE.equals(mimetype)