Reconcile with ics-factoryrom-release

Change-Id: Iaa355261c225244c7bc7ebc3a26c5eebf0a809ab
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index f4dcdf6..df65877 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -45,6 +45,7 @@
     <uses-permission android:name="com.android.voicemail.permission.READ_WRITE_ALL_VOICEMAIL" />
     <!-- allow broadcasting secret code intents that reboot the phone -->
     <uses-permission android:name="android.permission.REBOOT" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
 
     <application
         android:name="com.android.contacts.ContactsApplication"
diff --git a/res/drawable-hdpi/dial_background_texture.png b/res/drawable-hdpi/dial_background_texture.png
index 9df3b1e..95bec9f 100644
--- a/res/drawable-hdpi/dial_background_texture.png
+++ b/res/drawable-hdpi/dial_background_texture.png
Binary files differ
diff --git a/res/drawable-mdpi/dial_background_texture.png b/res/drawable-mdpi/dial_background_texture.png
index 90cd07c..a6d666c 100644
--- a/res/drawable-mdpi/dial_background_texture.png
+++ b/res/drawable-mdpi/dial_background_texture.png
Binary files differ
diff --git a/res/drawable-nodpi/background_dial_holo_dark.png b/res/drawable-nodpi/background_dial_holo_dark.png
new file mode 100644
index 0000000..3dba50c
--- /dev/null
+++ b/res/drawable-nodpi/background_dial_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/dial_background_texture.png b/res/drawable-xhdpi/dial_background_texture.png
index 02aacc8..184049f 100644
--- a/res/drawable-xhdpi/dial_background_texture.png
+++ b/res/drawable-xhdpi/dial_background_texture.png
Binary files differ
diff --git a/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml b/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
index 0d94622..de6cd97 100644
--- a/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
+++ b/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
@@ -18,26 +18,26 @@
 -->
 
 <!-- Note: padding might be controlled programatically -->
-<LinearLayout
+<FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:orientation="horizontal"
-    android:gravity="center_vertical"
-    android:minHeight="@dimen/detail_min_line_item_height">
+    android:paddingLeft="16dip">
 
-    <!-- Note: padding might be controlled programatically -->
-    <com.android.contacts.detail.PrimaryActionViewContainer
-        android:id="@+id/primary_action_view_container"
-        android:layout_width="0dip"
-        android:layout_weight="1"
+    <com.android.contacts.detail.ActionsViewContainer
+        android:id="@+id/actions_view_container"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:minHeight="@dimen/detail_min_line_item_height"
+        android:gravity="center_vertical"
         android:orientation="horizontal"
-        android:layout_gravity="center_vertical"
         android:focusable="true"
-        android:background="?android:attr/selectableItemBackground">
+        android:background="?android:attr/selectableItemBackground"
+        android:nextFocusRight="@+id/secondary_action_view_container">
 
+        <!-- Note: padding might be controlled programatically -->
         <LinearLayout
+            android:id="@+id/primary_action_view"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical"
@@ -80,7 +80,7 @@
             android:id="@+id/type"
             style="@style/ContactDetailItemType"
             android:layout_width="wrap_content"
-            android:layout_height="match_parent"
+            android:layout_height="wrap_content"
             android:layout_gravity="center_vertical"
             android:paddingRight="16dip" />
 
@@ -92,33 +92,34 @@
             android:layout_gravity="center_vertical"
             android:background="@drawable/ic_menu_mark" />
 
-    </com.android.contacts.detail.PrimaryActionViewContainer>
 
-    <View
-        android:id="@+id/vertical_divider"
-        android:layout_width="1px"
-        android:layout_height="match_parent"
-        android:layout_marginTop="@dimen/detail_vertical_divider_vertical_margin"
-        android:layout_marginBottom="@dimen/detail_vertical_divider_vertical_margin"
-        android:background="?android:attr/dividerVertical" />
-
-    <!-- Note: padding might be controlled programatically -->
-    <FrameLayout
-        android:id="@+id/secondary_action_view_container"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:paddingLeft="@dimen/detail_item_icon_margin"
-        android:paddingRight="@dimen/detail_item_icon_margin"
-        android:duplicateParentState="false"
-        android:focusable="true"
-        android:background="?android:attr/selectableItemBackground">
-        <ImageView
-            android:id="@+id/secondary_action_button"
-            android:layout_width="32dip"
+        <View
+            android:id="@+id/vertical_divider"
+            android:layout_width="1px"
             android:layout_height="match_parent"
-            android:layout_centerVertical="true"
-            android:gravity="center"
-            android:scaleType="center"
-            android:duplicateParentState="false" />
-    </FrameLayout>
-</LinearLayout>
+            android:layout_marginTop="@dimen/detail_vertical_divider_vertical_margin"
+            android:layout_marginBottom="@dimen/detail_vertical_divider_vertical_margin"
+            android:background="?android:attr/dividerVertical" />
+
+        <!-- Note: padding might be controlled programatically -->
+        <FrameLayout
+            android:id="@+id/secondary_action_view_container"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:paddingLeft="@dimen/detail_item_icon_margin"
+            android:paddingRight="@dimen/detail_item_icon_margin"
+            android:duplicateParentState="false"
+            android:focusable="true"
+            android:background="?android:attr/selectableItemBackground"
+            android:nextFocusLeft="@id/actions_view_container">
+            <ImageView
+                android:id="@+id/secondary_action_button"
+                android:layout_width="32dip"
+                android:layout_height="match_parent"
+                android:layout_centerVertical="true"
+                android:gravity="center"
+                android:scaleType="center"
+                android:duplicateParentState="false" />
+        </FrameLayout>
+    </com.android.contacts.detail.ActionsViewContainer>
+</FrameLayout>
diff --git a/res/layout/contact_detail_list_item.xml b/res/layout/contact_detail_list_item.xml
index 99f027f..a410dc9 100644
--- a/res/layout/contact_detail_list_item.xml
+++ b/res/layout/contact_detail_list_item.xml
@@ -18,27 +18,25 @@
 -->
 
 <!-- Note: padding might be controlled programatically -->
