Merge "Add the ActionBar trash and share icons."
diff --git a/res/drawable-hdpi/ic_add_contact_holo_dark.png b/res/drawable-hdpi/ic_add_contact_holo_dark.png
new file mode 100644
index 0000000..1190bf6
--- /dev/null
+++ b/res/drawable-hdpi/ic_add_contact_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_add_contact_holo_light.png b/res/drawable-hdpi/ic_add_contact_holo_light.png
new file mode 100644
index 0000000..c0c201e
--- /dev/null
+++ b/res/drawable-hdpi/ic_add_contact_holo_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_fav_quickcontact_holo_dark.png b/res/drawable-hdpi/ic_contacts_holo_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_fav_quickcontact_holo_dark.png
rename to res/drawable-hdpi/ic_contacts_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_action_add.png b/res/drawable-hdpi/sym_action_add.png
deleted file mode 100755
index 45a9ec5..0000000
--- a/res/drawable-hdpi/sym_action_add.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/sym_action_view_contact.png b/res/drawable-hdpi/sym_action_view_contact.png
deleted file mode 100755
index 3a016ff..0000000
--- a/res/drawable-hdpi/sym_action_view_contact.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_add_contact_holo_dark.png b/res/drawable-mdpi/ic_add_contact_holo_dark.png
new file mode 100644
index 0000000..9aadd04
--- /dev/null
+++ b/res/drawable-mdpi/ic_add_contact_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_add_contact_holo_light.png b/res/drawable-mdpi/ic_add_contact_holo_light.png
new file mode 100644
index 0000000..84ec510
--- /dev/null
+++ b/res/drawable-mdpi/ic_add_contact_holo_light.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_fav_quickcontact_holo_dark.png b/res/drawable-mdpi/ic_contacts_holo_dark.png
similarity index 100%
rename from res/drawable-mdpi/ic_fav_quickcontact_holo_dark.png
rename to res/drawable-mdpi/ic_contacts_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_action_add.png b/res/drawable-mdpi/sym_action_add.png
deleted file mode 100644
index af637b3..0000000
--- a/res/drawable-mdpi/sym_action_add.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/sym_action_view_contact.png b/res/drawable-mdpi/sym_action_view_contact.png
deleted file mode 100644
index 118d8b3..0000000
--- a/res/drawable-mdpi/sym_action_view_contact.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_add_contact_holo_dark.png b/res/drawable-xhdpi/ic_add_contact_holo_dark.png
new file mode 100644
index 0000000..2eac542
--- /dev/null
+++ b/res/drawable-xhdpi/ic_add_contact_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_add_contact_holo_light.png b/res/drawable-xhdpi/ic_add_contact_holo_light.png
new file mode 100644
index 0000000..578df30
--- /dev/null
+++ b/res/drawable-xhdpi/ic_add_contact_holo_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_fav_quickcontact_holo_dark.png b/res/drawable-xhdpi/ic_contacts_holo_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_fav_quickcontact_holo_dark.png
rename to res/drawable-xhdpi/ic_contacts_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/sym_action_add.png b/res/drawable-xhdpi/sym_action_add.png
deleted file mode 100644
index 32f8e22..0000000
--- a/res/drawable-xhdpi/sym_action_add.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/sym_action_view_contact.png b/res/drawable-xhdpi/sym_action_view_contact.png
deleted file mode 100644
index 2c14e56..0000000
--- a/res/drawable-xhdpi/sym_action_view_contact.png
+++ /dev/null
Binary files differ
diff --git a/res/layout-sw580dp-w1000dp/contact_detail_fragment.xml b/res/layout-sw580dp-w1000dp/contact_detail_fragment.xml
index f4c95f8..b8328ef 100644
--- a/res/layout-sw580dp-w1000dp/contact_detail_fragment.xml
+++ b/res/layout-sw580dp-w1000dp/contact_detail_fragment.xml
@@ -21,7 +21,8 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@drawable/panel_content">
+ android:background="@color/background_primary"
+ android:padding="16dip">
<!-- Placeholder for empty list -->
<include
@@ -40,10 +41,7 @@
android:scaleType="centerCrop"
android:layout_width="@dimen/detail_contact_photo_size"
android:layout_height="@dimen/detail_contact_photo_size"
- android:layout_marginLeft="@dimen/detail_contact_photo_margin"
- android:layout_marginRight="@dimen/detail_contact_photo_margin"
- android:layout_marginTop="@dimen/detail_contact_photo_margin"
- android:layout_marginBottom="@dimen/detail_contact_photo_margin"/>
+ android:layout_marginRight="@dimen/detail_contact_photo_margin"/>
<ListView android:id="@android:id/list"
android:layout_width="0dip"
diff --git a/res/layout-sw580dp-w1000dp/detail_header_contact_with_updates.xml b/res/layout-sw580dp-w1000dp/detail_header_contact_with_updates.xml
index 1a1a3bb..dce00ac 100644
--- a/res/layout-sw580dp-w1000dp/detail_header_contact_with_updates.xml
+++ b/res/layout-sw580dp-w1000dp/detail_header_contact_with_updates.xml
@@ -24,8 +24,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:padding="20dip">
+ android:orientation="horizontal">
<ImageView
android:id="@+id/photo"
@@ -37,8 +36,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:paddingLeft="10dip"
- android:paddingRight="10dip">
+ android:paddingLeft="16dip"
+ android:paddingRight="16dip">
<TextView
android:id="@+id/name"
diff --git a/res/layout-sw580dp-w1000dp/detail_header_contact_without_updates.xml b/res/layout-sw580dp-w1000dp/detail_header_contact_without_updates.xml
index 415bbbf..486b7c2 100644
--- a/res/layout-sw580dp-w1000dp/detail_header_contact_without_updates.xml
+++ b/res/layout-sw580dp-w1000dp/detail_header_contact_without_updates.xml
@@ -23,8 +23,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical"
- android:paddingTop="20dip">
+ android:orientation="vertical">
<TextView
android:id="@+id/name"
diff --git a/res/layout-sw580dp/contact_detail_fragment.xml b/res/layout-sw580dp/contact_detail_fragment.xml
index cd559fe..c9dad2a 100644
--- a/res/layout-sw580dp/contact_detail_fragment.xml
+++ b/res/layout-sw580dp/contact_detail_fragment.xml
@@ -20,8 +20,7 @@
android:id="@+id/contact_detail"
android:orientation="vertical"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/panel_content">
+ android:layout_height="match_parent">
<!-- Placeholder for empty list -->
<include
@@ -30,23 +29,12 @@
android:visibility="gone" />
<!-- Real list -->
- <com.android.contacts.widget.InterpolatingLayout
+ <ListView android:id="@android:id/list"
android:layout_width="match_parent"
- android:layout_height="0px"
- android:layout_weight="1">
- <ListView android:id="@android:id/list"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- ex:layout_wideParentWidth="800dip"
- ex:layout_wideMarginLeft="64dip"
- ex:layout_widePaddingRight="48dip"
- ex:layout_narrowParentWidth="300dip"
- ex:layout_narrowMarginLeft="5dip"
- ex:layout_narrowPaddingRight="16dip"
- android:cacheColorHint="#00000000"
- android:divider="@null"
- />
- </com.android.contacts.widget.InterpolatingLayout>
+ android:layout_height="match_parent"
+ android:cacheColorHint="#00000000"
+ android:divider="@null"
+ />
<!-- "QuickFix"- button (Copy to local contact, add to group) -->
<Button
diff --git a/res/layout-sw580dp/detail_header_contact_without_updates.xml b/res/layout-sw580dp/detail_header_contact_without_updates.xml
index 4ae31c8..04fbad9 100644
--- a/res/layout-sw580dp/detail_header_contact_without_updates.xml
+++ b/res/layout-sw580dp/detail_header_contact_without_updates.xml
@@ -22,8 +22,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical"
- android:paddingTop="20dip">
+ android:orientation="vertical">
<ImageView
android:id="@+id/photo"
diff --git a/res/layout-sw580dp/people_activity.xml b/res/layout-sw580dp/people_activity.xml
index 87bb3b5..13adfa9 100644
--- a/res/layout-sw580dp/people_activity.xml
+++ b/res/layout-sw580dp/people_activity.xml
@@ -67,8 +67,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
ex:layout_narrowParentWidth="800dip"
+ ex:layout_narrowMarginLeft="0dip"
ex:layout_narrowMarginRight="0dip"
ex:layout_wideParentWidth="1280dip"
+ ex:layout_wideMarginLeft="0dip"
ex:layout_wideMarginRight="0dip"
ex:clipMarginLeft="0dip"
ex:clipMarginTop="3dip"
diff --git a/res/layout/call_detail.xml b/res/layout/call_detail.xml
index 94bc072..a4de03f 100644
--- a/res/layout/call_detail.xml
+++ b/res/layout/call_detail.xml
@@ -59,42 +59,46 @@
>
<!-- The voicemail fragment will be put here. -->
</LinearLayout>
- <LinearLayout
+ <View
+ android:id="@+id/photo_text_bar"
android:layout_width="match_parent"
- android:layout_height="@dimen/call_detail_contact_background_overlay_height"
- android:background="#3F000000"
+ android:layout_height="42dip"
+ android:background="#7F000000"
android:layout_alignParentLeft="true"
android:layout_alignBottom="@id/contact_background_sizer"
/>
+ <ImageView
+ android:id="@+id/main_action"
+ android:layout_width="wrap_content"
+ android:layout_height="0dip"
+ android:scaleType="center"
+ android:layout_alignRight="@id/photo_text_bar"
+ android:layout_alignBottom="@id/photo_text_bar"
+ android:layout_alignTop="@id/photo_text_bar"
+ android:layout_marginRight="@dimen/call_log_outer_margin"
+ />
<RelativeLayout
- android:id="@+id/contact_text"
- android:layout_width="match_parent"
- android:layout_height="@dimen/call_detail_contact_background_overlay_height"
- android:layout_alignParentLeft="true"
- android:layout_alignBottom="@id/contact_background_sizer"
- android:paddingLeft="@dimen/call_detail_contact_name_margin"
+ android:layout_width="wrap_content"
+ android:layout_height="0dip"
+ android:layout_alignLeft="@id/photo_text_bar"
+ android:layout_alignTop="@id/photo_text_bar"
+ android:layout_toLeftOf="@id/main_action"
+ android:layout_alignBottom="@id/photo_text_bar"
+ android:layout_marginRight="@dimen/call_log_inner_margin"
+ android:layout_marginLeft="@dimen/call_detail_contact_name_margin"
>
- <ImageView
- android:id="@+id/main_action"
- android:layout_width="@dimen/call_log_call_action_size"
- android:layout_height="match_parent"
- android:gravity="center_vertical"
- android:scaleType="center"
- android:layout_alignParentRight="true"
- android:layout_alignParentBottom="true"
- android:layout_marginRight="@dimen/call_log_outer_margin"
- android:layout_marginLeft="@dimen/call_log_inner_margin"
- />
- <RelativeLayout
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_alignParentLeft="true"
- android:layout_toLeftOf="@id/main_action"
- android:layout_alignParentBottom="true"
- >
- <include layout="@layout/call_log_phone_call_details" />
- </RelativeLayout>
+ <include layout="@layout/call_log_phone_call_details" />
</RelativeLayout>
+ <ImageButton
+ android:id="@+id/main_action_push_layer"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_alignLeft="@id/contact_background_sizer"
+ android:layout_alignTop="@id/contact_background_sizer"
+ android:layout_alignRight="@id/contact_background_sizer"
+ android:layout_alignBottom="@id/contact_background_sizer"
+ android:background="?android:attr/selectableItemBackground"
+ />
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
diff --git a/res/layout/call_detail_history_item.xml b/res/layout/call_detail_history_item.xml
index 069ade9..b225369 100644
--- a/res/layout/call_detail_history_item.xml
+++ b/res/layout/call_detail_history_item.xml
@@ -22,7 +22,8 @@
android:background="?attr/call_log_secondary_background_color"
android:padding="@dimen/call_log_indent_margin"
>
- <FrameLayout
+ <view
+ class="com.android.contacts.calllog.CallTypeIconsView"
android:id="@+id/call_type_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/res/layout/call_log_list_item.xml b/res/layout/call_log_list_item.xml
index a86d839..3b5601f 100644
--- a/res/layout/call_log_list_item.xml
+++ b/res/layout/call_log_list_item.xml
@@ -14,60 +14,41 @@
limitations under the License.
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:padding="@dimen/call_log_inner_margin"
>
<!--
- We have a nested FrameLayout because the margin attributes out the outer
- layout are not used when this layout is inflated within a list.
+ This layout may represent either a call log item or one of the
+ headers in the call log.
- TODO: Can we find a way to avoid the extra layer?
- -->
- <FrameLayout
+ The former will make the @id/call_log_item visible and the
+ @id/call_log_header gone.
+
+ The latter will make the @id/call_log_header visible and the
+ @id/call_log_item gone
+ -->
+
+ <RelativeLayout
+ android:id="@+id/call_log_item"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical"
+ >
+ <include layout="@layout/call_log_contact_photo"/>
+ <include layout="@layout/call_log_action_call"/>
+ <include layout="@layout/call_log_list_item_layout"/>
+ </RelativeLayout>
+
+ <TextView
+ android:id="@+id/call_log_header_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/call_log_inner_margin"
- android:layout_marginRight="@dimen/call_log_inner_margin"
- android:layout_marginTop="@dimen/call_log_inner_margin"
- android:layout_marginBottom="@dimen/call_log_inner_margin"
- >
- <!--
- This layout may represent either a call log item or one of the
- headers in the call log.
-
- The former will make the @id/call_log_item visible and the
- @id/call_log_header gone.
-
- The latter will make the @id/call_log_header visible and the
- @id/call_log_item gone
- -->
-
- <RelativeLayout
- android:id="@+id/call_log_item"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- >
- <include layout="@layout/call_log_contact_photo"/>
- <include layout="@layout/call_log_action_call"/>
- <include layout="@layout/call_log_list_item_layout"/>
- </RelativeLayout>
-
- <LinearLayout
- android:id="@+id/call_log_header"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- >
- <TextView
- android:id="@+id/call_log_header_text"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/call_log_inner_margin"
- android:textSize="14sp"
- android:textStyle="bold"
- android:textColor="?attr/call_log_header_color"
- />
- </LinearLayout>
- </FrameLayout>
-</LinearLayout>
+ android:textSize="14sp"
+ android:textStyle="bold"
+ android:textColor="?attr/call_log_header_color"
+ />
+</FrameLayout>
diff --git a/res/layout/call_log_phone_call_details.xml b/res/layout/call_log_phone_call_details.xml
index 5a4131e..4d12a1d 100644
--- a/res/layout/call_log_phone_call_details.xml
+++ b/res/layout/call_log_phone_call_details.xml
@@ -45,13 +45,13 @@
android:layout_height="wrap_content"
android:orientation="horizontal"
>
- <LinearLayout
+ <view
+ class="com.android.contacts.calllog.CallTypeIconsView"
android:id="@+id/call_type_icons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/call_log_icon_margin"
android:layout_gravity="center_vertical"
- android:orientation="horizontal"
/>
<TextView
android:id="@+id/call_type_name"
diff --git a/res/layout/contact_detail_container.xml b/res/layout/contact_detail_container.xml
index 0b5b85a..3991e5c 100644
--- a/res/layout/contact_detail_container.xml
+++ b/res/layout/contact_detail_container.xml
@@ -26,13 +26,14 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical">
+ android:orientation="vertical"
+ android:background="@color/background_primary"
+ android:padding="16dip">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
- android:paddingTop="20dip"
android:layout_width="match_parent"
android:layout_height="match_parent" />
@@ -42,10 +43,7 @@
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="20dip"
- android:paddingLeft="10dip"
- android:paddingRight="10dip"/>
+ android:layout_height="wrap_content"/>
<fragment
android:id="@+id/contact_detail_fragment"
diff --git a/res/layout/create_new_contact.xml b/res/layout/create_new_contact.xml
index 2c36017..2edaf3e 100644
--- a/res/layout/create_new_contact.xml
+++ b/res/layout/create_new_contact.xml
@@ -31,7 +31,7 @@
android:layout_marginLeft="5dip"
android:layout_marginRight="11dip"
android:focusable="false"
- android:src="@*android:drawable/sym_action_add"
+ android:src="@drawable/ic_add_contact_holo_light"
android:scaleType="fitCenter"
/>
<TextView android:id="@+id/title"
diff --git a/res/layout/quickcontact_photo_container.xml b/res/layout/quickcontact_photo_container.xml
index b18fddc..7df54d9 100644
--- a/res/layout/quickcontact_photo_container.xml
+++ b/res/layout/quickcontact_photo_container.xml
@@ -32,11 +32,10 @@
android:layout_alignBottom="@id/photo"
android:layout_alignLeft="@id/photo"
android:layout_alignRight="@id/photo"
- android:alpha="0.5"
- android:background="@android:color/black" />
+ android:background="#7F000000" />
<ImageButton
android:id="@+id/open_details_button"
- android:src="@drawable/ic_fav_quickcontact_holo_dark"
+ android:src="@drawable/ic_contacts_holo_dark"
android:background="?android:attr/selectableItemBackground"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
diff --git a/res/values-sw580dp/dimens.xml b/res/values-sw580dp/dimens.xml
index 4de6bb7..a10d234 100644
--- a/res/values-sw580dp/dimens.xml
+++ b/res/values-sw580dp/dimens.xml
@@ -22,7 +22,7 @@
<dimen name="editor_round_button_padding_right">8dip</dimen>
<dimen name="editor_field_top_padding">12dip</dimen>
<dimen name="editor_field_bottom_padding">12dip</dimen>
- <dimen name="detail_item_side_margin">19dip</dimen>
+ <dimen name="detail_item_side_margin">0dip</dimen>
<dimen name="contact_name_text_size">26sp</dimen>
<dimen name="action_bar_filter_min_width">120dip</dimen>
<dimen name="action_bar_filter_max_width">120dip</dimen>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 2ca8512..79d12f9 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -97,11 +97,6 @@
<attr name="list_item_header_underline_color" format="color" />
</declare-styleable>
- <declare-styleable name="CallDetailActivity">
- <attr name="call_detail_transparent_background" format="color" />
- <attr name="call_detail_contact_background_overlay_alpha" format="float" />
- </declare-styleable>
-
<declare-styleable name="CallLog">
<attr name="call_log_primary_text_color" format="color" />
<attr name="call_log_primary_background_color" format="color" />
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index cbac941..569f00b 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -116,7 +116,7 @@
<dimen name="detail_update_section_internal_padding">16dip</dimen>
<!-- Margin around the contact's photo on the contact card -->
- <dimen name="detail_contact_photo_margin">15dip</dimen>
+ <dimen name="detail_contact_photo_margin">16dip</dimen>
<!-- Width and height of the contact photo on the contact detail page -->
<dimen name="detail_contact_photo_size">256dip</dimen>
@@ -219,7 +219,6 @@
<dimen name="call_log_indent_margin">24dip</dimen>
<dimen name="call_log_list_contact_photo_size">64dip</dimen>
<dimen name="call_detail_contact_background_height">174dip</dimen>
- <dimen name="call_detail_contact_background_overlay_height">42dip</dimen>
<dimen name="call_detail_contact_name_margin">24dip</dimen>
<dimen name="call_detail_action_bar_height">60dip</dimen>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 9fd4cb0..e267a19 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -61,8 +61,6 @@
<style name="CallDetailActivityTheme" parent="android:Theme.Holo">
<item name="android:windowBackground">@android:color/black</item>
<item name="android:gravity">top</item>
- <item name="call_detail_transparent_background">#CC000000</item>
- <item name="call_detail_contact_background_overlay_alpha">0.25</item>
<!-- CallLog -->
<item name="call_log_primary_text_color">#FFFFFF</item>
<item name="call_log_primary_background_color">#000000</item>
@@ -292,8 +290,7 @@
</style>
<style name="ContactTileStarredShadowBox">
- <item name="android:alpha">0.5</item>
- <item name="android:background">@android:color/black</item>
+ <item name="android:background">#7F000000</item>
</style>
<style name="DialtactsActionBarStyle" parent="android:Widget.Holo.ActionBar">
diff --git a/src/com/android/contacts/CallDetailActivity.java b/src/com/android/contacts/CallDetailActivity.java
index 3fdfe38..d0eb817 100644
--- a/src/com/android/contacts/CallDetailActivity.java
+++ b/src/com/android/contacts/CallDetailActivity.java
@@ -51,6 +51,7 @@
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
@@ -82,6 +83,7 @@
private PhoneNumberHelper mPhoneNumberHelper;
private PhoneCallDetailsHelper mPhoneCallDetailsHelper;
private ImageView mMainActionView;
+ private ImageButton mMainActionPushLayerView;
private ImageView mContactBackgroundView;
private String mNumber = null;
@@ -144,7 +146,7 @@
mResources = getResources();
mPhoneCallDetailsViews = PhoneCallDetailsViews.fromView(getWindow().getDecorView());
- mCallTypeHelper = new CallTypeHelper(getResources(), mInflater);
+ mCallTypeHelper = new CallTypeHelper(getResources());
mPhoneNumberHelper = new PhoneNumberHelper(mResources, getVoicemailNumber());
mPhoneCallDetailsHelper = new PhoneCallDetailsHelper(mResources, mCallTypeHelper,
mPhoneNumberHelper);
@@ -154,6 +156,7 @@
mStatusMessageText = (TextView) findViewById(R.id.voicemail_status_message);
mStatusMessageAction = (TextView) findViewById(R.id.voicemail_status_action);
mMainActionView = (ImageView) findViewById(R.id.main_action);
+ mMainActionPushLayerView = (ImageButton) findViewById(R.id.main_action_push_layer);
mContactBackgroundView = (ImageView) findViewById(R.id.contact_background);
mDefaultCountryIso = ContactsUtils.getCurrentCountryIso(this);
mContactPhotoManager = ContactPhotoManager.getInstance(this);
@@ -287,7 +290,7 @@
if (details[0].personId != -1) {
Uri personUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, personId);
mainActionIntent = new Intent(Intent.ACTION_VIEW, personUri);
- mainActionIcon = R.drawable.sym_action_view_contact;
+ mainActionIcon = R.drawable.ic_contacts_holo_dark;
} else if (isVoicemailNumber) {
mainActionIntent = null;
mainActionIcon = 0;
@@ -307,7 +310,7 @@
mainActionIntent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
mainActionIntent.setType(Contacts.CONTENT_ITEM_TYPE);
mainActionIntent.putExtra(Insert.PHONE, mNumber);
- mainActionIcon = R.drawable.sym_action_add;
+ mainActionIcon = R.drawable.ic_add_contact_holo_dark;
} else {
// If we cannot call the number, when we probably cannot add it as a contact either.
// This is usually the case of private, unknown, or payphone numbers.
@@ -317,10 +320,12 @@
if (mainActionIntent == null) {
mMainActionView.setVisibility(View.INVISIBLE);
+ mMainActionPushLayerView.setVisibility(View.GONE);
} else {
mMainActionView.setVisibility(View.VISIBLE);
mMainActionView.setImageResource(mainActionIcon);
- mMainActionView.setOnClickListener(new View.OnClickListener() {
+ mMainActionPushLayerView.setVisibility(View.VISIBLE);
+ mMainActionPushLayerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(mainActionIntent);
diff --git a/src/com/android/contacts/PhoneCallDetailsHelper.java b/src/com/android/contacts/PhoneCallDetailsHelper.java
index f312a5d..8cdd0d0 100644
--- a/src/com/android/contacts/PhoneCallDetailsHelper.java
+++ b/src/com/android/contacts/PhoneCallDetailsHelper.java
@@ -61,10 +61,10 @@
public void setPhoneCallDetails(PhoneCallDetailsViews views, PhoneCallDetails details,
boolean useIcons, boolean isHighlighted, boolean nameOnly) {
if (useIcons) {
- views.callTypeIcons.removeAllViews();
+ views.callTypeIcons.clear();
int count = details.callTypes.length;
for (int index = 0; index < count && index < MAX_CALL_TYPE_ICONS; ++index) {
- mCallTypeHelper.inflateCallTypeIcon(details.callTypes[index], views.callTypeIcons);
+ views.callTypeIcons.add(details.callTypes[index]);
}
views.callTypeIcons.setVisibility(View.VISIBLE);
if (count > MAX_CALL_TYPE_ICONS) {
@@ -77,14 +77,13 @@
views.callTypeSeparator.setVisibility(View.GONE);
}
} else {
- String callTypeName;
// Use the name of the first call type.
// TODO: We should update this to handle the text for multiple calls as well.
int callType = details.callTypes[0];
views.callTypeText.setText(
isHighlighted ? mCallTypeHelper.getHighlightedCallTypeText(callType)
: mCallTypeHelper.getCallTypeText(callType));
- views.callTypeIcons.removeAllViews();
+ views.callTypeIcons.clear();
views.callTypeText.setVisibility(View.VISIBLE);
views.callTypeSeparator.setVisibility(View.VISIBLE);
diff --git a/src/com/android/contacts/PhoneCallDetailsViews.java b/src/com/android/contacts/PhoneCallDetailsViews.java
index 19e931f..c07e337 100644
--- a/src/com/android/contacts/PhoneCallDetailsViews.java
+++ b/src/com/android/contacts/PhoneCallDetailsViews.java
@@ -16,9 +16,10 @@
package com.android.contacts;
+import com.android.contacts.calllog.CallTypeIconsView;
+
import android.content.Context;
import android.view.View;
-import android.widget.LinearLayout;
import android.widget.TextView;
/**
@@ -27,14 +28,15 @@
public final class PhoneCallDetailsViews {
public final TextView nameView;
public final View callTypeView;
- public final LinearLayout callTypeIcons;
+ public final CallTypeIconsView callTypeIcons;
public final TextView callTypeText;
public final View callTypeSeparator;
public final TextView dateView;
public final TextView numberView;
- private PhoneCallDetailsViews(TextView nameView, View callTypeView, LinearLayout callTypeIcons,
- TextView callTypeText, View callTypeSeparator, TextView dateView, TextView numberView) {
+ private PhoneCallDetailsViews(TextView nameView, View callTypeView,
+ CallTypeIconsView callTypeIcons, TextView callTypeText, View callTypeSeparator,
+ TextView dateView, TextView numberView) {
this.nameView = nameView;
this.callTypeView = callTypeView;
this.callTypeIcons = callTypeIcons;
@@ -54,7 +56,7 @@
public static PhoneCallDetailsViews fromView(View view) {
return new PhoneCallDetailsViews((TextView) view.findViewById(R.id.name),
view.findViewById(R.id.call_type),
- (LinearLayout) view.findViewById(R.id.call_type_icons),
+ (CallTypeIconsView) view.findViewById(R.id.call_type_icons),
(TextView) view.findViewById(R.id.call_type_name),
view.findViewById(R.id.call_type_separator),
(TextView) view.findViewById(R.id.date),
@@ -65,7 +67,7 @@
return new PhoneCallDetailsViews(
new TextView(context),
new View(context),
- new LinearLayout(context),
+ new CallTypeIconsView(context),
new TextView(context),
new View(context),
new TextView(context),
diff --git a/src/com/android/contacts/calllog/CallDetailHistoryAdapter.java b/src/com/android/contacts/calllog/CallDetailHistoryAdapter.java
index 26275af..3e3ba36 100644
--- a/src/com/android/contacts/calllog/CallDetailHistoryAdapter.java
+++ b/src/com/android/contacts/calllog/CallDetailHistoryAdapter.java
@@ -64,19 +64,20 @@
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Make sure we have a valid convertView to start with
- if (convertView == null) {
- convertView = mLayoutInflater.inflate(R.layout.call_detail_history_item, parent, false);
- }
+ final View result = convertView == null
+ ? mLayoutInflater.inflate(R.layout.call_detail_history_item, parent, false)
+ : convertView;
PhoneCallDetails details = mPhoneCallDetails[position];
- FrameLayout callTypeIconView = (FrameLayout) convertView.findViewById(R.id.call_type_icon);
- TextView callTypeTextView = (TextView) convertView.findViewById(R.id.call_type_text);
- TextView dateView = (TextView) convertView.findViewById(R.id.date);
- TextView durationView = (TextView) convertView.findViewById(R.id.duration);
+ CallTypeIconsView callTypeIconView =
+ (CallTypeIconsView) result.findViewById(R.id.call_type_icon);
+ TextView callTypeTextView = (TextView) result.findViewById(R.id.call_type_text);
+ TextView dateView = (TextView) result.findViewById(R.id.date);
+ TextView durationView = (TextView) result.findViewById(R.id.duration);
int callType = details.callTypes[0];
- callTypeIconView.removeAllViews();
- mCallTypeHelper.inflateCallTypeIcon(callType, callTypeIconView);
+ callTypeIconView.clear();
+ callTypeIconView.add(callType);
callTypeTextView.setText(mCallTypeHelper.getCallTypeText(callType));
// Set the date.
CharSequence dateValue = DateUtils.formatDateRange(mContext, details.date, details.date,
@@ -91,7 +92,7 @@
durationView.setText(formatDuration(details.duration));
}
- return convertView;
+ return result;
}
private String formatDuration(long elapsedSeconds) {
diff --git a/src/com/android/contacts/calllog/CallLogFragment.java b/src/com/android/contacts/calllog/CallLogFragment.java
index abc9adf..0999b44 100644
--- a/src/com/android/contacts/calllog/CallLogFragment.java
+++ b/src/com/android/contacts/calllog/CallLogFragment.java
@@ -313,11 +313,7 @@
mPreDrawListener = null;
Resources resources = getResources();
- LayoutInflater layoutInflater = getActivity().getLayoutInflater();
- CallTypeHelper callTypeHelper = new CallTypeHelper(resources, layoutInflater);
- Drawable callDrawable = resources.getDrawable(R.drawable.ic_dial_action_call);
- Drawable playDrawable = resources.getDrawable(
- R.drawable.ic_call_log_list_action_play);
+ CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
mContactPhotoManager = ContactPhotoManager.getInstance(getActivity());
mPhoneNumberHelper = new PhoneNumberHelper(getResources(), mVoiceMailNumber);
@@ -678,7 +674,7 @@
if (section == CallLogQuery.SECTION_NEW_HEADER
|| section == CallLogQuery.SECTION_OLD_HEADER) {
views.listItemView.setVisibility(View.GONE);
- views.listHeaderView.setVisibility(View.VISIBLE);
+ views.listHeaderTextView.setVisibility(View.VISIBLE);
views.listHeaderTextView.setText(
section == CallLogQuery.SECTION_NEW_HEADER
? R.string.call_log_new_header
@@ -688,7 +684,7 @@
}
// Default case: an item in the call log.
views.listItemView.setVisibility(View.VISIBLE);
- views.listHeaderView.setVisibility(View.GONE);
+ views.listHeaderTextView.setVisibility(View.GONE);
final String number = c.getString(CallLogQuery.NUMBER);
final long date = c.getLong(CallLogQuery.DATE);
diff --git a/src/com/android/contacts/calllog/CallLogListItemViews.java b/src/com/android/contacts/calllog/CallLogListItemViews.java
index 90f78f7..368a868 100644
--- a/src/com/android/contacts/calllog/CallLogListItemViews.java
+++ b/src/com/android/contacts/calllog/CallLogListItemViews.java
@@ -45,14 +45,12 @@
public final PhoneCallDetailsViews phoneCallDetailsViews;
/** The item view for a stand-alone row, or null for other types of rows. */
public final View listItemView;
- /** The header view for a stand-alone row, or null for other types of rows. */
- public final View listHeaderView;
/** The text of the header in a stand-alone row, or null for other types of rows. */
public final TextView listHeaderTextView;
private CallLogListItemViews(QuickContactBadge quickContactView, ImageView photoView,
View callView, View playView, View unheardView, View dividerView,
- PhoneCallDetailsViews phoneCallDetailsViews, View listItemView, View listHeaderView,
+ PhoneCallDetailsViews phoneCallDetailsViews, View listItemView,
TextView listHeaderTextView) {
this.quickContactView = quickContactView;
this.plainPhotoView = photoView;
@@ -62,7 +60,6 @@
this.dividerView = dividerView;
this.phoneCallDetailsViews = phoneCallDetailsViews;
this.listItemView = listItemView;
- this.listHeaderView = listHeaderView;
this.listHeaderTextView = listHeaderTextView;
}
@@ -76,7 +73,6 @@
view.findViewById(R.id.divider),
PhoneCallDetailsViews.fromView(view),
view.findViewById(R.id.call_log_item),
- view.findViewById(R.id.call_log_header),
(TextView) view.findViewById(R.id.call_log_header_text));
}
@@ -90,7 +86,6 @@
new View(context),
PhoneCallDetailsViews.createForTest(context),
new View(context),
- new View(context),
new TextView(context));
}
}
diff --git a/src/com/android/contacts/calllog/CallTypeHelper.java b/src/com/android/contacts/calllog/CallTypeHelper.java
index 465e2bf..d27d4f9 100644
--- a/src/com/android/contacts/calllog/CallTypeHelper.java
+++ b/src/com/android/contacts/calllog/CallTypeHelper.java
@@ -25,16 +25,11 @@
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
/**
* Helper class to perform operations related to call types.
*/
public class CallTypeHelper {
- /** Used to create the views for the call types. */
- private final LayoutInflater mLayoutInflater;
/** Name used to identify incoming calls. */
private final CharSequence mIncomingName;
/** Name used to identify outgoing calls. */
@@ -48,8 +43,7 @@
/** Name used to identify new voicemail calls. */
private final CharSequence mNewVoicemailName;
- public CallTypeHelper(Resources resources, LayoutInflater layoutInflater) {
- mLayoutInflater = layoutInflater;
+ public CallTypeHelper(Resources resources) {
// Cache these values so that we do not need to look them up each time.
mIncomingName = resources.getString(R.string.type_incoming);
mOutgoingName = resources.getString(R.string.type_outgoing);
@@ -103,26 +97,6 @@
}
}
- /** Returns a new view for the icon to be used to represent a given call type. */
- public View inflateCallTypeIcon(int callType, ViewGroup root) {
- switch (callType) {
- case Calls.INCOMING_TYPE:
- return mLayoutInflater.inflate(R.layout.call_log_incoming_call_icon, root);
-
- case Calls.OUTGOING_TYPE:
- return mLayoutInflater.inflate(R.layout.call_log_outgoing_call_icon, root);
-
- case Calls.MISSED_TYPE:
- return mLayoutInflater.inflate(R.layout.call_log_missed_call_icon, root);
-
- case Calls.VOICEMAIL_TYPE:
- return mLayoutInflater.inflate(R.layout.call_log_voicemail_icon, root);
-
- default:
- throw new IllegalArgumentException("invalid call type: " + callType);
- }
- }
-
/** Creates a SpannableString for the given text which is bold and in the given color. */
private CharSequence addBoldAndColor(CharSequence text, int color) {
int flags = Spanned.SPAN_INCLUSIVE_INCLUSIVE;
diff --git a/src/com/android/contacts/calllog/CallTypeIconsView.java b/src/com/android/contacts/calllog/CallTypeIconsView.java
new file mode 100644
index 0000000..4fbe7d7
--- /dev/null
+++ b/src/com/android/contacts/calllog/CallTypeIconsView.java
@@ -0,0 +1,123 @@
+/*
+ * 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.calllog;
+
+import com.android.contacts.R;
+import com.google.common.collect.Lists;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.Drawable;
+import android.provider.CallLog.Calls;
+import android.util.AttributeSet;
+import android.view.View;
+
+import java.util.List;
+
+/**
+ * View that draws one or more symbols for different types of calls (missed calls, outgoing etc).
+ * The symbols are set up horizontally. As this view doesn't create subviews, it is better suited
+ * for ListView-recycling that a regular LinearLayout using ImageViews.
+ */
+public class CallTypeIconsView extends View {
+ private List<Integer> mCallTypes = Lists.newArrayListWithCapacity(3);
+ private Resources mResources;
+ private int mWidth;
+ private int mHeight;
+
+ public CallTypeIconsView(Context context) {
+ this(context, null);
+ }
+
+ public CallTypeIconsView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ mResources = new Resources(context);
+ }
+
+ public void clear() {
+ mCallTypes.clear();
+ mWidth = 0;
+ mHeight = 0;
+ invalidate();
+ }
+
+ public void add(int callType) {
+ mCallTypes.add(callType);
+
+ final Drawable drawable = getCallTypeDrawable(callType);
+ mWidth += drawable.getIntrinsicWidth() + mResources.iconMargin;
+ mHeight = Math.max(mHeight, drawable.getIntrinsicHeight());
+ invalidate();
+ }
+
+ public int getCount() {
+ return mCallTypes.size();
+ }
+
+ public int getCallType(int index) {
+ return mCallTypes.get(index);
+ }
+
+ private Drawable getCallTypeDrawable(int callType) {
+ switch (callType) {
+ case Calls.INCOMING_TYPE:
+ return mResources.incoming;
+ case Calls.OUTGOING_TYPE:
+ return mResources.outgoing;
+ case Calls.MISSED_TYPE:
+ return mResources.missed;
+ case Calls.VOICEMAIL_TYPE:
+ return mResources.voicemail;
+ default:
+ throw new IllegalArgumentException("invalid call type: " + callType);
+ }
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ setMeasuredDimension(mWidth, mHeight);
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ int left = 0;
+ for (Integer callType : mCallTypes) {
+ final Drawable drawable = getCallTypeDrawable(callType);
+ final int right = left + drawable.getIntrinsicWidth();
+ drawable.setBounds(left, 0, right, drawable.getIntrinsicHeight());
+ drawable.draw(canvas);
+ left = right + mResources.iconMargin;
+ }
+ }
+
+ private static class Resources {
+ public final Drawable incoming;
+ public final Drawable outgoing;
+ public final Drawable missed;
+ public final Drawable voicemail;
+ public final int iconMargin;
+
+ public Resources(Context context) {
+ final android.content.res.Resources r = context.getResources();
+ incoming = r.getDrawable(R.drawable.ic_call_incoming_holo_dark);
+ outgoing = r.getDrawable(R.drawable.ic_call_outgoing_holo_dark);
+ missed = r.getDrawable(R.drawable.ic_call_missed_holo_dark);
+ voicemail = r.getDrawable(R.drawable.ic_call_voicemail_holo_dark);
+ iconMargin = r.getDimensionPixelSize(R.dimen.call_log_icon_margin);
+ }
+ }
+}
diff --git a/src/com/android/contacts/list/ContactTileAdapter.java b/src/com/android/contacts/list/ContactTileAdapter.java
index 2c64d8f..5850a4a 100644
--- a/src/com/android/contacts/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/list/ContactTileAdapter.java
@@ -236,7 +236,7 @@
@Override
public int getCount() {
- if (mContactCursor == null || mContactCursor.getCount() == 0) {
+ if (mContactCursor == null) {
return 0;
}
@@ -458,30 +458,15 @@
for (int columnCounter = 0; columnCounter < columnCount; columnCounter++) {
ContactEntry entry =
columnCounter < list.size() ? list.get(columnCounter) : null;
- addTileFromEntry(entry, columnCounter);
- }
+ addTileFromEntry(entry, columnCounter);
}
+ }
private void addTileFromEntry(ContactEntry entry, int tileIndex) {
final ContactTileView contactTile;
if (getChildCount() <= tileIndex) {
- switch (mItemViewType) {
- case ViewTypes.STARRED_WITH_SECONDARY_ACTION:
- contactTile = (ContactTileSecondaryTargetView)
- inflate(mContext, mLayoutResId, null);
- break;
- case ViewTypes.STARRED:
- contactTile =
- (ContactTileStarredView) inflate(mContext, mLayoutResId, null);
- break;
- case ViewTypes.FREQUENT:
- contactTile = (ContactTileView) inflate(mContext, mLayoutResId, null);
- break;
- default:
- throw new IllegalStateException(
- "Unrecognized ViewType " + mItemViewType);
- }
+ contactTile = (ContactTileView) inflate(mContext, mLayoutResId, null);
contactTile.setLayoutParams(new LinearLayout.LayoutParams(0,
LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f));
contactTile.setPhotoManager(mPhotoManager);
diff --git a/src/com/android/contacts/list/ContactTileView.java b/src/com/android/contacts/list/ContactTileView.java
index aee34c9..4dfa876 100644
--- a/src/com/android/contacts/list/ContactTileView.java
+++ b/src/com/android/contacts/list/ContactTileView.java
@@ -52,7 +52,6 @@
public ContactTileView(Context context, AttributeSet attrs) {
super(context, attrs);
- setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
@Override
diff --git a/src/com/android/contacts/model/ExternalAccountType.java b/src/com/android/contacts/model/ExternalAccountType.java
index caf311b..e5af8f8 100644
--- a/src/com/android/contacts/model/ExternalAccountType.java
+++ b/src/com/android/contacts/model/ExternalAccountType.java
@@ -23,6 +23,7 @@
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
@@ -74,6 +75,7 @@
private int mInviteActionLabelResId;
private String mAccountTypeLabelAttribute;
private String mAccountTypeIconAttribute;
+ private boolean mInitSuccessful;
public ExternalAccountType(Context context, String resPackageName) {
this.resPackageName = resPackageName;
@@ -81,17 +83,18 @@
// Handle unknown sources by searching their package
final PackageManager pm = context.getPackageManager();
- final Intent syncAdapter = new Intent(ACTION_SYNC_ADAPTER);
- final List<ResolveInfo> matches = pm.queryIntentServices(syncAdapter,
- PackageManager.GET_META_DATA);
- for (ResolveInfo info : matches) {
- ServiceInfo serviceInfo = info.serviceInfo;
- if (serviceInfo.packageName.equals(resPackageName)) {
+ try {
+ PackageInfo packageInfo = pm.getPackageInfo(resPackageName,
+ PackageManager.GET_SERVICES|PackageManager.GET_META_DATA);
+ for (ServiceInfo serviceInfo : packageInfo.services) {
final XmlResourceParser parser = serviceInfo.loadXmlMetaData(pm,
METADATA_CONTACTS);
if (parser == null) continue;
inflate(context, parser);
}
+ } catch (NameNotFoundException nnfe) {
+ // If the package name is not found, we can't initialize this account type.
+ return;
}
mExtensionPackageNames = new ArrayList<String>();
@@ -107,6 +110,9 @@
addDataKindDisplayName(context);
addDataKindPhoneticName(context);
addDataKindPhoto(context);
+
+ // If we reach this point, the account type has been successfully initialized.
+ mInitSuccessful = true;
}
@Override
@@ -114,6 +120,14 @@
return true;
}
+ /**
+ * Whether this account type was able to be fully initialized. This may be false if
+ * (for example) the package name associated with the account type could not be found.
+ */
+ public boolean isInitialized() {
+ return mInitSuccessful;
+ }
+
@Override
public String getEditContactActivityClassName() {
return mEditContactActivityClassName;
diff --git a/src/com/android/contacts/quickcontact/FloatingChildLayout.java b/src/com/android/contacts/quickcontact/FloatingChildLayout.java
index 62b4f1a..5358aca 100644
--- a/src/com/android/contacts/quickcontact/FloatingChildLayout.java
+++ b/src/com/android/contacts/quickcontact/FloatingChildLayout.java
@@ -158,7 +158,7 @@
final int scaleInterpolator = isExitAnimation ? android.R.interpolator.accelerate_quint
: android.R.interpolator.decelerate_quint;
animator.setInterpolator(AnimationUtils.loadInterpolator(getContext(), scaleInterpolator));
- final float scaleTarget = isExitAnimation ? 0.7f : 1.0f;
+ final float scaleTarget = isExitAnimation ? 0.5f : 1.0f;
animator.scaleX(scaleTarget);
animator.scaleY(scaleTarget);
animator.alpha(isExitAnimation ? 0.0f : 1.0f);
diff --git a/src/com/android/contacts/socialwidget/SocialWidgetProvider.java b/src/com/android/contacts/socialwidget/SocialWidgetProvider.java
index 4686c81..ee41332 100644
--- a/src/com/android/contacts/socialwidget/SocialWidgetProvider.java
+++ b/src/com/android/contacts/socialwidget/SocialWidgetProvider.java
@@ -202,7 +202,7 @@
sb.setSpan(sizeSpan, 0, name.length(), 0);
sb.setSpan(styleSpan, 0, name.length(), 0);
- if (streamItems.isEmpty()) {
+ if (streamItems == null || streamItems.isEmpty()) {
views.setTextViewText(R.id.name, sb);
views.setViewVisibility(R.id.name, View.VISIBLE);
views.setViewVisibility(R.id.name_and_snippet, View.GONE);
diff --git a/tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java b/tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java
index 8feca19..1e5d879 100644
--- a/tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java
+++ b/tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java
@@ -25,7 +25,6 @@
import android.content.res.Resources;
import android.provider.CallLog.Calls;
import android.test.AndroidTestCase;
-import android.view.LayoutInflater;
import android.view.View;
import java.util.GregorianCalendar;
@@ -59,9 +58,7 @@
super.setUp();
Context context = getContext();
Resources resources = context.getResources();
- LayoutInflater layoutInflater =
- (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- CallTypeHelper callTypeHelper = new CallTypeHelper(resources, layoutInflater);
+ CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
mPhoneNumberHelper = new PhoneNumberHelper(resources, TEST_VOICEMAIL_NUMBER);
mHelper = new PhoneCallDetailsHelper(resources, callTypeHelper, mPhoneNumberHelper);
mViews = PhoneCallDetailsViews.createForTest(context);
@@ -128,25 +125,30 @@
public void testSetPhoneCallDetails_CallTypeIcons() {
setPhoneCallDetailsWithCallTypeIcons(Calls.INCOMING_TYPE);
- assertCallTypeIconsEquals(R.id.call_log_incoming_call_icon);
+ assertCallTypeIconsEquals(Calls.INCOMING_TYPE);
setPhoneCallDetailsWithCallTypeIcons(Calls.OUTGOING_TYPE);
- assertCallTypeIconsEquals(R.id.call_log_outgoing_call_icon);
+ assertCallTypeIconsEquals(Calls.OUTGOING_TYPE);
setPhoneCallDetailsWithCallTypeIcons(Calls.MISSED_TYPE);
- assertCallTypeIconsEquals(R.id.call_log_missed_call_icon);
+ assertCallTypeIconsEquals(Calls.MISSED_TYPE);
setPhoneCallDetailsWithCallTypeIcons(Calls.VOICEMAIL_TYPE);
- assertCallTypeIconsEquals(R.id.call_log_voicemail_icon);
+ assertCallTypeIconsEquals(Calls.VOICEMAIL_TYPE);
}
public void testSetPhoneCallDetails_MultipleCallTypeIcons() {
setPhoneCallDetailsWithCallTypeIcons(Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE);
- assertCallTypeIconsEquals(R.id.call_log_incoming_call_icon,
- R.id.call_log_outgoing_call_icon);
+ assertCallTypeIconsEquals(Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE);
setPhoneCallDetailsWithCallTypeIcons(Calls.MISSED_TYPE, Calls.MISSED_TYPE);
- assertCallTypeIconsEquals(R.id.call_log_missed_call_icon, R.id.call_log_missed_call_icon);
+ assertCallTypeIconsEquals(Calls.MISSED_TYPE, Calls.MISSED_TYPE);
+ }
+
+ public void testSetPhoneCallDetails_MultipleCallTypeIconsLastOneDropped() {
+ setPhoneCallDetailsWithCallTypeIcons(Calls.MISSED_TYPE, Calls.MISSED_TYPE,
+ Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE);
+ assertCallTypeIconsEquals(Calls.MISSED_TYPE, Calls.MISSED_TYPE, Calls.INCOMING_TYPE);
}
public void testSetPhoneCallDetails_CallTypeText() {
@@ -222,10 +224,10 @@
/** Asserts that the call type contains the images with the given drawables. */
private void assertCallTypeIconsEquals(int... ids) {
- assertEquals(ids.length, mViews.callTypeIcons.getChildCount());
+ assertEquals(ids.length, mViews.callTypeIcons.getCount());
for (int index = 0; index < ids.length; ++index) {
int id = ids[index];
- assertEquals(id, mViews.callTypeIcons.getChildAt(index).getId());
+ assertEquals(id, mViews.callTypeIcons.getCallType(index));
}
assertEquals(View.VISIBLE, mViews.callTypeIcons.getVisibility());
assertEquals(View.GONE, mViews.callTypeText.getVisibility());
diff --git a/tests/src/com/android/contacts/calllog/CallLogListItemHelperTest.java b/tests/src/com/android/contacts/calllog/CallLogListItemHelperTest.java
index 79ebf4d..4628b8e 100644
--- a/tests/src/com/android/contacts/calllog/CallLogListItemHelperTest.java
+++ b/tests/src/com/android/contacts/calllog/CallLogListItemHelperTest.java
@@ -24,7 +24,6 @@
import android.content.res.Resources;
import android.provider.CallLog.Calls;
import android.test.AndroidTestCase;
-import android.view.LayoutInflater;
import android.view.View;
/**
@@ -56,9 +55,7 @@
super.setUp();
Context context = getContext();
Resources resources = context.getResources();
- LayoutInflater layoutInflater =
- (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- CallTypeHelper callTypeHelper = new CallTypeHelper(resources, layoutInflater);
+ CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
mPhoneNumberHelper = new PhoneNumberHelper(resources, TEST_VOICEMAIL_NUMBER);
PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(
resources, callTypeHelper, mPhoneNumberHelper);