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);