-<LinearLayout
+<FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:orientation="horizontal"
-    android:gravity="center_vertical"
-    android:paddingTop="8dip"
-    android:paddingBottom="8dip"
-    android:minHeight="@dimen/detail_min_line_item_height">
+    android:paddingLeft="16dip">
 
-    <!-- Note: padding might be controlled programatically -->
-    <com.android.contacts.detail.PrimaryActionViewContainer
-        android:id="@+id/primary_action_view_container"
-        android:layout_width="0dip"
-        android:layout_weight="1"
+    <com.android.contacts.detail.ActionsViewContainer
+        android:id="@+id/actions_view_container"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
         android:focusable="true"
-        android:background="?android:attr/selectableItemBackground">
+        android:background="?android:attr/selectableItemBackground"
+        android:nextFocusRight="@+id/secondary_action_view_container"
+        android:minHeight="@dimen/detail_min_line_item_height">
 
+        <!-- Note: padding might be controlled programatically -->
         <LinearLayout
+            android:id="@+id/primary_action_view"
             android:layout_width="0dip"
             android:layout_height="wrap_content"
             android:layout_weight="1"
@@ -93,30 +91,31 @@
                 android:visibility="gone" />
 
         </LinearLayout>
-    </com.android.contacts.detail.PrimaryActionViewContainer>
 
-    <View
-        android:id="@+id/vertical_divider"
-        android:layout_width="1dip"
-        android:layout_height="match_parent"
-        android:layout_marginTop="@dimen/detail_vertical_divider_vertical_margin"
-        android:layout_marginBottom="@dimen/detail_vertical_divider_vertical_margin"
-        android:background="?android:attr/dividerVertical" />
+        <View
+            android:id="@+id/vertical_divider"
+            android:layout_width="1dip"
+            android:layout_height="match_parent"
+            android:layout_marginTop="@dimen/detail_vertical_divider_vertical_margin"
+            android:layout_marginBottom="@dimen/detail_vertical_divider_vertical_margin"
+            android:background="?android:attr/dividerVertical" />
 
-    <!-- Note: padding might be controlled programatically -->
-    <FrameLayout
-        android:id="@+id/secondary_action_view_container"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:paddingLeft="@dimen/detail_item_icon_margin"
-        android:paddingRight="@dimen/detail_item_icon_margin"
-        android:focusable="true"
-        android:background="?android:attr/selectableItemBackground">
-        <ImageView
-            android:id="@+id/secondary_action_button"
-            android:layout_width="32dip"
-            android:layout_height="32dip"
-            android:layout_gravity="center_vertical"
-            android:duplicateParentState="false" />
-    </FrameLayout>
-</LinearLayout>
+        <!-- Note: padding might be controlled programatically -->
+        <FrameLayout
+            android:id="@+id/secondary_action_view_container"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:paddingLeft="@dimen/detail_item_icon_margin"
+            android:paddingRight="@dimen/detail_item_icon_margin"
+            android:focusable="true"
+            android:background="?android:attr/selectableItemBackground"
+            android:nextFocusLeft="@id/actions_view_container">
+            <ImageView
+                android:id="@+id/secondary_action_button"
+                android:layout_width="32dip"
+                android:layout_height="32dip"
+                android:layout_gravity="center_vertical"
+                android:duplicateParentState="false" />
+        </FrameLayout>
+    </com.android.contacts.detail.ActionsViewContainer>
+</FrameLayout>
diff --git a/res/layout/contact_tile_frequent_phone.xml b/res/layout/contact_tile_frequent_phone.xml
index 26c221c..dffdfc7 100644
--- a/res/layout/contact_tile_frequent_phone.xml
+++ b/res/layout/contact_tile_frequent_phone.xml
@@ -55,31 +55,38 @@
             android:fadingEdgeLength="3dip"
             android:ellipsize="marquee" />
 
-        <TextView
-            android:id="@+id/contact_tile_phone_number"
-            android:layout_width="wrap_content"
+        <LinearLayout
+            android:orientation="horizontal"
             android:layout_height="wrap_content"
-            android:textSize="14sp"
-            android:textColor="@color/dialtacts_secondary_text_color"
-            android:layout_marginLeft="8dip"
-            android:singleLine="true"
-            android:maxLength="18"
+            android:layout_width="match_parent"
+            android:layout_below="@id/contact_tile_name"
             android:layout_toRightOf="@id/image_container"
-            android:layout_below="@id/contact_tile_name" />
+            android:gravity="center_vertical">
 
