Merge "Fix import/export menu in People App."
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/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..ece0064 100644
--- a/res/layout/contact_detail_list_item.xml
+++ b/res/layout/contact_detail_list_item.xml
@@ -18,27 +18,28 @@
 -->
 
 <!-- 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:paddingLeft="16dip"
     android:paddingTop="8dip"
     android:paddingBottom="8dip"
     android:minHeight="@dimen/detail_min_line_item_height">
 
-    <!-- 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">
 
+        <!-- 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 +94,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/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/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/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/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 e111620..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;
@@ -1411,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;
@@ -1425,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);
@@ -1625,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;
@@ -1655,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/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);