Merge "Background tasks can decide which executor to run with."
diff --git a/res/layout-sw580dp/aggregation_suggestions_item.xml b/res/layout-sw580dp/aggregation_suggestions_item.xml
deleted file mode 100644
index 5ea8347..0000000
--- a/res/layout-sw580dp/aggregation_suggestions_item.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright 2010, 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.
- */
--->
-
-<view xmlns:android="http://schemas.android.com/apk/res/android"
- class="com.android.contacts.editor.AggregationSuggestionView"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:paddingLeft="5dip"
- android:paddingRight="15dip"
- android:background="?android:attr/selectableItemBackground"
- android:focusable="true"
->
- <ImageView
- android:id="@+id/aggregation_suggestion_photo"
- android:layout_width="@dimen/aggregation_suggestion_icon_size"
- android:layout_height="@dimen/aggregation_suggestion_icon_size"
- android:layout_alignParentLeft="true"
- android:layout_centerInParent="true"
- android:layout_marginTop="4dip"
- android:scaleType="fitCenter"
- />
-
- <TextView
- android:id="@+id/aggregation_suggestion_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_toRightOf="@id/aggregation_suggestion_photo"
- android:layout_marginLeft="10dip"
- android:layout_marginTop="4dip"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:textColor="?android:attr/textColorSecondary"
- />
-
- <TextView
- android:id="@+id/aggregation_suggestion_data"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_toRightOf="@id/aggregation_suggestion_photo"
- android:layout_below="@id/aggregation_suggestion_name"
- android:layout_marginLeft="10dip"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="?android:attr/textColorSecondary"
- />
-</view>
diff --git a/res/layout/account_selector_list_item.xml b/res/layout/account_selector_list_item.xml
index 82b73da..a700866 100644
--- a/res/layout/account_selector_list_item.xml
+++ b/res/layout/account_selector_list_item.xml
@@ -22,7 +22,7 @@
android:layout_width="@dimen/detail_network_icon_size"
android:layout_height="@dimen/detail_network_icon_size"
android:layout_margin="8dip"
- android:layout_gravity="center_vertical"/>
+ android:layout_gravity="center_vertical" />
<LinearLayout
android:layout_width="0dip"
diff --git a/res/layout/aggregation_suggestions_item.xml b/res/layout/aggregation_suggestions_item.xml
index 9ed1bf3..188a26e 100644
--- a/res/layout/aggregation_suggestions_item.xml
+++ b/res/layout/aggregation_suggestions_item.xml
@@ -21,42 +21,34 @@
class="com.android.contacts.editor.AggregationSuggestionView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:paddingLeft="5dip"
- android:paddingRight="15dip"
+ android:minHeight="48dip"
+ android:paddingLeft="8dip"
android:background="?android:attr/selectableItemBackground"
- android:focusable="true"
->
+ android:orientation="horizontal">
+
+ <LinearLayout
+ android:layout_width="0px"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:layout_gravity="center_vertical">
+ <TextView
+ android:id="@+id/aggregation_suggestion_name"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+ <TextView
+ android:id="@+id/aggregation_suggestion_data"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="?android:attr/textColorSecondary" />
+ </LinearLayout>
<ImageView
android:id="@+id/aggregation_suggestion_photo"
- android:layout_width="@dimen/aggregation_suggestion_icon_size"
- android:layout_height="@dimen/aggregation_suggestion_icon_size"
- android:layout_alignParentLeft="true"
- android:layout_centerInParent="true"
- android:layout_marginTop="4dip"
+ android:layout_width="48dip"
+ android:layout_height="48dip"
android:scaleType="fitCenter"
- />
-
- <TextView
- android:id="@+id/aggregation_suggestion_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_toRightOf="@id/aggregation_suggestion_photo"
- android:layout_marginLeft="10dip"
- android:layout_marginTop="4dip"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorSecondary"
- />
-
- <TextView
- android:id="@+id/aggregation_suggestion_data"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_toRightOf="@id/aggregation_suggestion_photo"
- android:layout_below="@id/aggregation_suggestion_name"
- android:layout_marginLeft="10dip"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorSecondary"
- />
+ android:layout_gravity="center_vertical" />
</view>
diff --git a/res/layout/call_detail.xml b/res/layout/call_detail.xml
index 987a787..08b283a 100644
--- a/res/layout/call_detail.xml
+++ b/res/layout/call_detail.xml
@@ -16,10 +16,12 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ android:id="@+id/call_detail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="top"
+ android:visibility="gone"
>
<FrameLayout
android:id="@+id/voicemail_status"
@@ -48,7 +50,6 @@
android:layout_height="0dip"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
- android:background="@drawable/ic_contact_picture"
/>
</view>
<LinearLayout
@@ -109,21 +110,87 @@
android:layout_alignBottom="@id/contact_background_sizer"
android:background="?android:attr/selectableItemBackground"
/>
- <ListView
- android:id="@android:id/list"
+ <FrameLayout android:id="@+id/call_and_sms_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/voicemail_container"
android:layout_marginTop="@dimen/call_log_icon_margin"
- android:background="?attr/call_log_primary_background_color"
- />
+ >
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/call_and_sms"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/call_log_list_item_height"
+ android:orientation="horizontal"
+ android:layout_marginTop="@dimen/call_log_icon_margin"
+ android:gravity="center_vertical"
+ android:background="@drawable/dialpad_background"
+ >
+
+ <LinearLayout android:id="@+id/call_and_sms_main_action"
+ android:layout_width="0dip"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:paddingLeft="@dimen/call_log_indent_margin"
+ android:orientation="vertical"
+ android:gravity="center_vertical"
+ android:focusable="true"
+ android:background="@drawable/btn_dial"
+ >
+
+ <TextView android:id="@+id/call_and_sms_text1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="?android:attr/textAppearanceLarge"
+ />
+
+ <LinearLayout android:id="@+id/call_and_sms_line2"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ >
+ <TextView android:id="@+id/call_and_sms_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginRight="5dip"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textStyle="bold"
+ />
+
+ <TextView android:id="@+id/call_and_sms_number"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ />
+ </LinearLayout>
+
+ </LinearLayout>
+
+ <View android:id="@+id/call_and_sms_divider"
+ android:layout_width="1px"
+ android:layout_height="32dip"
+ android:background="@drawable/ic_divider_dashed_holo_dark"
+ android:layout_gravity="center_vertical"
+ />
+
+ <ImageView android:id="@+id/call_and_sms_icon"
+ android:layout_width="@color/call_log_voicemail_highlight_color"
+ android:layout_height="match_parent"
+ android:paddingLeft="@dimen/call_log_inner_margin"
+ android:paddingRight="@dimen/call_log_outer_margin"
+ android:gravity="center"
+ android:scaleType="centerInside"
+ android:focusable="true"
+ android:background="@drawable/btn_dial"
+ />
+ </LinearLayout>
+ </FrameLayout>
<ListView
android:id="@+id/history"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/call_log_icon_margin"
android:layout_alignParentLeft="true"
- android:layout_below="@android:id/list"
+ android:layout_below="@id/call_and_sms_container"
android:background="@android:color/black"
/>
</RelativeLayout>
diff --git a/res/layout/call_detail_list_item.xml b/res/layout/call_detail_list_item.xml
deleted file mode 100644
index e2bf83c..0000000
--- a/res/layout/call_detail_list_item.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="@dimen/call_log_list_item_height"
- android:orientation="horizontal"
- android:layout_marginTop="@dimen/call_log_icon_margin"
- android:gravity="center_vertical"
- android:background="@drawable/dialpad_background"
->
-
- <LinearLayout android:id="@+id/main_action"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:paddingLeft="@dimen/call_log_indent_margin"
- android:orientation="vertical"
- android:gravity="center_vertical"
- android:focusable="true"
- android:background="@drawable/btn_dial"
- >
-
- <TextView android:id="@android:id/text1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceLarge"
- />
-
-
- <LinearLayout android:id="@+id/line2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- >
- <TextView android:id="@+id/label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="5dip"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textStyle="bold"
- />
-
- <TextView android:id="@+id/number"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- />
- </LinearLayout>
-
- </LinearLayout>
-
- <View android:id="@+id/divider"
- android:layout_width="1px"
- android:layout_height="32dip"
- android:background="@drawable/ic_divider_dashed_holo_dark"
- android:layout_gravity="center_vertical"
- />
-
- <ImageView android:id="@+id/icon"
- android:layout_width="@color/call_log_voicemail_highlight_color"
- android:layout_height="match_parent"
- android:paddingLeft="@dimen/call_log_inner_margin"
- android:paddingRight="@dimen/call_log_outer_margin"
- android:gravity="center"
- android:scaleType="centerInside"
- android:focusable="true"
- android:background="@drawable/btn_dial"
- />
-
-</LinearLayout>
diff --git a/res/layout/contacts_list_content.xml b/res/layout/contacts_list_content.xml
index 567e63d..f98d751 100644
--- a/res/layout/contacts_list_content.xml
+++ b/res/layout/contacts_list_content.xml
@@ -41,14 +41,17 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/contact_filter_header_min_height"
- android:layout_marginLeft="8dip"
android:singleLine="true"
android:ellipsize="end"
- android:gravity="left"
+ android:textStyle="bold"
+ android:gravity="left|center_vertical"
+ android:textAllCaps="true"
+ android:paddingLeft="@dimen/contact_browser_list_item_text_indent"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary" />
<View
android:id="@+id/account_filter_header_bottom_divider"
+ android:layout_height="1dip"
style="@style/SectionDivider" />
</LinearLayout>
diff --git a/res/layout/dialpad.xml b/res/layout/dialpad.xml
index e9a95ee..1f74c26 100644
--- a/res/layout/dialpad.xml
+++ b/res/layout/dialpad.xml
@@ -19,13 +19,18 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialpad"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="0px"
+ android:layout_weight="0.650"
android:layout_gravity="center_horizontal"
- android:layout_marginTop="4dip"
- android:background="@drawable/dialpad_background"
- android:layout_weight="1">
+ android:layout_marginTop="@dimen/dialpad_vertical_margin"
+ android:paddingLeft="5dip"
+ android:paddingRight="5dip"
+ android:paddingBottom="10dip"
+ android:background="@drawable/dialpad_background">
- <TableRow>
+ <TableRow
+ android:layout_height="0px"
+ android:layout_weight="1">
<ImageButton android:id="@+id/one" style="@style/DialtactsDialpadButtonStyle"
android:src="@drawable/dial_num_1"
android:contentDescription="@string/description_image_button_one" />
@@ -37,7 +42,9 @@
android:contentDescription="@string/description_image_button_three" />
</TableRow>
- <TableRow>
+ <TableRow
+ android:layout_height="0px"
+ android:layout_weight="1">
<ImageButton android:id="@+id/four" style="@style/DialtactsDialpadButtonStyle"
android:src="@drawable/dial_num_4"
android:contentDescription="@string/description_image_button_four" />
@@ -49,7 +56,9 @@
android:contentDescription="@string/description_image_button_six" />
</TableRow>
- <TableRow>
+ <TableRow
+ android:layout_height="0px"
+ android:layout_weight="1">
<ImageButton android:id="@+id/seven" style="@style/DialtactsDialpadButtonStyle"
android:src="@drawable/dial_num_7"
android:contentDescription="@string/description_image_button_seven" />
@@ -61,7 +70,9 @@
android:contentDescription="@string/description_image_button_nine" />
</TableRow>
- <TableRow>
+ <TableRow
+ android:layout_height="0px"
+ android:layout_weight="1">
<ImageButton android:id="@+id/star" style="@style/DialtactsDialpadButtonStyle"
android:src="@drawable/dial_num_star"
android:contentDescription="@string/description_image_button_star" />
@@ -71,6 +82,5 @@
<ImageButton android:id="@+id/pound" style="@style/DialtactsDialpadButtonStyle"
android:src="@drawable/dial_num_pound"
android:contentDescription="@string/description_image_button_pound" />
-
</TableRow>
</TableLayout>
diff --git a/res/layout/dialpad_additional_buttons.xml b/res/layout/dialpad_additional_buttons.xml
index 47a578e..a5e247b 100644
--- a/res/layout/dialpad_additional_buttons.xml
+++ b/res/layout/dialpad_additional_buttons.xml
@@ -18,11 +18,10 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialpadAdditionalButtons"
android:layout_width="match_parent"
- android:layout_height="@dimen/dialpad_additional_buttons_height"
+ android:layout_height="0px"
+ android:layout_weight="0.150"
android:layout_gravity="center_horizontal"
- android:layout_marginTop="4dip"
- android:layout_marginBottom="4dip"
- android:layout_weight="0.25"
+ android:layout_marginTop="@dimen/dialpad_vertical_margin"
android:background="@drawable/dialpad_background"
android:orientation="horizontal">
diff --git a/res/layout/dialpad_fragment.xml b/res/layout/dialpad_fragment.xml
index 864dcc7..90d2593 100644
--- a/res/layout/dialpad_fragment.xml
+++ b/res/layout/dialpad_fragment.xml
@@ -19,15 +19,16 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:paddingLeft="4dip"
- android:paddingRight="4dip">
+ android:paddingLeft="@dimen/dialpad_horizontal_margin"
+ android:paddingRight="@dimen/dialpad_horizontal_margin">
<!-- Text field and possibly soft menu button above the keypad where
the digits are displayed. -->
<RelativeLayout
android:layout_width="match_parent"
- android:layout_height="@dimen/dialpad_digits_height"
- android:layout_marginTop="4dip"
+ android:layout_height="0px"
+ android:layout_weight="0.200"
+ android:layout_marginTop="@dimen/dialpad_vertical_margin"
android:gravity="center" >
<!-- Type of this EditText is set to NULL (to disable the IME keyboard)
@@ -45,10 +46,11 @@
android:textColor="?android:attr/textColorPrimary" />
<ImageButton android:id="@+id/overflow_menu"
- android:layout_width="wrap_content"
+ android:layout_width="48dip"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
- android:src="@drawable/ic_menu_overflow" />
+ android:src="@drawable/ic_menu_overflow"
+ android:background="@android:color/transparent"/>
</RelativeLayout>
diff --git a/res/layout/edit_field_list.xml b/res/layout/edit_field_list.xml
index ba715c7..d46828b 100644
--- a/res/layout/edit_field_list.xml
+++ b/res/layout/edit_field_list.xml
@@ -23,4 +23,4 @@
android:layout_weight="1"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/editor_field_left_padding"
- android:orientation="vertical" />
\ No newline at end of file
+ android:orientation="vertical" />
diff --git a/res/layout/edit_field_list_with_anchor_view.xml b/res/layout/edit_field_list_with_anchor_view.xml
new file mode 100644
index 0000000..fa69a5c
--- /dev/null
+++ b/res/layout/edit_field_list_with_anchor_view.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!-- Layout that behaves similarly to edit_field_list.xml,
+ but also has an anchor view for ListPopupWindow -->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:paddingLeft="@dimen/editor_field_left_padding"
+ android:orientation="vertical">
+ <LinearLayout
+ android:id="@+id/editors"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" />
+ <View
+ android:id="@+id/anchor_view"
+ android:layout_width="match_parent"
+ android:layout_height="0px" />
+</LinearLayout>
diff --git a/res/layout/raw_contact_editor_view.xml b/res/layout/raw_contact_editor_view.xml
index b98f4fb..af95e04 100644
--- a/res/layout/raw_contact_editor_view.xml
+++ b/res/layout/raw_contact_editor_view.xml
@@ -66,13 +66,6 @@
</LinearLayout>
- <ViewStub android:id="@+id/aggregation_suggestion_stub"
- android:inflatedId="@+id/aggregation_suggestion"
- android:layout="@layout/aggregation_suggestions"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:visibility="visible"/>
-
<LinearLayout
android:id="@+id/sect_fields"
android:layout_width="match_parent"
diff --git a/res/layout/structured_name_editor_view.xml b/res/layout/structured_name_editor_view.xml
index 196b079..3c5d5c9 100644
--- a/res/layout/structured_name_editor_view.xml
+++ b/res/layout/structured_name_editor_view.xml
@@ -34,8 +34,7 @@
android:clickable="true">
<include
- android:id="@+id/editors"
- layout="@layout/edit_field_list" />
+ layout="@layout/edit_field_list_with_anchor_view" />
<include
android:id="@+id/expansion_view_container"
diff --git a/res/layout/text_fields_editor_view.xml b/res/layout/text_fields_editor_view.xml
index e63b7da..e187a9e 100644
--- a/res/layout/text_fields_editor_view.xml
+++ b/res/layout/text_fields_editor_view.xml
@@ -31,8 +31,7 @@
android:clickable="true">
<include
- android:id="@+id/editors"
- layout="@layout/edit_field_list" />
+ layout="@layout/edit_field_list_with_anchor_view" />
<include
android:id="@+id/expansion_view_container"
diff --git a/res/layout/user_profile_button.xml b/res/layout/user_profile_button.xml
index b7b5e1d..4937d7b 100644
--- a/res/layout/user_profile_button.xml
+++ b/res/layout/user_profile_button.xml
@@ -19,9 +19,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
- android:paddingLeft="@dimen/contact_browser_list_left_margin"
android:singleLine="true"
android:text="@string/profile_display_name"
android:ellipsize="end"
+ android:minHeight="@dimen/contact_browser_list_item_photo_size"
android:gravity="left|center_vertical"
+ android:paddingLeft="@dimen/contact_browser_list_item_text_indent"
android:textAppearance="?android:attr/textAppearanceMedium" />
diff --git a/res/layout/user_profile_header.xml b/res/layout/user_profile_header.xml
index ae803ba..7c82ea4 100644
--- a/res/layout/user_profile_header.xml
+++ b/res/layout/user_profile_header.xml
@@ -16,7 +16,7 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- android:background="@color/contact_browser_list_bk_color"
+ android:paddingTop="@dimen/contact_browser_list_top_margin"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
@@ -30,14 +30,14 @@
android:id="@+id/profile_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/contact_browser_list_left_margin"
android:singleLine="true"
android:text="@string/user_profile_contacts_list_header"
android:textStyle="bold"
android:ellipsize="end"
- android:gravity="left"
+ android:gravity="left|center_vertical"
android:layout_weight="1"
- android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:paddingLeft="@dimen/contact_browser_list_item_text_indent"
android:textColor="@color/people_app_theme_color" />
<TextView
@@ -46,15 +46,15 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
- android:layout_gravity="right"
- android:textAppearance="?android:attr/textAppearanceMedium"
+ android:layout_gravity="right|center_vertical"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textSize="12dip"
android:textColor="@color/contact_count_text_color" />
</LinearLayout>
<View
android:background="@color/people_app_theme_color"
- android:layout_marginLeft="@dimen/contact_browser_list_left_margin"
android:layout_width="match_parent"
- android:layout_height="1px" />
+ android:layout_height="1dip" />
</LinearLayout>
\ No newline at end of file
diff --git a/res/values-long/dimens.xml b/res/values-long/dimens.xml
deleted file mode 100644
index af51d4c..0000000
--- a/res/values-long/dimens.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<resources>
- <dimen name="dialpad_digits_height">80dip</dimen>
- <dimen name="dialpad_additional_buttons_height">58dip</dimen>
- <dimen name="dialpad_button_height">70dip</dimen>
-</resources>
diff --git a/res/values-sw580dp/dimens.xml b/res/values-sw580dp/dimens.xml
index f7c0f05..91842d6 100644
--- a/res/values-sw580dp/dimens.xml
+++ b/res/values-sw580dp/dimens.xml
@@ -14,7 +14,6 @@
limitations under the License.
-->
<resources>
- <dimen name="aggregation_suggestion_icon_size">64dip</dimen>
<dimen name="editor_padding_top">32dip</dimen>
<dimen name="editor_type_label_width">122dip</dimen>
<dimen name="editor_field_spinner_text_size">15sp</dimen>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 4d4050e..0f7b62d 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -96,6 +96,8 @@
<attr name="list_item_header_underline_height" format="dimension" />
<attr name="list_item_header_underline_color" format="color" />
<attr name="list_item_contacts_count_text_color" format="color" />
+ <attr name="list_item_text_indent" format="dimension" />
+ <attr name="list_item_contacts_count_text_size" format="dimension" />
</declare-styleable>
<declare-styleable name="CallLog">
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 6e6cadb..a277124 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -88,7 +88,7 @@
<!-- Colors in the contact browser list -->
<color name="contact_browser_list_bk_color">#EEEEEE</color>
- <color name="contact_count_text_color">#777777</color>
+ <color name="contact_count_text_color">#AAAAAA</color>
<!-- Color of the text of the tab carousel in the contact details -->
<color name="detail_tab_carousel_tab_label_color">#EEEEEE</color>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index d5f3b69..69441fd 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -21,8 +21,6 @@
<dimen name="contact_shortcut_frame_width">50dip</dimen>
<dimen name="contact_shortcut_frame_height">56dip</dimen>
- <dimen name="aggregation_suggestion_icon_size">40dip</dimen>
-
<dimen name="account_selector_popup_width">400dip</dimen>
<dimen name="photo_action_popup_width">400dip</dimen>
@@ -196,14 +194,15 @@
<dimen name="group_editor_member_list_height">550dip</dimen>
<!-- Height of edit text in dialpad fragment -->
- <dimen name="dialpad_digits_height">67dip</dimen>
- <dimen name="dialpad_digits_text_size">33sp</dimen>
- <dimen name="dialpad_additional_buttons_height">50dip</dimen>
- <dimen name="dialpad_button_height">50dip</dimen>
+ <dimen name="dialpad_horizontal_margin">4dip</dimen>
+ <dimen name="dialpad_vertical_margin">2dip</dimen>
+ <dimen name="dialpad_digits_text_size">35sp</dimen>
+
<!-- Just used in landscape mode -->
- <dimen name="dialpad_digits_margin_top">1dip</dimen>
- <!-- Just used in landscape mode -->
- <dimen name="dialpad_digits_margin_bottom">50dip</dimen>
+ <dimen name="dialpad_button_height">0px</dimen>
+ <dimen name="dialpad_digits_height">0px</dimen>
+ <dimen name="dialpad_digits_margin_top">0px</dimen>
+ <dimen name="dialpad_digits_margin_bottom">0px</dimen>
<!-- Width of search view in action bar. Use 0dip for MATCH_PARENT -->
<dimen name="search_view_width">0dip</dimen>
@@ -213,8 +212,10 @@
<dimen name="contact_browser_list_header_right_margin">@dimen/list_visible_scrollbar_padding</dimen>
<dimen name="contact_browser_list_left_margin">16dip</dimen>
<dimen name="contact_browser_list_right_margin">0dip</dimen>
+ <dimen name="contact_browser_list_item_photo_size">64dip</dimen>
+ <dimen name="contact_browser_list_item_text_indent">8dip</dimen>
- <dimen name="contact_browser_list_top_margin">0dip</dimen>
+ <dimen name="contact_browser_list_top_margin">8dip</dimen>
<dimen name="contacts_count_right_margin">40dip</dimen>
<!-- ContactTile Layouts -->
@@ -249,4 +250,5 @@
<!-- Height for directory headers in contact lists -->
<dimen name="directory_header_height">24dip</dimen>
+
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f20f6c3..eaf6ab8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1729,6 +1729,34 @@
-->
<string name="description_call_log_voicemail">Voicemail</string>
+ <!-- String describing the button to add a contact for the current number.
+
+ Note: AccessibilityServices use this attribute to announce what the view represents.
+ This is especially valuable for views without textual representation like ImageView.
+ -->
+ <string name="description_add_contact">Add contact</string>
+
+ <!-- String describing the button to view the contact for the current number.
+
+ Note: AccessibilityServices use this attribute to announce what the view represents.
+ This is especially valuable for views without textual representation like ImageView.
+ -->
+ <string name="description_view_contact">View contact <xliff:g id="name">%1$s</xliff:g></string>
+
+ <!-- String describing the button to call a number or contact.
+
+ Note: AccessibilityServices use this attribute to announce what the view represents.
+ This is especially valuable for views without textual representation like ImageView.
+ -->
+ <string name="description_call">Call <xliff:g id="name">%1$s</xliff:g></string>
+
+ <!-- String describing the button to SMS a number or contact.
+
+ Note: AccessibilityServices use this attribute to announce what the view represents.
+ This is especially valuable for views without textual representation like ImageView.
+ -->
+ <string name="description_send_text_message">Send text message to <xliff:g id="name">%1$s</xliff:g></string>
+
<!-- String describing the icon in the call log used to represent an unheard voicemail left to
the user.
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 763a600..e6cad61 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -24,7 +24,7 @@
<item name="activated_background">@drawable/list_item_activated_background</item>
<item name="section_header_background">@drawable/list_title_holo</item>
<item name="list_section_header_height">32dip</item>
- <item name="list_item_divider">@drawable/list_item_divider</item>
+ <item name="list_item_divider">?android:attr/listDivider</item>
<item name="list_item_padding_top">0dip</item>
<item name="list_item_padding_right">0dip</item>
<item name="list_item_padding_bottom">0dip</item>
@@ -35,16 +35,17 @@
<item name="list_item_vertical_divider_margin">5dip</item>
<item name="list_item_presence_icon_margin">4dip</item>
<item name="list_item_presence_icon_size">16dip</item>
- <item name="list_item_photo_size">56dip</item>
+ <item name="list_item_photo_size">@dimen/contact_browser_list_item_photo_size</item>
<item name="list_item_profile_photo_size">70dip</item>
<item name="list_item_prefix_highlight_color">#729a27</item>
- <item name="list_item_header_text_indent">4dip</item>
+ <item name="list_item_header_text_indent">8dip</item>
<item name="list_item_header_text_color">@color/people_app_theme_color</item>
<item name="list_item_header_text_size">12sp</item>
<item name="list_item_header_height">24dip</item>
<item name="list_item_header_underline_height">1px</item>
<item name="list_item_header_underline_color">@color/people_app_theme_color</item>
<item name="contact_filter_popup_width">320dip</item>
+ <item name="list_item_text_indent">@dimen/contact_browser_list_item_text_indent</item>
<!-- CallLog -->
<item name="call_log_primary_text_color">#FFFFFF</item>
<item name="call_log_primary_background_color">#000000</item>
@@ -129,7 +130,7 @@
<item name="activated_background">@drawable/list_item_activated_background</item>
<item name="section_header_background">@drawable/list_title_holo</item>
<item name="list_section_header_height">24dip</item>
- <item name="list_item_divider">@drawable/list_item_divider</item>
+ <item name="list_item_divider">?android:attr/listDivider</item>
<item name="list_item_padding_top">0dip</item>
<item name="list_item_padding_right">0dip</item>
<item name="list_item_padding_bottom">0dip</item>
@@ -140,17 +141,20 @@
<item name="list_item_vertical_divider_margin">5dip</item>
<item name="list_item_presence_icon_margin">4dip</item>
<item name="list_item_presence_icon_size">16dip</item>
- <item name="list_item_photo_size">56dip</item>
+ <item name="list_item_photo_size">@dimen/contact_browser_list_item_photo_size</item>
<item name="list_item_profile_photo_size">70dip</item>
<item name="list_item_prefix_highlight_color">#729a27</item>
- <item name="list_item_header_text_indent">4dip</item>
+ <item name="list_item_header_text_indent">@dimen/contact_browser_list_item_text_indent</item>
<item name="list_item_header_text_color">@color/people_app_theme_color</item>
- <item name="list_item_header_text_size">12sp</item>
+ <item name="list_item_header_text_size">14dip</item>
<item name="list_item_header_height">26dip</item>
- <item name="list_item_header_underline_height">1px</item>
+ <item name="list_item_header_underline_height">1dip</item>
<item name="list_item_header_underline_color">@color/people_app_theme_color</item>
<item name="list_item_contacts_count_text_color">@color/contact_count_text_color</item>
<item name="contact_filter_popup_width">320dip</item>
+ <item name="list_item_text_indent">@dimen/contact_browser_list_item_text_indent</item>
+ <item name="list_item_contacts_count_text_size">12dip</item>
+ list_item_contacts_count_text_size
<!-- Favorites -->
<item name="favorites_padding_bottom">0dip</item>
</style>
@@ -173,7 +177,7 @@
<item name="activated_background">@drawable/list_item_activated_background</item>
<item name="section_header_background">@drawable/list_title_holo</item>
<item name="list_section_header_height">32dip</item>
- <item name="list_item_divider">@drawable/list_item_divider</item>
+ <item name="list_item_divider">?android:attr/listDivider</item>
<item name="list_item_padding_top">4dip</item>
<item name="list_item_padding_right">11dip</item>
<item name="list_item_padding_bottom">4dip</item>
@@ -183,7 +187,7 @@
<item name="list_item_call_button_padding">14dip</item>
<item name="list_item_vertical_divider_margin">5dip</item>
<item name="list_item_presence_icon_margin">5dip</item>
- <item name="list_item_photo_size">56dip</item>
+ <item name="list_item_photo_size">@dimen/contact_browser_list_item_photo_size</item>
<item name="list_item_profile_photo_size">70dip</item>
<item name="list_item_prefix_highlight_color">#729a27</item>
<item name="list_item_header_text_indent">56dip</item>
@@ -194,7 +198,7 @@
<style name="ContactPickerTheme" parent="@android:Theme.Holo.Light">
<item name="section_header_background">@drawable/section_header</item>
- <item name="list_item_divider">@drawable/list_item_divider</item>
+ <item name="list_item_divider">?android:attr/listDivider</item>
<item name="list_item_padding_top">4dip</item>
<item name="list_item_padding_right">11dip</item>
<item name="list_item_padding_bottom">4dip</item>
@@ -204,7 +208,7 @@
<item name="list_item_call_button_padding">14dip</item>
<item name="list_item_vertical_divider_margin">5dip</item>
<item name="list_item_presence_icon_margin">5dip</item>
- <item name="list_item_photo_size">56dip</item>
+ <item name="list_item_photo_size">@dimen/contact_browser_list_item_photo_size</item>
<item name="list_item_profile_photo_size">70dip</item>
<item name="list_item_prefix_highlight_color">#729a27</item>
<item name="list_item_header_text_indent">56dip</item>
@@ -276,7 +280,7 @@
<style name="DialtactsDialpadButtonStyle">
<item name="android:layout_width">0dip</item>
- <item name="android:layout_height">@dimen/dialpad_button_height</item>
+ <item name="android:layout_height">match_parent</item>
<item name="android:layout_weight">1</item>
<item name="android:background">@drawable/btn_dial</item>
<item name="android:soundEffectsEnabled">false</item>
diff --git a/src/com/android/contacts/CallDetailActivity.java b/src/com/android/contacts/CallDetailActivity.java
index 662485a..14b38b9 100644
--- a/src/com/android/contacts/CallDetailActivity.java
+++ b/src/com/android/contacts/CallDetailActivity.java
@@ -28,7 +28,7 @@
import com.android.contacts.voicemail.VoicemailStatusHelperImpl;
import android.app.ActionBar;
-import android.app.ListActivity;
+import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
@@ -55,15 +55,12 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -72,7 +69,7 @@
* This activity can be either started with the URI of a single call log entry, or with the
* {@link #EXTRA_CALL_LOG_IDS} extra to specify a group of call log entries.
*/
-public class CallDetailActivity extends ListActivity {
+public class CallDetailActivity extends Activity {
private static final String TAG = "CallDetail";
/** A long array extra containing ids of call log entries to display. */
@@ -143,6 +140,20 @@
static final int COLUMN_INDEX_NORMALIZED_NUMBER = 5;
static final int COLUMN_INDEX_PHOTO_URI = 6;
+ private final View.OnClickListener mPrimaryActionListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ startActivity(((ViewEntry) view.getTag()).primaryIntent);
+ }
+ };
+
+ private final View.OnClickListener mSecondaryActionListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ startActivity(((ViewEntry) view.getTag()).secondaryIntent);
+ }
+ };
+
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -323,14 +334,25 @@
// contact from this number.
final Intent mainActionIntent;
final int mainActionIcon;
+ final String mainActionDescription;
+
+ final CharSequence nameOrNumber;
+ if (!TextUtils.isEmpty(firstDetails.name)) {
+ nameOrNumber = firstDetails.name;
+ } else {
+ nameOrNumber = firstDetails.number;
+ }
if (firstDetails.personId != -1) {
Uri personUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, personId);
mainActionIntent = new Intent(Intent.ACTION_VIEW, personUri);
mainActionIcon = R.drawable.ic_contacts_holo_dark;
+ mainActionDescription =
+ getString(R.string.description_view_contact, nameOrNumber);
} else if (isVoicemailNumber) {
mainActionIntent = null;
mainActionIcon = 0;
+ mainActionDescription = null;
} else if (isSipNumber) {
// TODO: This item is currently disabled for SIP addresses, because
// the Insert.PHONE extra only works correctly for PSTN numbers.
@@ -343,16 +365,19 @@
// and then we can remove the "!isSipNumber" check above.
mainActionIntent = null;
mainActionIcon = 0;
+ mainActionDescription = null;
} else if (canPlaceCallsTo) {
mainActionIntent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
mainActionIntent.setType(Contacts.CONTENT_ITEM_TYPE);
mainActionIntent.putExtra(Insert.PHONE, mNumber);
mainActionIcon = R.drawable.ic_add_contact_holo_dark;
+ mainActionDescription = getString(R.string.description_add_contact);
} 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.
mainActionIntent = null;
mainActionIcon = 0;
+ mainActionDescription = null;
}
if (mainActionIntent == null) {
@@ -368,11 +393,9 @@
startActivity(mainActionIntent);
}
});
+ mMainActionPushLayerView.setContentDescription(mainActionDescription);
}
- // Build list of various available actions.
- final List<ViewEntry> actions = new ArrayList<ViewEntry>();
-
// This action allows to call the number that places the call.
if (canPlaceCallsTo) {
final CharSequence displayNumber =
@@ -381,7 +404,8 @@
ViewEntry entry = new ViewEntry(
getString(R.string.menu_callNumber, displayNumber),
- new Intent(Intent.ACTION_CALL_PRIVILEGED, numberCallUri));
+ new Intent(Intent.ACTION_CALL_PRIVILEGED, numberCallUri),
+ getString(R.string.description_call, nameOrNumber));
// Only show a label if the number is shown and it is not a SIP address.
if (!TextUtils.isEmpty(firstDetails.number)
@@ -393,30 +417,26 @@
// The secondary action allows to send an SMS to the number that placed the
// call.
if (mPhoneNumberHelper.canSendSmsTo(mNumber)) {
- entry.setSecondaryAction(R.drawable.ic_text_holo_dark,
+ entry.setSecondaryAction(
+ R.drawable.ic_text_holo_dark,
new Intent(Intent.ACTION_SENDTO,
- Uri.fromParts("sms", mNumber, null)));
+ Uri.fromParts("sms", mNumber, null)),
+ getString(R.string.description_send_text_message, nameOrNumber));
}
- actions.add(entry);
+ configureCallButton(entry);
+ } else {
+ disableCallButton();
}
mHasEditNumberBeforeCall = canPlaceCallsTo && !isSipNumber && !isVoicemailNumber;
- if (actions.size() != 0) {
- // Set the actions for this phone number.
- setListAdapter(new ViewAdapter(CallDetailActivity.this, actions));
- getListView().setVisibility(View.VISIBLE);
- getListView().setItemsCanFocus(true);
- } else {
- getListView().setVisibility(View.GONE);
- }
-
ListView historyList = (ListView) findViewById(R.id.history);
historyList.setAdapter(
new CallDetailHistoryAdapter(CallDetailActivity.this, mInflater,
mCallTypeHelper, details));
loadContactPhotos(photoUri);
+ findViewById(R.id.call_detail).setVisibility(View.VISIBLE);
}
});
}
@@ -507,6 +527,8 @@
static final class ViewEntry {
public final String text;
public final Intent primaryIntent;
+ /** The description for accessibility of the primary action. */
+ public final String primaryDescription;
public CharSequence label = null;
public String number = null;
@@ -514,111 +536,72 @@
public int secondaryIcon = 0;
/** Intent for the secondary action. If not null, an icon must be defined. */
public Intent secondaryIntent = null;
+ /** The description for accessibility of the secondary action. */
+ public String secondaryDescription = null;
- public ViewEntry(String text, Intent intent) {
+ public ViewEntry(String text, Intent intent, String description) {
this.text = text;
- this.primaryIntent = intent;
+ primaryIntent = intent;
+ primaryDescription = description;
}
- public void setSecondaryAction(int icon, Intent intent) {
+ public void setSecondaryAction(int icon, Intent intent, String description) {
secondaryIcon = icon;
secondaryIntent = intent;
+ secondaryDescription = description;
}
}
- private static final class ViewAdapter extends BaseAdapter {
- private final Context mContext;
- private final List<ViewEntry> mActions;
- private final LayoutInflater mInflater;
+ /** Disables the call button area, e.g., for private numbers. */
+ private void disableCallButton() {
+ findViewById(R.id.call_and_sms).setVisibility(View.GONE);
+ }
- private final View.OnClickListener mPrimaryActionListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- ViewEntry entry = (ViewEntry) view.getTag();
- mContext.startActivity(entry.primaryIntent);
- }
- };
+ /** Configures the call button area using the given entry. */
+ private void configureCallButton(ViewEntry entry) {
+ View convertView = findViewById(R.id.call_and_sms);
+ convertView.setVisibility(View.VISIBLE);
- private final View.OnClickListener mSecondaryActionListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- ViewEntry entry = (ViewEntry) view.getTag();
- mContext.startActivity(entry.secondaryIntent);
- }
- };
+ ImageView icon = (ImageView) convertView.findViewById(R.id.call_and_sms_icon);
+ View divider = convertView.findViewById(R.id.call_and_sms_divider);
+ TextView text = (TextView) convertView.findViewById(R.id.call_and_sms_text1);
- public ViewAdapter(Context context, List<ViewEntry> actions) {
- mContext = context;
- mActions = actions;
- mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ View mainAction = convertView.findViewById(R.id.call_and_sms_main_action);
+ mainAction.setOnClickListener(mPrimaryActionListener);
+ mainAction.setTag(entry);
+ mainAction.setContentDescription(entry.primaryDescription);
+
+ if (entry.secondaryIntent != null) {
+ icon.setOnClickListener(mSecondaryActionListener);
+ icon.setImageResource(entry.secondaryIcon);
+ icon.setVisibility(View.VISIBLE);
+ icon.setTag(entry);
+ icon.setContentDescription(entry.secondaryDescription);
+ divider.setVisibility(View.VISIBLE);
+ } else {
+ icon.setVisibility(View.GONE);
+ divider.setVisibility(View.GONE);
}
+ text.setText(entry.text);
- @Override
- public int getCount() {
- return mActions.size();
- }
+ View line2 = convertView.findViewById(R.id.call_and_sms_line2);
+ boolean numberEmpty = TextUtils.isEmpty(entry.number);
+ boolean labelEmpty = TextUtils.isEmpty(entry.label) || numberEmpty;
+ if (labelEmpty && numberEmpty) {
+ line2.setVisibility(View.GONE);
+ } else {
+ line2.setVisibility(View.VISIBLE);
- @Override
- public Object getItem(int position) {
- return mActions.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // Make sure we have a valid convertView to start with
- if (convertView == null) {
- convertView = mInflater.inflate(R.layout.call_detail_list_item, parent, false);
- }
-
- // Fill action with icon and text.
- ViewEntry entry = mActions.get(position);
-
- ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
- View divider = convertView.findViewById(R.id.divider);
- TextView text = (TextView) convertView.findViewById(android.R.id.text1);
-
- View mainAction = convertView.findViewById(R.id.main_action);
- mainAction.setOnClickListener(mPrimaryActionListener);
- mainAction.setTag(entry);
-
- if (entry.secondaryIntent != null) {
- icon.setOnClickListener(mSecondaryActionListener);
- icon.setImageResource(entry.secondaryIcon);
- icon.setVisibility(View.VISIBLE);
- icon.setTag(entry);
- divider.setVisibility(View.VISIBLE);
+ TextView label = (TextView) convertView.findViewById(R.id.call_and_sms_label);
+ if (labelEmpty) {
+ label.setVisibility(View.GONE);
} else {
- icon.setVisibility(View.GONE);
- divider.setVisibility(View.GONE);
- }
- text.setText(entry.text);
-
- View line2 = convertView.findViewById(R.id.line2);
- boolean numberEmpty = TextUtils.isEmpty(entry.number);
- boolean labelEmpty = TextUtils.isEmpty(entry.label) || numberEmpty;
- if (labelEmpty && numberEmpty) {
- line2.setVisibility(View.GONE);
- } else {
- line2.setVisibility(View.VISIBLE);
-
- TextView label = (TextView) convertView.findViewById(R.id.label);
- if (labelEmpty) {
- label.setVisibility(View.GONE);
- } else {
- label.setText(entry.label);
- label.setVisibility(View.VISIBLE);
- }
-
- TextView number = (TextView) convertView.findViewById(R.id.number);
- number.setText(entry.number);
+ label.setText(entry.label);
+ label.setVisibility(View.VISIBLE);
}
- return convertView;
+ TextView number = (TextView) convertView.findViewById(R.id.call_and_sms_number);
+ number.setText(entry.number);
}
}
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index b2fc972..fc9879a 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -1195,11 +1195,10 @@
@Override
public boolean onCreateOptionsMenu(Menu menu) {
-// STOPSHIP Un-comment it once b/5027071 is fixed.
-// if (!areContactsAvailable()) {
-// If contacts aren't available, hide all menu items.
-// return false;
-// }
+ if (!areContactsAvailable()) {
+ // If contacts aren't available, hide all menu items.
+ return false;
+ }
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
@@ -1255,14 +1254,9 @@
public boolean onPrepareOptionsMenu(Menu menu) {
mOptionsMenuContactsAvailable = areContactsAvailable();
if (!mOptionsMenuContactsAvailable) {
- // STOPSHIP Remove makeAllMenuItemsVisible()when STOPSHIP in onCreateOptionsMenu() is
- // fixed.
- makeAllMenuItemsVisible(menu, false);
return false;
}
- makeAllMenuItemsVisible(menu, true);
- final MenuItem searchMenu = menu.findItem(R.id.menu_search);
final MenuItem addContactMenu = menu.findItem(R.id.menu_add_contact);
final MenuItem contactsFilterMenu = menu.findItem(R.id.menu_contacts_filter);
@@ -1271,7 +1265,8 @@
addGroupMenu = menu.findItem(R.id.menu_custom_add_group);
}
- if (mActionBarAdapter.isSearchMode()) {
+ final boolean isSearchMode = mActionBarAdapter.isSearchMode();
+ if (isSearchMode) {
addContactMenu.setVisible(false);
addGroupMenu.setVisible(false);
contactsFilterMenu.setVisible(false);
@@ -1299,25 +1294,20 @@
break;
}
}
-
- if (searchMenu != null) {
- // Don't show the search menu in search mode.
- searchMenu.setVisible(!mActionBarAdapter.isSearchMode());
- }
-
-
- MenuItem settings = menu.findItem(R.id.menu_settings);
- if (settings != null) {
- settings.setVisible(!ContactsPreferenceActivity.isEmpty(this));
- }
+ final boolean showMiscOptions = !isSearchMode;
+ makeMenuItemVisible(menu, R.id.menu_search, showMiscOptions);
+ makeMenuItemVisible(menu, R.id.menu_import_export, showMiscOptions);
+ makeMenuItemVisible(menu, R.id.menu_accounts, showMiscOptions);
+ makeMenuItemVisible(menu, R.id.menu_settings,
+ showMiscOptions && !ContactsPreferenceActivity.isEmpty(this));
return true;
}
- private void makeAllMenuItemsVisible(Menu menu, boolean visible) {
- final int itemCount = menu.size();
- for (int i = 0; i < itemCount; i++) {
- menu.getItem(i).setVisible(visible);
+ private void makeMenuItemVisible(Menu menu, int itemId, boolean visible) {
+ MenuItem item =menu.findItem(itemId);
+ if (item != null) {
+ item.setVisible(visible);
}
}
diff --git a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java b/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
index 5b51d57..f74b56a 100644
--- a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
+++ b/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
@@ -217,11 +217,11 @@
return;
}
- String snippet = null;
+ CharSequence snippet = null;
String photoUri = null;
if (!contactData.getStreamItems().isEmpty()) {
StreamItemEntry firstEntry = contactData.getStreamItems().get(0);
- snippet = firstEntry.getText();
+ snippet = Html.fromHtml(firstEntry.getText());
if (!firstEntry.getPhotos().isEmpty()) {
StreamItemPhotoEntry firstPhoto = firstEntry.getPhotos().get(0);
photoUri = firstPhoto.getPhotoUri();
diff --git a/src/com/android/contacts/editor/AggregationSuggestionView.java b/src/com/android/contacts/editor/AggregationSuggestionView.java
index 07e67e8..df90cff 100644
--- a/src/com/android/contacts/editor/AggregationSuggestionView.java
+++ b/src/com/android/contacts/editor/AggregationSuggestionView.java
@@ -29,7 +29,7 @@
import android.provider.ContactsContract.Contacts;
import android.util.AttributeSet;
import android.widget.ImageView;
-import android.widget.RelativeLayout;
+import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
@@ -38,7 +38,7 @@
/**
* A view that contains a name, picture and other data for a contact aggregation suggestion.
*/
-public class AggregationSuggestionView extends RelativeLayout {
+public class AggregationSuggestionView extends LinearLayout {
public interface Listener {
@@ -63,17 +63,14 @@
public AggregationSuggestionView(Context context) {
super(context);
- setClickable(true);
}
public AggregationSuggestionView(Context context, AttributeSet attrs) {
super(context, attrs);
- setClickable(true);
}
public AggregationSuggestionView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
- setClickable(true);
}
public void setNewContact(boolean flag) {
@@ -135,8 +132,7 @@
mListener = listener;
}
- @Override
- public boolean performClick() {
+ public boolean handleItemClickEvent() {
if (mListener != null && isEnabled()) {
if (canEditSuggestedContact()) {
mListener.onEditAction(Contacts.getLookupUri(mContactId, mLookupKey));
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index 412efab..afc3ab1 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -83,6 +83,8 @@
import android.view.ViewGroup.MarginLayoutParams;
import android.view.ViewStub;
import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListPopupWindow;
import android.widget.Toast;
@@ -207,17 +209,6 @@
private Cursor mGroupMetaData;
- /**
- * A delay in milliseconds used for bringing aggregation suggestions to
- * the visible part of the screen. The reason this has to be done after
- * a delay is a race condition with the soft keyboard. The keyboard
- * may expand to display its own autocomplete suggestions, which will
- * reduce the visible area of the screen. We will yield to the keyboard
- * hoping that the delay is sufficient. If not - part of the
- * suggestion will be hidden, which is not fatal.
- */
- private static final int AGGREGATION_SUGGESTION_SCROLL_DELAY = 200;
-
private File mCurrentPhotoFile;
// Height/width (in pixels) to request for the photo - queried from the provider.
@@ -245,6 +236,62 @@
private long mAggregationSuggestionsRawContactId;
private View mAggregationSuggestionView;
+ private ListPopupWindow mAggregationSuggestionPopup;
+
+ private static final class AggregationSuggestionAdapter extends BaseAdapter {
+ private final Activity mActivity;
+ private final boolean mSetNewContact;
+ private final AggregationSuggestionView.Listener mListener;
+ private final List<Suggestion> mSuggestions;
+
+ public AggregationSuggestionAdapter(Activity activity, boolean setNewContact,
+ AggregationSuggestionView.Listener listener, List<Suggestion> suggestions) {
+ mActivity = activity;
+ mSetNewContact = setNewContact;
+ mListener = listener;
+ mSuggestions = suggestions;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ Suggestion suggestion = (Suggestion) getItem(position);
+ LayoutInflater inflater = mActivity.getLayoutInflater();
+ AggregationSuggestionView suggestionView =
+ (AggregationSuggestionView) inflater.inflate(
+ R.layout.aggregation_suggestions_item, null);
+ suggestionView.setNewContact(mSetNewContact);
+ suggestionView.setListener(mListener);
+ suggestionView.bindSuggestion(suggestion);
+ return suggestionView;
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return mSuggestions.get(position);
+ }
+
+ @Override
+ public int getCount() {
+ return mSuggestions.size();
+ }
+ }
+
+ private OnItemClickListener mAggregationSuggestionItemClickListener =
+ new OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ final AggregationSuggestionView suggestionView = (AggregationSuggestionView) view;
+ suggestionView.handleItemClickEvent();
+ mAggregationSuggestionPopup.dismiss();
+ mAggregationSuggestionPopup = null;
+ }
+ };
+
private boolean mAutoAddToDefaultGroup;
private boolean mEnabled = true;
@@ -1276,76 +1323,28 @@
return;
}
- RawContactEditorView rawContactView =
+ if (mAggregationSuggestionPopup != null && mAggregationSuggestionPopup.isShowing()) {
+ mAggregationSuggestionPopup.dismiss();
+ }
+
+ if (mAggregationSuggestionEngine.getSuggestedContactCount() == 0) {
+ return;
+ }
+
+ final RawContactEditorView rawContactView =
(RawContactEditorView)getRawContactEditorView(mAggregationSuggestionsRawContactId);
- if (rawContactView == null) {
- return;
- }
-
- ViewStub stub = (ViewStub)rawContactView.findViewById(R.id.aggregation_suggestion_stub);
- if (stub != null) {
- stub.inflate();
- }
-
- // Only request the view on screen when it is first displayed
- boolean requestOnScreen = mAggregationSuggestionView == null;
- mAggregationSuggestionView = rawContactView.findViewById(R.id.aggregation_suggestion);
-
- int count = mAggregationSuggestionEngine.getSuggestedContactCount();
- if (count == 0) {
- mAggregationSuggestionView.setVisibility(View.GONE);
- return;
- }
-
- List<Suggestion> suggestions = mAggregationSuggestionEngine.getSuggestions();
-
- LinearLayout itemList = (LinearLayout) mAggregationSuggestionView.findViewById(
- R.id.aggregation_suggestions);
- itemList.removeAllViews();
-
- LayoutInflater inflater = getActivity().getLayoutInflater();
-
- for (Suggestion suggestion : suggestions) {
- AggregationSuggestionView suggestionView =
- (AggregationSuggestionView) inflater.inflate(
- R.layout.aggregation_suggestions_item, null);
- suggestionView.setLayoutParams(
- new LinearLayout.LayoutParams(
- LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
- suggestionView.setNewContact(mState.size() == 1 && mState.get(0).isContactInsert());
- suggestionView.setListener(this);
- suggestionView.bindSuggestion(suggestion);
- itemList.addView(suggestionView);
- }
-
- adjustAggregationSuggestionViewLayout(rawContactView);
- setAggregationSuggestionViewEnabled(mEnabled);
- mAggregationSuggestionView.setVisibility(View.VISIBLE);
-
- if (requestOnScreen) {
- mContent.postDelayed(new Runnable() {
-
- @Override
- public void run() {
- requestAggregationSuggestionOnScreen(mAggregationSuggestionView);
- }
- }, AGGREGATION_SUGGESTION_SCROLL_DELAY);
- }
- }
-
- /**
- * Adjusts the layout of the aggregation suggestion view so that it is placed directly
- * underneath and have the same width as the last text editor of the contact name editor.
- */
- private void adjustAggregationSuggestionViewLayout(RawContactEditorView rawContactView) {
- TextFieldsEditorView nameEditor = rawContactView.getNameEditor();
- Rect rect = new Rect();
- nameEditor.acquireEditorBounds(rect);
- MarginLayoutParams layoutParams =
- (MarginLayoutParams) mAggregationSuggestionView.getLayoutParams();
- layoutParams.leftMargin = rect.left;
- layoutParams.width = rect.width();
- mAggregationSuggestionView.setLayoutParams(layoutParams);
+ final View anchorView = rawContactView.findViewById(R.id.anchor_view);
+ mAggregationSuggestionPopup = new ListPopupWindow(mContext, null);
+ mAggregationSuggestionPopup.setAnchorView(anchorView);
+ mAggregationSuggestionPopup.setWidth(anchorView.getWidth());
+ mAggregationSuggestionPopup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NOT_NEEDED);
+ mAggregationSuggestionPopup.setModal(true);
+ mAggregationSuggestionPopup.setAdapter(
+ new AggregationSuggestionAdapter(getActivity(),
+ mState.size() == 1 && mState.get(0).isContactInsert(),
+ this, mAggregationSuggestionEngine.getSuggestions()));
+ mAggregationSuggestionPopup.setOnItemClickListener(mAggregationSuggestionItemClickListener);
+ mAggregationSuggestionPopup.show();
}
@Override
@@ -1452,20 +1451,6 @@
}
}
- /**
- * Scrolls the editor if necessary to reveal the aggregation suggestion that is
- * shown below the name editor. Makes sure that the currently focused field
- * remains visible.
- */
- private void requestAggregationSuggestionOnScreen(final View view) {
- Rect rect = getRelativeBounds(mContent, view);
- View focused = mContent.findFocus();
- if (focused != null) {
- rect.union(getRelativeBounds(mContent, focused));
- }
- mContent.requestRectangleOnScreen(rect);
- }
-
public void setAggregationSuggestionViewEnabled(boolean enabled) {
if (mAggregationSuggestionView == null) {
return;
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index a27d3e0..1205c31 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -149,6 +149,7 @@
mGroupSourceViewContainer = (ViewGroup) mRootView.findViewById(
R.id.group_source_view_container);
mMemberListView = (ListView) mRootView.findViewById(android.R.id.list);
+ mMemberListView.setAdapter(mAdapter);
return mRootView;
}
@@ -162,11 +163,6 @@
mAdapter.enableQuickContact(enableQuickContact);
}
- private void configureAdapter(long groupId) {
- mGroupId = groupId;
- mMemberListView.setAdapter(mAdapter);
- }
-
private void configurePhotoLoader() {
if (mContext != null) {
if (mPhotoManager == null) {
@@ -234,7 +230,6 @@
bindGroupMetaData(data);
// Retrieve the list of members
- configureAdapter(mGroupId);
startGroupMembersLoader();
return;
}
diff --git a/src/com/android/contacts/list/ContactListItemView.java b/src/com/android/contacts/list/ContactListItemView.java
index 0fe8d0d..7ddece6 100644
--- a/src/com/android/contacts/list/ContactListItemView.java
+++ b/src/com/android/contacts/list/ContactListItemView.java
@@ -36,6 +36,7 @@
import android.text.TextUtils;
import android.text.TextUtils.TruncateAt;
import android.util.AttributeSet;
+import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
@@ -85,6 +86,9 @@
private final int mHeaderTextSize;
private final int mHeaderUnderlineHeight;
private final int mHeaderUnderlineColor;
+ private final int mCountViewTextSize;
+ private final int mContactsCountTextColor;
+ private final int mTextIndent;
private Drawable mActivatedBackgroundDrawable;
@@ -226,7 +230,7 @@
R.styleable.ContactListItemView_list_item_header_text_indent, 0);
mHeaderTextColor = a.getColor(
R.styleable.ContactListItemView_list_item_header_text_color, Color.BLACK);
- mHeaderTextSize = a.getDimensionPixelSize(
+ mHeaderTextSize = (int)a.getDimensionPixelSize(
R.styleable.ContactListItemView_list_item_header_text_size, 12);
mHeaderBackgroundHeight = a.getDimensionPixelSize(
R.styleable.ContactListItemView_list_item_header_height, 30);
@@ -234,6 +238,12 @@
R.styleable.ContactListItemView_list_item_header_underline_height, 1);
mHeaderUnderlineColor = a.getColor(
R.styleable.ContactListItemView_list_item_header_underline_color, 0);
+ mTextIndent = a.getDimensionPixelOffset(
+ R.styleable.ContactListItemView_list_item_text_indent, 0);
+ mCountViewTextSize = (int)a.getDimensionPixelSize(
+ R.styleable.ContactListItemView_list_item_contacts_count_text_size, 12);
+ mContactsCountTextColor = a.getColor(
+ R.styleable.ContactListItemView_list_item_contacts_count_text_color, Color.BLACK);
mPrefixHighligher = new PrefixHighlighter(
a.getColor(R.styleable.ContactListItemView_list_item_prefix_highlight_color,
@@ -424,7 +434,7 @@
// Layout all text view and presence icon
// Put name TextView first
if (isVisible(mNameTextView)) {
- mNameTextView.layout(leftBound,
+ mNameTextView.layout(leftBound + mTextIndent,
textTopBound,
rightBound,
textTopBound + mNameTextViewHeight);
@@ -432,13 +442,13 @@
}
// Presence and status
- int statusLeftBound = leftBound;
+ int statusLeftBound = leftBound + mTextIndent;
if (isVisible(mPresenceIcon)) {
int iconWidth = mPresenceIcon.getMeasuredWidth();
mPresenceIcon.layout(
- leftBound,
+ leftBound + mTextIndent,
textTopBound,
- leftBound + iconWidth,
+ leftBound + iconWidth + mTextIndent,
textTopBound + mStatusTextViewHeight);
statusLeftBound += (iconWidth + mPresenceIconMargin);
}
@@ -457,7 +467,7 @@
// Rest of text views
int dataLeftBound = leftBound;
if (isVisible(mPhoneticNameTextView)) {
- mPhoneticNameTextView.layout(leftBound,
+ mPhoneticNameTextView.layout(leftBound + mTextIndent,
textTopBound,
rightBound,
textTopBound + mPhoneticNameTextViewHeight);
@@ -465,8 +475,8 @@
}
if (isVisible(mLabelView)) {
- dataLeftBound = leftBound + mLabelView.getMeasuredWidth();
- mLabelView.layout(leftBound,
+ dataLeftBound = leftBound + mLabelView.getMeasuredWidth() + mTextIndent;
+ mLabelView.layout(leftBound + mTextIndent,
textTopBound,
dataLeftBound,
textTopBound + mLabelTextViewHeight);
@@ -484,7 +494,7 @@
}
if (isVisible(mSnippetView)) {
- mSnippetView.layout(leftBound,
+ mSnippetView.layout(leftBound + mTextIndent,
textTopBound,
rightBound,
textTopBound + mSnippetTextViewHeight);
@@ -645,7 +655,7 @@
if (mHeaderTextView == null) {
mHeaderTextView = new TextView(mContext);
mHeaderTextView.setTextColor(mHeaderTextColor);
- mHeaderTextView.setTextSize(mHeaderTextSize);
+ mHeaderTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mHeaderTextSize);
mHeaderTextView.setTypeface(mHeaderTextView.getTypeface(), Typeface.BOLD);
mHeaderTextView.setGravity(Gravity.CENTER_VERTICAL);
addView(mHeaderTextView);
@@ -958,6 +968,9 @@
} else {
getCountView();
mCountView.setText(text);
+ mCountView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCountViewTextSize);
+ mCountView.setGravity(Gravity.CENTER_VERTICAL);
+ mCountView.setTextColor(mContactsCountTextColor);
mCountView.setVisibility(VISIBLE);
}
}
diff --git a/src/com/android/contacts/list/ContactListPinnedHeaderView.java b/src/com/android/contacts/list/ContactListPinnedHeaderView.java
index a689045..5983007 100644
--- a/src/com/android/contacts/list/ContactListPinnedHeaderView.java
+++ b/src/com/android/contacts/list/ContactListPinnedHeaderView.java
@@ -26,6 +26,7 @@
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.AttributeSet;
+import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
@@ -46,6 +47,7 @@
private final int mPaddingRight;
private final int mPaddingLeft;
private final int mContactsCountTextColor;
+ private final int mCountViewTextSize;
private int mHeaderBackgroundHeight;
private TextView mHeaderTextView;
@@ -76,12 +78,14 @@
R.styleable.ContactListItemView_list_item_padding_right, 0);
mContactsCountTextColor = a.getColor(
R.styleable.ContactListItemView_list_item_contacts_count_text_color, Color.BLACK);
+ mCountViewTextSize = (int)a.getDimensionPixelSize(
+ R.styleable.ContactListItemView_list_item_contacts_count_text_size, 12);
a.recycle();
mHeaderTextView = new TextView(mContext);
mHeaderTextView.setTextColor(mHeaderTextColor);
- mHeaderTextView.setTextSize(mHeaderTextSize);
+ mHeaderTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mHeaderTextSize);
mHeaderTextView.setTypeface(mHeaderTextView.getTypeface(), Typeface.BOLD);
mHeaderTextView.setGravity(Gravity.CENTER_VERTICAL);
addView(mHeaderTextView);
@@ -156,7 +160,8 @@
if (mCountTextView == null) {
mCountTextView = new TextView(mContext);
mCountTextView.setTextColor(mContactsCountTextColor);
- mCountTextView.setTextSize(mHeaderTextSize);
+ mCountTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCountViewTextSize);
+ mCountTextView.setGravity(Gravity.CENTER_VERTICAL);
addView(mCountTextView);
}
mCountTextView.setText(count);
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 8590c29..4db2270 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -139,8 +139,9 @@
if (count != 0) {
String format = getResources().getQuantityText(
R.plurals.listTotalAllContacts, count).toString();
+ // Do not count the user profile in the contacts count
if (mUserProfileExists) {
- getAdapter().setContactsCount(String.format(format, count));
+ getAdapter().setContactsCount(String.format(format, count - 1));
} else {
mCounterHeaderView.setText(String.format(format, count));
}
diff --git a/tests/src/com/android/contacts/ContactLoaderTest.java b/tests/src/com/android/contacts/ContactLoaderTest.java
index ac691bc..a731f24 100644
--- a/tests/src/com/android/contacts/ContactLoaderTest.java
+++ b/tests/src/com/android/contacts/ContactLoaderTest.java
@@ -301,6 +301,7 @@
Contacts.SEND_TO_VOICEMAIL,
Contacts.CUSTOM_RINGTONE,
+ Contacts.IS_USER_PROFILE,
})
.withSortOrder(Contacts.Entity.RAW_CONTACT_ID)
.returnRow(
@@ -337,7 +338,8 @@
"content:some.photo.uri",
0,
- null
+ null,
+ 0
);
}
diff --git a/tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java b/tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java
index 40a33b6..bb93b98 100644
--- a/tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java
+++ b/tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java
@@ -175,34 +175,25 @@
}
public void testSetPhoneCallDetails_Geocode() {
- setPhoneCallDetailsWithNumber("+14125555555", "1-412-555-5555");
+ setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", "Pennsylvania");
assertNameEquals("1-412-555-5555"); // The phone number is shown as the name.
assertNumberEquals("Pennsylvania"); // The geocode is shown as the number.
}
public void testSetPhoneCallDetails_NoGeocode() {
- setPhoneCallDetailsWithNumber("+0", "+0");
- assertNameEquals("+0"); // The phone number is shown as the name.
+ setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", null);
+ assertNameEquals("1-412-555-5555"); // The phone number is shown as the name.
assertNumberEquals("-"); // The empty geocode is shown as the number.
}
- public void testSetPhoneCallDetails_NoGeocodeForUnknown() {
- setPhoneCallDetailsWithNumber(CallerInfo.UNKNOWN_NUMBER, "");
- assertNumberEquals("-"); // The empty geocode is shown as the number.
- }
-
- public void testSetPhoneCallDetails_NoGeocodeForPrivate() {
- setPhoneCallDetailsWithNumber(CallerInfo.PRIVATE_NUMBER, "");
- assertNumberEquals("-"); // The empty geocode is shown as the number.
- }
-
- public void testSetPhoneCallDetails_NoGeocodeForPayphone() {
- setPhoneCallDetailsWithNumber(CallerInfo.PAYPHONE_NUMBER, "");
+ public void testSetPhoneCallDetails_EmptyGeocode() {
+ setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", "");
+ assertNameEquals("1-412-555-5555"); // The phone number is shown as the name.
assertNumberEquals("-"); // The empty geocode is shown as the number.
}
public void testSetPhoneCallDetails_NoGeocodeForVoicemail() {
- setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER, "");
+ setPhoneCallDetailsWithNumberAndGeocode(TEST_VOICEMAIL_NUMBER, "", "United States");
assertNumberEquals("-"); // The empty geocode is shown as the number.
}
@@ -269,8 +260,14 @@
/** Sets the phone call details with default values and the given number. */
private void setPhoneCallDetailsWithNumber(String number, String formattedNumber) {
+ setPhoneCallDetailsWithNumberAndGeocode(number, formattedNumber, TEST_GEOCODE);
+ }
+
+ /** Sets the phone call details with default values and the given number. */
+ private void setPhoneCallDetailsWithNumberAndGeocode(String number, String formattedNumber,
+ String geocodedLocation) {
mHelper.setPhoneCallDetails(mViews,
- new PhoneCallDetails(number, formattedNumber, TEST_COUNTRY_ISO, TEST_GEOCODE,
+ new PhoneCallDetails(number, formattedNumber, TEST_COUNTRY_ISO, geocodedLocation,
new int[]{ Calls.VOICEMAIL_TYPE }, TEST_DATE, TEST_DURATION),
true);
}
diff --git a/tests/src/com/android/contacts/activities/CallLogActivityTests.java b/tests/src/com/android/contacts/activities/CallLogActivityTests.java
index ce2418f..070941c 100644
--- a/tests/src/com/android/contacts/activities/CallLogActivityTests.java
+++ b/tests/src/com/android/contacts/activities/CallLogActivityTests.java
@@ -69,6 +69,7 @@
Calls.TYPE,
Calls.COUNTRY_ISO,
Calls.VOICEMAIL_URI,
+ Calls.GEOCODED_LOCATION,
CallLogFragment.CallLogQuery.SECTION_NAME,
};
private static final int RAND_DURATION = -1;
@@ -505,6 +506,7 @@
row.add(type); // type
row.add(TEST_COUNTRY_ISO); // country ISO
row.add(null); // voicemail_uri
+ row.add(null); // geocoded_location
row.add(CallLogFragment.CallLogQuery.SECTION_OLD_ITEM); // section
}
@@ -535,6 +537,7 @@
row.add(Calls.VOICEMAIL_TYPE); // type
row.add(TEST_COUNTRY_ISO); // country ISO
row.add(voicemailUri); // voicemail_uri
+ row.add(null); // geocoded_location
row.add(CallLogFragment.CallLogQuery.SECTION_OLD_ITEM); // section
}
diff --git a/tests/src/com/android/contacts/calllog/CallLogGroupBuilderTest.java b/tests/src/com/android/contacts/calllog/CallLogGroupBuilderTest.java
index 9aa5d7b..8a7e946 100644
--- a/tests/src/com/android/contacts/calllog/CallLogGroupBuilderTest.java
+++ b/tests/src/com/android/contacts/calllog/CallLogGroupBuilderTest.java
@@ -224,7 +224,7 @@
}
mCursor.moveToNext();
mCursor.addRow(new Object[]{
- mCursor.getPosition(), number, 0L, 0L, type, "", "", section
+ mCursor.getPosition(), number, 0L, 0L, type, "", "", "", section
});
}
@@ -245,7 +245,7 @@
throw new IllegalArgumentException("not a header section: " + section);
}
mCursor.moveToNext();
- mCursor.addRow(new Object[]{ mCursor.getPosition(), "", 0L, 0L, 0, "", "", section });
+ mCursor.addRow(new Object[]{ mCursor.getPosition(), "", 0L, 0L, 0, "", "", "", section });
}
/** Asserts that the group matches the given values. */
diff --git a/tests/src/com/android/contacts/format/DisplayNameFormatterTest.java b/tests/src/com/android/contacts/format/DisplayNameFormatterTest.java
index fb834c0..24714cd 100644
--- a/tests/src/com/android/contacts/format/DisplayNameFormatterTest.java
+++ b/tests/src/com/android/contacts/format/DisplayNameFormatterTest.java
@@ -53,32 +53,32 @@
public void testSetDisplayName_Simple() {
setNames("John Doe", "Doe John");
setDisplayName();
- SpannedTestUtils.checkHtmlText("<b>John </b>Doe", mView);
+ SpannedTestUtils.checkHtmlText("John Doe", mView);
setNames("Jean Pierre Doe", "Doe Jean Pierre");
setDisplayName();
- SpannedTestUtils.checkHtmlText("<b>Jean Pierre </b>Doe", mView);
+ SpannedTestUtils.checkHtmlText("Jean Pierre Doe", mView);
setNames("John Doe Smith", "Doe Smith John");
setDisplayName();
- SpannedTestUtils.checkHtmlText("<b>John </b>Doe Smith", mView);
+ SpannedTestUtils.checkHtmlText("John Doe Smith", mView);
}
public void testSetDisplayName_AccidentalOverlap() {
// This is probably not what we want, but we assume that the two names differ only in the
// order in which the two components are listed.
setNames("Johnson John", "Johnson Smith");
setDisplayName();
- SpannedTestUtils.checkHtmlText("<b>Johnson </b>John", mView);
+ SpannedTestUtils.checkHtmlText("Johnson John", mView);
}
public void testSetDisplayName_Reversed() {
setNames("John Doe", "Doe John");
setDisplayNameReversed();
- SpannedTestUtils.checkHtmlText("John <b>Doe</b>", mView);
+ SpannedTestUtils.checkHtmlText("John Doe", mView);
setNames("Jean Pierre Doe", "Doe Jean Pierre");
setDisplayNameReversed();
- SpannedTestUtils.checkHtmlText("Jean Pierre <b>Doe</b>", mView);
+ SpannedTestUtils.checkHtmlText("Jean Pierre Doe", mView);
setNames("John Doe Smith", "Doe Smith John");
setDisplayNameReversed();
- SpannedTestUtils.checkHtmlText("John <b>Doe Smith</b>", mView);
+ SpannedTestUtils.checkHtmlText("John Doe Smith", mView);
}
public void testSetDisplayName_NoOverlap() {
@@ -90,26 +90,26 @@
public void testSetDisplayName_Prefix() {
setNames("John Doe", "Doe John");
setDisplayNameWithPrefix("DO");
- SpannedTestUtils.checkHtmlText("<b>John </b>" + START + "Do" + END + "e", mView);
+ SpannedTestUtils.checkHtmlText("John " + START + "Do" + END + "e", mView);
}
public void testSetDisplayName_PrefixFirstName() {
setNames("John Doe", "Doe John");
setDisplayNameWithPrefix("JO");
- SpannedTestUtils.checkHtmlText(START + "<b>Jo</b>" + END + "<b>hn </b>Doe", mView);
+ SpannedTestUtils.checkHtmlText(START + "Jo" + END + "hn Doe", mView);
}
public void testSetDisplayName_PrefixMiddleName() {
setNames("John Paul Doe", "Doe John Paul");
setDisplayNameWithPrefix("PAU");
- SpannedTestUtils.checkHtmlText("<b>John </b>" + START + "<b>Pau</b>" + END + "<b>l </b>Doe",
+ SpannedTestUtils.checkHtmlText("John " + START + "Pau" + END + "l Doe",
mView);
}
public void testSetDisplayName_ReversedPrefix() {
setNames("John Doe", "Doe John");
setDisplayNameReversedWithPrefix("DO");
- SpannedTestUtils.checkHtmlText("John " + START + "<b>Do</b>" + END + "<b>e</b>", mView);
+ SpannedTestUtils.checkHtmlText("John " + START + "Do" + END + "e", mView);
}
public void testSetDisplayName_Empty() {
@@ -136,7 +136,7 @@
mDisplayNameFormatter.setTextWithHighlightingFactory(new TestTextWithHighlightingFactory());
setNames("John Doe", "Doe John");
setDisplayNameWithHighlighting();
- SpannedTestUtils.checkHtmlText("<i><b>John </b></i><i>Doe</i> <i>Doe John</i>", mView);
+ SpannedTestUtils.checkHtmlText("<i>John Doe</i> <i>Doe John</i>", mView);
}
/**
diff --git a/tests/src/com/android/contacts/list/ContactListItemViewTest.java b/tests/src/com/android/contacts/list/ContactListItemViewTest.java
index 7764eb3..ccd2fb5 100644
--- a/tests/src/com/android/contacts/list/ContactListItemViewTest.java
+++ b/tests/src/com/android/contacts/list/ContactListItemViewTest.java
@@ -51,7 +51,7 @@
view.showDisplayName(cursor, 0, 1, false,
ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY);
- SpannedTestUtils.checkHtmlText("<b>John </b>Doe", view.getNameTextView());
+ SpannedTestUtils.checkHtmlText("John Doe", view.getNameTextView());
}
public void testShowDisplayName_Unknown() {
@@ -73,7 +73,7 @@
view.showDisplayName(cursor, 0, 1, false,
ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY);
- SpannedTestUtils.checkHtmlText("<b>John </b>" + START + "Doe" + END,
+ SpannedTestUtils.checkHtmlText("John " + START + "Doe" + END,
view.getNameTextView());
}
@@ -85,7 +85,7 @@
view.showDisplayName(cursor, 0, 1, false,
ContactsContract.Preferences.DISPLAY_ORDER_ALTERNATIVE);
- SpannedTestUtils.checkHtmlText("John " + START + "<b>Doe</b>" + END,
+ SpannedTestUtils.checkHtmlText("John " + START + "Doe" + END,
view.getNameTextView());
}
@@ -97,7 +97,7 @@
view.showDisplayName(cursor, 0, 1, true,
ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY);
- SpannedTestUtils.checkHtmlText("<i><b>John </b></i><i>Doe</i> <i>Doe John</i>",
+ SpannedTestUtils.checkHtmlText("<i>John Doe</i> <i>Doe John</i>",
view.getNameTextView());
}