-        <TextView
-            android:id="@+id/contact_tile_phone_type"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textSize="14sp"
-            android:ellipsize="end"
-            android:singleLine="true"
-            android:textAllCaps="true"
-            android:textColor="@color/dialtacts_secondary_text_color"
-            android:layout_marginLeft="12dip"
-            android:maxLength="8"
-            android:layout_alignParentRight="true"
-            android:layout_alignTop="@id/contact_tile_phone_number" />
+            <TextView
+                android:id="@+id/contact_tile_phone_number"
+                android:layout_width="0dip"
+                android:layout_height="wrap_content"
+                android:layout_weight="5"
+                android:textSize="14sp"
+                android:textColor="@color/dialtacts_secondary_text_color"
+                android:layout_marginLeft="8dip"
+                android:singleLine="true"/>
+
+            <TextView
+                android:id="@+id/contact_tile_phone_type"
+                android:layout_width="0dip"
+                android:layout_height="wrap_content"
+                android:layout_weight="3"
+                android:textSize="12sp"
+                android:ellipsize="end"
+                android:singleLine="true"
+                android:textAllCaps="true"
+                android:textColor="@color/dialtacts_secondary_text_color"
+                android:layout_marginLeft="8dip"
+                android:gravity="right" />
+
+        </LinearLayout>
 
         <View
             android:id="@+id/contact_tile_horizontal_divider"
diff --git a/res/layout/dialpad_additional_buttons.xml b/res/layout/dialpad_additional_buttons.xml
index ae37fd5..2d42ad0 100644
--- a/res/layout/dialpad_additional_buttons.xml
+++ b/res/layout/dialpad_additional_buttons.xml
@@ -21,7 +21,6 @@
     android:layout_height="0px"
     android:layout_weight="0.150"
     android:layout_gravity="center_horizontal"
-    android:layout_marginTop="@dimen/dialpad_vertical_margin"
     android:background="@drawable/dialpad_background"
     android:orientation="horizontal">
 
@@ -37,6 +36,12 @@
         android:contentDescription="@string/description_search_button"
         android:src="@drawable/ic_see_contacts_holo_dark"/>
 
+    <View
+        android:layout_width="1dip"
+        android:layout_height="24dip"
+        android:layout_gravity="center_vertical"
+        android:background="?android:attr/dividerVertical" />
+
     <!-- Onscreen "Dial" button, diused on all platforms by
          default. Its usage can be disabled using resources (see
          config.xml.) -->
@@ -50,6 +55,12 @@
         android:contentDescription="@string/description_dial_button"
         android:src="@drawable/ic_dial_action_call" />
 
+    <View
+        android:layout_width="1dip"
+        android:layout_height="24dip"
+        android:layout_gravity="center_vertical"
+        android:background="?android:attr/dividerVertical" />
+
     <!-- Onscreen "Backspace/Delete" button -->
     <ImageButton android:id="@+id/deleteButton"
         android:layout_width="0px"
diff --git a/res/layout/dialpad_fragment.xml b/res/layout/dialpad_fragment.xml
index 96cf543..ed16caf 100644
--- a/res/layout/dialpad_fragment.xml
+++ b/res/layout/dialpad_fragment.xml
@@ -59,6 +59,11 @@
     <!-- Keypad section -->
     <include layout="@layout/dialpad" />
 
+    <View
+       android:layout_width="match_parent"
+       android:layout_height="@dimen/dialpad_vertical_margin"
+       android:background="#66000000"/>
+
     <!-- Horizontal row of buttons (Search + DialButton + Delete.) -->
     <include layout="@layout/dialpad_additional_buttons" />
 
diff --git a/res/layout/dialtacts_activity.xml b/res/layout/dialtacts_activity.xml
index 6484d87..af85bba 100644
--- a/res/layout/dialtacts_activity.xml
+++ b/res/layout/dialtacts_activity.xml
@@ -19,7 +19,7 @@
     android:layout_height="match_parent"
     android:layout_marginTop="?android:attr/actionBarSize">
 
-    <android.support.v4.view.ViewPager
+    <com.android.contacts.activities.DialtactsViewPager
         android:id="@+id/pager"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
diff --git a/res/layout/quickcontact_list_item.xml b/res/layout/quickcontact_list_item.xml
index 7929718..c018eea 100755
--- a/res/layout/quickcontact_list_item.xml
+++ b/res/layout/quickcontact_list_item.xml
@@ -16,22 +16,23 @@
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/actions_view_container"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
     android:orientation="horizontal"
-    android:background="@drawable/quickcontact_list_item_background"
-    android:gravity="center_vertical">
+    android:gravity="center_vertical"
+    android:background="?android:attr/selectableItemBackground"
+    android:nextFocusRight="@+id/secondary_action_button">
     <LinearLayout
-        android:id="@+id/primary_action_view_container"
         android:layout_width="0dip"
         android:layout_height="wrap_content"
-        android:minHeight="?android:attr/listPreferredItemHeight"
         android:layout_weight="1"
-        android:orientation="vertical"
         android:paddingLeft="16dip"
         android:paddingRight="16dip"
         android:gravity="center_vertical"
-        android:background="?android:attr/selectableItemBackground">
+        android:orientation="vertical"
+    >
         <TextView
             android:id="@android:id/text1"
             android:layout_width="wrap_content"
@@ -61,5 +62,6 @@
         android:paddingLeft="@dimen/detail_item_icon_margin"
         android:paddingRight="@dimen/detail_item_icon_margin"
         android:background="?android:attr/selectableItemBackground"
-        android:duplicateParentState="false" />
+        android:duplicateParentState="false"
+        android:nextFocusLeft="@id/actions_view_container" />
 </LinearLayout>
diff --git a/res/layout/select_dialog_item.xml b/res/layout/select_dialog_item.xml
index ea671dd..d49ae10 100644
--- a/res/layout/select_dialog_item.xml
+++ b/res/layout/select_dialog_item.xml
@@ -23,7 +23,7 @@
     android:id="@android:id/text1"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:minHeight="48dip"
+    android:minHeight="?android:attr/listPreferredItemHeightSmall"
     android:textAppearance="?android:attr/textAppearanceMedium"
     android:textColor="?android:attr/textColorAlertDialogListItem"
     android:gravity="center_vertical"
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 5cc93a1..5cc3148 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -161,12 +161,12 @@
     <string name="simContacts_title" msgid="27341688347689769">"Kontakter på SIM-kort"</string>
     <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Du har ingen kontakter å vise. (Hvis du nettopp har lagt til en konto, kan det ta noen minutter å synkronisere kontaktene.)"</string>
     <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Du har ingen kontakter å vise."</string>
-    <!-- syntax error in translation for noContactsHelpText (6450346791169710787) org.xmlpull.v1.XmlPullParserException: expected: /li read: font (position:END_TAG </font>@1:292 in java.io.StringReader@761a626f)  -->
-    <!-- syntax error in translation for noContactsHelpText (7633826236417884130) org.xmlpull.v1.XmlPullParserException: expected: /li read: font (position:END_TAG </font>@1:293 in java.io.StringReader@3e34a1fc)  -->
+    <!-- syntax error in translation for noContactsHelpText (6450346791169710787) org.xmlpull.v1.XmlPullParserException: expected: /li read: font (position:END_TAG </font>@1:292 in java.io.StringReader@11975b59)  -->
+    <!-- syntax error in translation for noContactsHelpText (7633826236417884130) org.xmlpull.v1.XmlPullParserException: expected: /li read: font (position:END_TAG </font>@1:293 in java.io.StringReader@67ee3914)  -->
     <string name="noContactsHelpTextWithSync" product="tablet" msgid="2364665535969139880">"Du har ingen kontakter å vise. (Hvis du nylig la til en konto, kan det ta noen minutter å synkronisere kontaktene.)"\n\n"Slik legger du til kontakter: Trykk på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>", og trykk deretter på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer"</b></font>" for å legge til eller konfigurere en konto med kontakter som kan synkroniseres til nettbrettet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Visningsalternativer"</b></font>" for å endre hvilke kontakter som vises"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å opprette en ny kontakt fra grunnen av"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer/Eksporter"</b></font>" for å importere kontakter fra SIM- eller SD-kort"\n</li></string>
     <string name="noContactsHelpTextWithSync" product="default" msgid="3017521127042216243">"Du har ingen kontakter å vise. (Hvis du nylig la til en konto, kan det ta noen minutter å synkronisere kontaktene.)"\n\n"Slik legger du til kontakter: Trykk på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" og trykk deretter på: "\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer "</b></font>" for å legge til eller konfigurere en konto med kontakter som kan synkroniseres til telefonen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Visningsalternativer"</b></font>" for å endre hvilke kontakter som vises"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å opprette en ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importér/Eksportér"</b></font>" for å importere kontakter fra SIM- eller SD-kort"\n</li></string>
-    <!-- syntax error in translation for noContactsNoSimHelpText (6031363021287849874) org.xmlpull.v1.XmlPullParserException: expected: /li read: font (position:END_TAG </font>@1:297 in java.io.StringReader@7176c74b)  -->
-    <!-- syntax error in translation for noContactsNoSimHelpText (467658807711582876) org.xmlpull.v1.XmlPullParserException: expected: /li read: font (position:END_TAG </font>@1:297 in java.io.StringReader@2d16471f)  -->
+    <!-- syntax error in translation for noContactsNoSimHelpText (6031363021287849874) org.xmlpull.v1.XmlPullParserException: expected: /li read: font (position:END_TAG </font>@1:297 in java.io.StringReader@48e5855a)  -->
+    <!-- syntax error in translation for noContactsNoSimHelpText (467658807711582876) org.xmlpull.v1.XmlPullParserException: expected: /li read: font (position:END_TAG </font>@1:297 in java.io.StringReader@5495fd19)  -->
     <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="6222739731808897565">"Du har ingen kontakter å vise. (Hvis du nylig la til en konto, kan det ta noen minutter å synkronisere kontaktene.)"\n\n"Slik legger du til kontakter: Trykk på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>", og trykk deretter på: "\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer"</b></font>" for å legge til eller konfigurere en konto med kontakter som kan synkroniseres til nettbrettet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Visningsalternativer"</b></font>" for å endre hvilke kontakter som vises"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å opprette en ny kontakt fra grunnen av"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer/eksporter"</b></font>" for å importere kontakter fra SD-kortet"\n</li></string>
     <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="9040060730467973050">"Du har ingen kontakter å vise. (Hvis du nylig la til en konto, kan det ta noen minutter å synkronisere kontaktene.)"\n\n"Slik legger du til kontakter: Trykk på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" og trykk deretter på: "\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer "</b></font>" for å legge til eller konfigurere en konto med kontakter som kan synkroniseres til telefonen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Visningsalternativer"</b></font>" for å endre hvilke kontakter som vises"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å opprette en ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importér/eksportér"</b></font>" for å importere kontakter fra SD-kortet"\n</li></string>
     <string name="noFavoritesHelpText" msgid="3744655776704833277">"Du har ingen favoritter."\n\n"Slik legger du til en kontakt i favorittlisten:"\n\n" "<li>"Trykk på fanen "<b>"Kontakter"</b>" "\n</li>" "\n<li>"Trykk på kontakten du vil legge til i favoritter"\n</li>" "\n<li>"Trykk på stjernen ved siden av kontaktnavnet"\n</li></string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 39c2b4d..79f1287 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -169,7 +169,7 @@
     <string name="noContactsNoSimHelpText" product="default" msgid="467658807711582876">"Huna anwani zozote za kuonyesha."\n\n"Ili kuongeza anwani, bonyeza "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>" na gusa:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akaunti"</b></font>" ili kuongeza au kusanidi akaunti ya anwani unaweza kupatanisha katika simu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mawasiliano mapya"</b></font>" ili kuunda anwani mpya kuanzia mwanzo"</li>" "\n\n<li><font fgcolor="#ffffffff"><b>"Leta/Hamisha"</b></font>"ili kuleta anwani kutoka kwa kadi yako ya SD"\n</li></string>
     <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="6222739731808897565">"Huna anwani zozote za kuonyesha. (Kama uliongeza akaunti, inaweza kuchukua dakika chache kusawazisha anwani.)"\n\n"Kuongeza anwani, bonyeza "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>" na uguse:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akaunti"</b></font>" ili kuongeza au kusanidi akaunti na anwani unazoweza kusawazisha kwenye kompyuta ndogo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Chaguo za onyesha"</b></font>" ili kubadilisha ni anwani gani zinazoonekana"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anwani mpya"</b></font>" ili kuunda anwani mpya kutoka mwanzo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Leta/Hamisha"</b></font>" ili kuleta anwani kutoka kwa kadi yako ya SD"\n</li></string>
     <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="9040060730467973050">"Hauna anwani zozote za kuonyesha. (Kama umeongeza tu akaunti, inaweza kuchukua dadika chache ili kupatanisha anwani.)"\n\n"Ili kuongeza anwani, bonyeza "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>" na gusa:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akaunti"</b></font>" ili kuongeza au kusanidi anwani unayoweza kupatanisha katika simu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Onyesha Machaguo"</b></font>"ili kubadilisha anwani zinazoonekana"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anwani mpya"</b></font>" ili kuunda anwani mpya kuanzia mwanzo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Leta/Hamisha"</b></font>"ili kuleta anwani kutoka kwa kadi yako ya SD"\n</li></string>
-    <!-- syntax error in translation for noFavoritesHelpText (3744655776704833277) org.xmlpull.v1.XmlPullParserException: expected: /string read: b (position:END_TAG </b>@1:167 in java.io.StringReader@2d3bad12)  -->
+    <!-- syntax error in translation for noFavoritesHelpText (3744655776704833277) org.xmlpull.v1.XmlPullParserException: expected: /string read: b (position:END_TAG </b>@1:167 in java.io.StringReader@57c39a2d)  -->
     <string name="liveFolder_all_label" msgid="5961411940473276616">"Anwani zote"</string>
     <string name="liveFolder_favorites_label" msgid="2674341514070517105">"Yenye nyota"</string>
     <string name="liveFolder_phones_label" msgid="1709786878793436245">"Simu"</string>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 70145c1..5a94324 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -136,7 +136,7 @@
     <dimen name="group_detail_border_padding">32dip</dimen>
 
     <!-- Height of edit text in dialpad fragment -->
-    <dimen name="dialpad_horizontal_margin">4dip</dimen>
+    <dimen name="dialpad_horizontal_margin">0dip</dimen>
     <dimen name="dialpad_vertical_margin">2dip</dimen>
     <dimen name="dialpad_digits_text_size">35sp</dimen>
 
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 0b47d5a..24822c0 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -20,7 +20,7 @@
         <item name="android:windowActionBarOverlay">true</item>
         <item name="android:actionBarStyle">@style/DialtactsActionBarStyle</item>
         <item name="android:windowContentOverlay">@null</item>
-        <item name="android:windowBackground">@android:color/black</item>
+        <item name="android:windowBackground">@drawable/background_dial_holo_dark</item>
         <item name="activated_background">@drawable/list_item_activated_background</item>
         <item name="section_header_background">@drawable/list_title_holo</item>
         <item name="list_section_header_height">32dip</item>
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index e465772..2697589 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -331,10 +331,11 @@
                             new String[] {Contacts._ID, Contacts.LOOKUP_KEY},
                             null, null, null);
                     try {
-                        c.moveToFirst();
-                        final long contactId = c.getLong(0);
-                        final String lookupKey = c.getString(1);
-                        lookupUri = Contacts.getLookupUri(contactId, lookupKey);
+                        if (c.moveToFirst()) {
+                            final long contactId = c.getLong(0);
+                            final String lookupKey = c.getString(1);
+                            lookupUri = Contacts.getLookupUri(contactId, lookupKey);
+                        }
                     } finally {
                         c.close();
                     }
diff --git a/src/com/android/contacts/ContactsUtils.java b/src/com/android/contacts/ContactsUtils.java
index f1f73ed..4de62b6 100644
--- a/src/com/android/contacts/ContactsUtils.java
+++ b/src/com/android/contacts/ContactsUtils.java
@@ -102,8 +102,8 @@
      * considered equal for collapsing in the GUI. For caller-id, use
      * {@link PhoneNumberUtils#compare(Context, String, String)} instead
      */
-    public static final boolean shouldCollapse(Context context, CharSequence mimetype1,
-            CharSequence data1, CharSequence mimetype2, CharSequence data2) {
+    public static final boolean shouldCollapse(CharSequence mimetype1, CharSequence data1,
+            CharSequence mimetype2, CharSequence data2) {
         // different mimetypes? don't collapse
         if (!TextUtils.equals(mimetype1, mimetype2)) return false;
 
diff --git a/src/com/android/contacts/activities/DialtactsViewPager.java b/src/com/android/contacts/activities/DialtactsViewPager.java
new file mode 100644
index 0000000..fb869a9
--- /dev/null
+++ b/src/com/android/contacts/activities/DialtactsViewPager.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2011 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.
+ */
+
+package com.android.contacts.activities;
+
+import android.content.Context;
+import android.support.v4.view.ViewPager;
+import android.util.AttributeSet;
+
+public class DialtactsViewPager extends ViewPager {
+    public DialtactsViewPager(Context context) {
+        super(context);
+    }
+
+    public DialtactsViewPager(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    /**
+     * ViewPager inherits ViewGroup's default behavior of delayed clicks
+     * on its children, but in order to make the dialpad more responsive we
+     * disable that here. The Call Log and Favorites tabs are both
+     * ListViews which delay their children anyway, as desired to prevent
+     * seeing pressed states flashing while scrolling lists
+     */
+    public boolean shouldDelayChildPressedState() {
+        return false;
+    }
+}
diff --git a/src/com/android/contacts/activities/GroupDetailActivity.java b/src/com/android/contacts/activities/GroupDetailActivity.java
index 2708d5d..b0355fc 100644
--- a/src/com/android/contacts/activities/GroupDetailActivity.java
+++ b/src/com/android/contacts/activities/GroupDetailActivity.java
@@ -105,7 +105,9 @@
 
         @Override
         public void onContactSelected(Uri contactUri) {
-            startActivity(new Intent(Intent.ACTION_VIEW, contactUri));
+            Intent intent = new Intent(Intent.ACTION_VIEW, contactUri);
+            intent.putExtra(ContactDetailActivity.INTENT_KEY_IGNORE_DEFAULT_UP_BEHAVIOR, true);
+            startActivity(intent);
         }
 
     };
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index d2759dc..3430109 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -949,9 +949,7 @@
             }
 
             TabState tab = mActionBarAdapter.getCurrentTab();
-            if (tab == TabState.GROUPS) {
-                mGroupsFragment.setAddAccountsVisibility(!areAccountsAvailable());
-            }
+            showEmptyStateForTab(tab);
         }
 
         invalidateOptionsMenuIfNeeded();
diff --git a/src/com/android/contacts/detail/PrimaryActionViewContainer.java b/src/com/android/contacts/detail/ActionsViewContainer.java
similarity index 79%
rename from src/com/android/contacts/detail/PrimaryActionViewContainer.java
rename to src/com/android/contacts/detail/ActionsViewContainer.java
index a342884..05382eb 100644
--- a/src/com/android/contacts/detail/PrimaryActionViewContainer.java
+++ b/src/com/android/contacts/detail/ActionsViewContainer.java
@@ -25,21 +25,21 @@
 
 /**
  * Custom {@link LinearLayout} which remembers its position in the {@link ListView}. Should be
- * used for primary touch targets in {@link ContactDetailFragment}.
+ * used for action touch targets in {@link ContactDetailFragment}.
  */
-/* package */ class PrimaryActionViewContainer extends LinearLayout {
+/* package */ class ActionsViewContainer extends LinearLayout {
 
     private ContextMenuInfo mContextMenuInfo;
 
-    public PrimaryActionViewContainer(Context context) {
+    public ActionsViewContainer(Context context) {
         super(context);
     }
 
-    public PrimaryActionViewContainer(Context context, AttributeSet attrs) {
+    public ActionsViewContainer(Context context, AttributeSet attrs) {
         this(context, attrs, 0);
     }
 
-    public PrimaryActionViewContainer(Context context, AttributeSet attrs, int defStyle) {
+    public ActionsViewContainer(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
     }
 
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 775b50a..456abe8 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -23,7 +23,6 @@
 import com.android.contacts.ContactSaveService;
 import com.android.contacts.ContactsUtils;
 import com.android.contacts.GroupMetaData;
-import com.android.contacts.NfcHandler;
 import com.android.contacts.R;
 import com.android.contacts.TypePrecedence;
 import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
@@ -1348,8 +1347,7 @@
                 return false;
             }
 
-            if (!ContactsUtils.shouldCollapse(context, mimetype, data, entry.mimetype,
-                    entry.data)) {
+            if (!ContactsUtils.shouldCollapse(mimetype, data, entry.mimetype, entry.data)) {
                 return false;
             }
 
@@ -1412,7 +1410,8 @@
         public final TextView footer;
         public final ImageView presenceIcon;
         public final ImageView secondaryActionButton;
-        public final View primaryActionViewContainer;
+        public final View actionsViewContainer;
+        public final View primaryActionView;
         public final View secondaryActionViewContainer;
         public final View secondaryActionDivider;
         public final View primaryIndicator;
@@ -1426,8 +1425,9 @@
             primaryIndicator = view.findViewById(R.id.primary_indicator);
             presenceIcon = (ImageView) view.findViewById(R.id.presence_icon);
 
-            primaryActionViewContainer = view.findViewById(R.id.primary_action_view_container);
-            primaryActionViewContainer.setOnClickListener(primaryActionClickListener);
+            actionsViewContainer = view.findViewById(R.id.actions_view_container);
+            actionsViewContainer.setOnClickListener(primaryActionClickListener);
+            primaryActionView = view.findViewById(R.id.primary_action_view);
 
             secondaryActionViewContainer = view.findViewById(
                     R.id.secondary_action_view_container);
@@ -1626,11 +1626,11 @@
                 presenceIconView.setVisibility(View.GONE);
             }
 
-            final PrimaryActionViewContainer primaryActionButtonContainer =
-                    (PrimaryActionViewContainer) views.primaryActionViewContainer;
-            primaryActionButtonContainer.setTag(entry);
-            primaryActionButtonContainer.setPosition(position);
-            registerForContextMenu(primaryActionButtonContainer);
+            final ActionsViewContainer actionsButtonContainer =
+                    (ActionsViewContainer) views.actionsViewContainer;
+            actionsButtonContainer.setTag(entry);
+            actionsButtonContainer.setPosition(position);
+            registerForContextMenu(actionsButtonContainer);
 
             // Set the secondary action button
             final ImageView secondaryActionView = views.secondaryActionButton;
@@ -1656,14 +1656,18 @@
                 views.secondaryActionDivider.setVisibility(View.GONE);
             }
 
-            // Right padding should not have "pressed" effect.
-            view.setPadding(0, 0, mViewEntryDimensions.getPaddingRight(), 0);
-            // Top, left, and bottom paddings should have "pressed" effect.
-            primaryActionButtonContainer.setPadding(entry.isInSubSection() ?
-                    mViewEntryDimensions.getWidePaddingLeft() :
-                            mViewEntryDimensions.getPaddingLeft(),
+            // Right and left padding should not have "pressed" effect.
+            view.setPadding(
+                    entry.isInSubSection()
+                            ? mViewEntryDimensions.getWidePaddingLeft()
+                            : mViewEntryDimensions.getPaddingLeft(),
+                    0, mViewEntryDimensions.getPaddingRight(), 0);
+            // Top and bottom padding should have "pressed" effect.
+            final View primaryActionView = views.primaryActionView;
+            primaryActionView.setPadding(
+                    primaryActionView.getPaddingLeft(),
                     mViewEntryDimensions.getPaddingTop(),
-                    0,
+                    primaryActionView.getPaddingRight(),
                     mViewEntryDimensions.getPaddingBottom());
             secondaryActionViewContainer.setPadding(
                     secondaryActionViewContainer.getPaddingLeft(),
diff --git a/src/com/android/contacts/editor/RawContactEditorView.java b/src/com/android/contacts/editor/RawContactEditorView.java
index 118ca26..2d42a50 100644
--- a/src/com/android/contacts/editor/RawContactEditorView.java
+++ b/src/com/android/contacts/editor/RawContactEditorView.java
@@ -278,6 +278,7 @@
                             // collapse them again.
                             addOrganizationButton.setVisibility(View.GONE);
                             organizationSectionViewContainer.setVisibility(View.VISIBLE);
+                            organizationSectionViewContainer.requestFocus();
                         }
                     });
 
diff --git a/src/com/android/contacts/interactions/ImportExportDialogFragment.java b/src/com/android/contacts/interactions/ImportExportDialogFragment.java
index 078f63e..e0b617c 100644
--- a/src/com/android/contacts/interactions/ImportExportDialogFragment.java
+++ b/src/com/android/contacts/interactions/ImportExportDialogFragment.java
@@ -71,11 +71,11 @@
 
         // Adapter that shows a list of string resources
         final ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(getActivity(),
-                android.R.layout.select_dialog_item) {
+                R.layout.select_dialog_item) {
             @Override
             public View getView(int position, View convertView, ViewGroup parent) {
                 final TextView result = (TextView)(convertView != null ? convertView :
-                        dialogInflater.inflate(android.R.layout.select_dialog_item, parent, false));
+                        dialogInflater.inflate(R.layout.select_dialog_item, parent, false));
 
                 final int resId = getItem(position);
                 result.setText(resId);
@@ -127,7 +127,6 @@
         };
         return new AlertDialog.Builder(getActivity())
                 .setTitle(R.string.dialog_import_export)
-                .setNegativeButton(android.R.string.cancel, null)
                 .setSingleChoiceItems(adapter, -1, clickListener)
                 .create();
     }
diff --git a/src/com/android/contacts/interactions/PhoneNumberInteraction.java b/src/com/android/contacts/interactions/PhoneNumberInteraction.java
index 918dac0..a42456c 100644
--- a/src/com/android/contacts/interactions/PhoneNumberInteraction.java
+++ b/src/com/android/contacts/interactions/PhoneNumberInteraction.java
@@ -19,6 +19,7 @@
 import com.android.contacts.Collapser;
 import com.android.contacts.Collapser.Collapsible;
 import com.android.contacts.ContactSaveService;
+import com.android.contacts.ContactsUtils;
 import com.android.contacts.R;
 import com.android.contacts.model.AccountType;
 import com.android.contacts.model.AccountType.StringInflater;
@@ -123,18 +124,8 @@
         }
 
         public boolean shouldCollapseWith(PhoneItem phoneItem) {
-            try {
-                PhoneNumberUtil util = PhoneNumberUtil.getInstance();
-                PhoneNumber phoneNumber1 = util.parse(phoneNumber, "ZZ" /* Unknown */);
-                PhoneNumber phoneNumber2 = util.parse(phoneItem.phoneNumber, "ZZ" /* Unknown */);
-                MatchType matchType = util.isNumberMatch(phoneNumber1, phoneNumber2);
-                if (matchType == MatchType.SHORT_NSN_MATCH) {
-                    return true;
-                }
-            } catch (NumberParseException e) {
-                return TextUtils.equals(phoneNumber, phoneItem.phoneNumber);
-            }
-            return false;
+            return ContactsUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE, phoneNumber,
+                    Phone.CONTENT_ITEM_TYPE, phoneItem.phoneNumber);
         }
 
         @Override
diff --git a/src/com/android/contacts/quickcontact/DataAction.java b/src/com/android/contacts/quickcontact/DataAction.java
index 2066997..13e824e 100644
--- a/src/com/android/contacts/quickcontact/DataAction.java
+++ b/src/com/android/contacts/quickcontact/DataAction.java
@@ -294,8 +294,7 @@
             return false;
         }
         DataAction that = (DataAction)t;
-        if (!ContactsUtils.shouldCollapse(mContext, mMimeType, mBody, that.mMimeType,
-                that.mBody)) {
+        if (!ContactsUtils.shouldCollapse(mMimeType, mBody, that.mMimeType, that.mBody)) {
             return false;
         }
         if (!TextUtils.equals(mMimeType, that.mMimeType)
diff --git a/src/com/android/contacts/quickcontact/QuickContactListFragment.java b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
index cd899fa..962f07f 100644
--- a/src/com/android/contacts/quickcontact/QuickContactListFragment.java
+++ b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
@@ -25,8 +25,6 @@
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
-import android.widget.AbsListView;
-import android.widget.AdapterView;
 import android.widget.BaseAdapter;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
@@ -100,14 +98,14 @@
                         android.R.id.text1);
                 final TextView text2 = (TextView) resultView.findViewById(
                         android.R.id.text2);
-                final View primaryActionContainer = resultView.findViewById(
-                        R.id.primary_action_view_container);
+                final View actionsContainer = resultView.findViewById(
+                        R.id.actions_view_container);
                 final ImageView alternateActionButton = (ImageView) resultView.findViewById(
                         R.id.secondary_action_button);
                 final View alternateActionDivider = resultView.findViewById(R.id.vertical_divider);
 
-                primaryActionContainer.setOnClickListener(mPrimaryActionClickListener);
-                primaryActionContainer.setTag(action);
+                actionsContainer.setOnClickListener(mPrimaryActionClickListener);
+                actionsContainer.setTag(action);
                 alternateActionButton.setOnClickListener(mSecondaryActionClickListener);
                 alternateActionButton.setTag(action);
 
diff --git a/tests/src/com/android/contacts/ContactsUtilsTests.java b/tests/src/com/android/contacts/ContactsUtilsTests.java
index 97a2c8e..82d0cb0 100644
--- a/tests/src/com/android/contacts/ContactsUtilsTests.java
+++ b/tests/src/com/android/contacts/ContactsUtilsTests.java
@@ -160,9 +160,9 @@
     private void assertCollapses(String message, boolean expected, CharSequence mimetype1,
             CharSequence data1, CharSequence mimetype2, CharSequence data2) {
         assertEquals(message, expected,
-                ContactsUtils.shouldCollapse(mContext, mimetype1, data1, mimetype2, data2));
+                ContactsUtils.shouldCollapse(mimetype1, data1, mimetype2, data2));
         assertEquals(message, expected,
-                ContactsUtils.shouldCollapse(mContext, mimetype2, data2, mimetype1, data1));
+                ContactsUtils.shouldCollapse(mimetype2, data2, mimetype1, data1));
 
         if (data1 == data2 && data1 != null) {
             // make sure we also do a test where object equality is not given
@@ -173,10 +173,10 @@
 
             // we have two different instances, now make sure we get the same result as before
             assertEquals(message, expected,
-                    ContactsUtils.shouldCollapse(mContext, mimetype1, data1, mimetype2,
+                    ContactsUtils.shouldCollapse(mimetype1, data1, mimetype2,
                     data2_newref));
             assertEquals(message, expected,
-                    ContactsUtils.shouldCollapse(mContext, mimetype2, data2_newref, mimetype1,
+                    ContactsUtils.shouldCollapse(mimetype2, data2_newref, mimetype1,
                     data1));
         }
     }