am febc9b5e: Merge "Ripple tint is now color" into lmp-preview-dev
* commit 'febc9b5e5e29d3b08f13f72f05bc950e207ebb63':
Ripple tint is now color
diff --git a/res/anim/slide_out.xml b/res/anim/slide_out.xml
deleted file mode 100644
index 88687f4..0000000
--- a/res/anim/slide_out.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
--->
-<translate xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@interpolator/ease_out_interpolator"
- android:duration="@integer/dialpad_slide_out_duration"
- android:fromYDelta="0"
- android:toYDelta="80%p" />
\ No newline at end of file
diff --git a/res/drawable-hdpi/ic_arrow_back_24dp.png b/res/drawable-hdpi/ic_arrow_back_24dp.png
deleted file mode 100644
index 86cb894..0000000
--- a/res/drawable-hdpi/ic_arrow_back_24dp.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_close_dk.png b/res/drawable-hdpi/ic_close_dk.png
deleted file mode 100644
index f5e378f..0000000
--- a/res/drawable-hdpi/ic_close_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_arrow_back_24dp.png b/res/drawable-mdpi/ic_arrow_back_24dp.png
deleted file mode 100644
index dc81cd1..0000000
--- a/res/drawable-mdpi/ic_arrow_back_24dp.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_close_dk.png b/res/drawable-mdpi/ic_close_dk.png
deleted file mode 100644
index 13f68ee..0000000
--- a/res/drawable-mdpi/ic_close_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_arrow_back_24dp.png b/res/drawable-xhdpi/ic_arrow_back_24dp.png
deleted file mode 100644
index 4f4fbaa..0000000
--- a/res/drawable-xhdpi/ic_arrow_back_24dp.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_close_dk.png b/res/drawable-xhdpi/ic_close_dk.png
deleted file mode 100644
index 4f965fe..0000000
--- a/res/drawable-xhdpi/ic_close_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_arrow_back_24dp.png b/res/drawable-xxhdpi/ic_arrow_back_24dp.png
deleted file mode 100644
index 46e90f7..0000000
--- a/res/drawable-xxhdpi/ic_arrow_back_24dp.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_close_dk.png b/res/drawable-xxhdpi/ic_close_dk.png
deleted file mode 100644
index 2472da8..0000000
--- a/res/drawable-xxhdpi/ic_close_dk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_back_arrow.xml b/res/drawable/ic_back_arrow.xml
deleted file mode 100644
index 68a875d..0000000
--- a/res/drawable/ic_back_arrow.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2014 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
- -->
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/ic_arrow_back_24dp"
- android:autoMirrored="true"
- android:tint="@color/actionbar_icon_color" />
\ No newline at end of file
diff --git a/res/anim/slide_in.xml b/res/drawable/shadow_fade_left.xml
similarity index 66%
rename from res/anim/slide_in.xml
rename to res/drawable/shadow_fade_left.xml
index 4463f2f..cb87cf5 100644
--- a/res/anim/slide_in.xml
+++ b/res/drawable/shadow_fade_left.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2014 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.
@@ -13,8 +13,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<translate xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@interpolator/ease_in_interpolator"
- android:duration="@integer/dialpad_slide_in_duration"
- android:fromYDelta="67%p"
- android:toYDelta="0" />
\ No newline at end of file
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle" >
+ <gradient
+ android:type="linear"
+ android:startColor="@null"
+ android:endColor="#1a000000"
+ android:angle="0"/>
+</shape>
diff --git a/res/layout-land/dialpad_fragment.xml b/res/layout-land/dialpad_fragment.xml
new file mode 100644
index 0000000..aac0daf
--- /dev/null
+++ b/res/layout-land/dialpad_fragment.xml
@@ -0,0 +1,47 @@
+<?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.
+-->
+<view class="com.android.dialer.dialpad.DialpadFragment$DialpadSlidingLinearLayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ >
+ <!-- spacer view -->
+ <View
+ android:id="@+id/spacer"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:background="#00000000" />
+ <!-- Dialpad shadow -->
+ <View
+ android:layout_width="@dimen/shadow_length"
+ android:layout_height="match_parent"
+ android:background="@drawable/shadow_fade_left" />
+ <include layout="@layout/dialpad_view"
+ android:layout_height="match_parent"
+ android:layout_width="0dp"
+ android:layout_weight="1" />
+ <!-- "Dialpad chooser" UI, shown only when the user brings up the
+ Dialer while a call is already in progress.
+ When this UI is visible, the other Dialer elements
+ (the textfield/button and the dialpad) are hidden. -->
+ <ListView android:id="@+id/dialpadChooser"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@color/background_dialer_light"
+ android:visibility="gone" />
+</view>
diff --git a/res/layout/call_detail.xml b/res/layout/call_detail.xml
index 53f6b8d..9ca30a8 100644
--- a/res/layout/call_detail.xml
+++ b/res/layout/call_detail.xml
@@ -13,35 +13,68 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- android:id="@+id/call_detail"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:visibility="gone"
->
- <!--
- The list view is under everything.
- It contains a first header element which is hidden under the controls UI.
- When scrolling, the controls move up until the name bar hits the top.
- -->
- <ListView
- android:id="@+id/history"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentStart="true"
- android:layout_alignParentTop="true"
- />
+ android:layout_height="match_parent">
- <!-- All the controls which are part of the pinned header are in this layout. -->
- <RelativeLayout
- android:id="@+id/controls"
+ <LinearLayout
+ android:id="@+id/call_detail"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:background="@color/background_dialer_list_items"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
>
+ <!-- Caller information "card" -->
+ <LinearLayout
+ android:id="@+id/caller_information"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="@dimen/call_detail_horizontal_margin"
+ android:paddingTop="@dimen/call_detail_top_margin"
+ android:paddingBottom="@dimen/call_detail_bottom_margin"
+ android:baselineAligned="false"
+ android:orientation="horizontal"
+ android:gravity="center_vertical"
+ android:translationZ="@dimen/call_detail_translation_z"
+ android:focusable="true"
+ android:background="@color/background_dialer_white">
+
+ <QuickContactBadge
+ android:id="@+id/quick_contact_photo"
+ android:layout_width="@dimen/contact_photo_size"
+ android:layout_height="@dimen/contact_photo_size"
+ android:layout_alignParentStart="true"
+ android:focusable="true"
+ />
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:gravity="center_vertical"
+ android:layout_marginStart="@dimen/call_detail_horizontal_margin"
+ >
+ <TextView
+ android:id="@+id/caller_name"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textColor="?attr/call_log_primary_text_color"
+ android:textSize="@dimen/call_log_primary_text_size"
+ android:singleLine="true"
+ />
+ <TextView
+ android:id="@+id/caller_number"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textColor="?attr/call_log_secondary_text_color"
+ android:textSize="@dimen/call_log_secondary_text_size"
+ android:singleLine="true"
+ />
+ </LinearLayout>
+ </LinearLayout>
+
<FrameLayout
android:id="@+id/voicemail_status"
android:layout_width="match_parent"
@@ -49,157 +82,33 @@
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:visibility="gone"
- >
+ >
<include layout="@layout/call_log_voicemail_status"/>
</FrameLayout>
-
- <view
- class="com.android.contacts.common.widget.ProportionalLayout"
- android:id="@+id/contact_background_sizer"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentStart="true"
- android:layout_below="@id/voicemail_status"
- ex:ratio="0.5"
- ex:direction="widthToHeight"
- >
- <ImageView
- android:id="@+id/contact_background"
- android:layout_width="match_parent"
- android:layout_height="0dip"
- android:adjustViewBounds="true"
- android:scaleType="centerCrop"
- />
- </view>
-
- <LinearLayout
- android:id="@+id/separator"
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:background="@color/background_dialer_light"
- android:layout_below="@+id/contact_background_sizer"
- />
- <View
- android:id="@+id/photo_text_bar"
- android:layout_width="match_parent"
- android:layout_height="42dip"
- android:background="#7F000000"
- android:layout_alignParentStart="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_alignEnd="@id/photo_text_bar"
- android:layout_alignBottom="@id/photo_text_bar"
- android:layout_alignTop="@id/photo_text_bar"
- android:layout_marginEnd="@dimen/call_log_outer_margin"
- />
- <TextView
- android:id="@+id/header_text"
- android:layout_width="wrap_content"
- android:layout_height="0dip"
- android:layout_alignStart="@id/photo_text_bar"
- android:layout_toLeftOf="@id/main_action"
- android:layout_alignTop="@id/photo_text_bar"
- android:layout_alignBottom="@id/photo_text_bar"
- android:layout_marginEnd="@dimen/call_log_inner_margin"
- android:layout_marginStart="@dimen/call_detail_contact_name_margin"
- android:gravity="center_vertical"
- android:textColor="?attr/call_log_header_color"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:singleLine="true"
- />
- <ImageButton
- android:id="@+id/main_action_push_layer"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignStart="@id/contact_background_sizer"
- android:layout_alignTop="@id/contact_background_sizer"
- android:layout_alignEnd="@id/contact_background_sizer"
- android:layout_alignBottom="@id/contact_background_sizer"
- android:background="?android:attr/selectableItemBackground"
- />
<LinearLayout
android:id="@+id/voicemail_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_below="@id/separator"
- android:paddingBottom="@dimen/call_detail_button_spacing">
+ android:orientation="horizontal"
+ android:paddingBottom="@dimen/call_detail_button_spacing"
+ android:visibility="gone"
+ >
<!-- The voicemail fragment will be put here. -->
</LinearLayout>
- <FrameLayout
- android:id="@+id/call_and_sms"
+
+ <!--
+ The list view is under everything.
+ It contains a first header element which is hidden under the controls UI.
+ When scrolling, the controls move up until the name bar hits the top.
+ -->
+ <ListView
+ android:id="@+id/history"
android:layout_width="match_parent"
- android:layout_height="@dimen/call_log_list_item_height"
- android:layout_marginBottom="@dimen/call_detail_button_spacing"
- android:layout_below="@id/voicemail_container"
- android:gravity="center_vertical"
- android:background="@color/background_dialer_list_items"
- >
+ android:layout_height="fill_parent"
+ />
- <LinearLayout
- android:id="@+id/call_and_sms_main_action"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal"
- android:focusable="true"
- android:background="?android:attr/selectableItemBackground"
- >
- <LinearLayout
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:paddingStart="@dimen/call_log_indent_margin"
- android:orientation="vertical"
- android:gravity="center_vertical"
- >
-
- <TextView android:id="@+id/call_and_sms_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingEnd="@dimen/call_log_icon_margin"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="?attr/call_log_primary_text_color"
- android:singleLine="true"
- android:ellipsize="end"
- />
-
- <TextView android:id="@+id/call_and_sms_label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingEnd="@dimen/call_log_icon_margin"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?attr/call_log_primary_text_color"
- android:textAllCaps="true"
- android:singleLine="true"
- android:ellipsize="end"
- />
- </LinearLayout>
-
- <View android:id="@+id/call_and_sms_divider"
- android:layout_width="1px"
- android:layout_height="32dip"
- android:background="@color/background_dialer_light"
- 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:paddingStart="@dimen/call_log_inner_margin"
- android:paddingEnd="@dimen/call_log_outer_margin"
- android:gravity="center"
- android:scaleType="centerInside"
- android:focusable="true"
- android:background="?android:attr/selectableItemBackground"
- />
- </LinearLayout>
- </FrameLayout>
- </RelativeLayout>
+ </LinearLayout>
<!--
Used to hide the UI when playing a voicemail and the proximity sensor
is detecting something near the screen.
@@ -208,10 +117,10 @@
android:id="@+id/blank"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_alignParentStart="true"
- android:layout_alignParentTop="true"
android:background="@android:color/black"
android:visibility="gone"
android:clickable="true"
- />
+ android:layout_alignParentStart="true"
+ android:layout_alignParentTop="true"
+ />
</RelativeLayout>
diff --git a/res/layout/call_detail_history_header.xml b/res/layout/call_detail_history_header.xml
index 40f943b..b4b63fb 100644
--- a/res/layout/call_detail_history_header.xml
+++ b/res/layout/call_detail_history_header.xml
@@ -14,48 +14,16 @@
limitations under the License.
-->
-<!-- This layout is supposed to match the content of the controls in call_detail.xml -->
-<LinearLayout
+<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ex="http://schemas.android.com/apk/res-auto"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
-
- <!-- Contact photo. -->
- <view
- class="com.android.contacts.common.widget.ProportionalLayout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentStart="true"
- android:layout_below="@id/voicemail_status"
- ex:ratio="0.5"
- ex:direction="widthToHeight"
- >
- <!-- Proportional layout requires a view in it. -->
- <View
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- />
- </view>
- <!-- Separator line -->
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingTop="@dimen/call_detail_header_top_margin"
+ android:paddingStart="@dimen/call_detail_horizontal_margin"
+ android:textColor="?attr/call_log_secondary_text_color"
+ android:textSize="@dimen/call_log_secondary_text_size"
+ android:fontFamily="sans-serif-medium"
+ android:singleLine="true"
+ android:text="@string/call_detail_list_header"
/>
- <!-- Voicemail controls -->
- <!-- TODO: Make the height be based on a constant. -->
- <View
- android:id="@+id/header_voicemail_container"
- android:layout_width="match_parent"
- android:layout_height="140dip"
- android:layout_marginBottom="@dimen/call_detail_button_spacing"
- />
- <!-- Call and SMS -->
- <View
- android:id="@+id/header_call_and_sms_container"
- android:layout_width="match_parent"
- android:layout_height="@dimen/call_log_list_item_height"
- />
-
-</LinearLayout>
diff --git a/res/layout/call_detail_history_item.xml b/res/layout/call_detail_history_item.xml
index 5b3fff7..cc06d21 100644
--- a/res/layout/call_detail_history_item.xml
+++ b/res/layout/call_detail_history_item.xml
@@ -18,10 +18,9 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:minHeight="@dimen/call_log_list_item_height"
android:paddingTop="@dimen/call_log_inner_margin"
android:paddingBottom="@dimen/call_log_inner_margin"
- android:paddingStart="@dimen/call_log_indent_margin"
+ android:paddingStart="@dimen/call_detail_horizontal_margin"
android:paddingEnd="@dimen/call_log_outer_margin"
android:orientation="vertical"
android:background="@color/background_dialer_list_items"
@@ -43,22 +42,22 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/call_log_icon_margin"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?attr/call_log_secondary_text_color"
+ android:textColor="?attr/call_log_primary_text_color"
+ android:textSize="@dimen/call_log_primary_text_size"
/>
</LinearLayout>
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?attr/call_log_secondary_text_color"
+ android:textSize="@dimen/call_log_secondary_text_size"
/>
<TextView
android:id="@+id/duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?attr/call_log_secondary_text_color"
+ android:textSize="@dimen/call_log_secondary_text_size"
/>
</LinearLayout>
diff --git a/res/layout/call_log_list_item.xml b/res/layout/call_log_list_item.xml
index 411af70..3748967 100644
--- a/res/layout/call_log_list_item.xml
+++ b/res/layout/call_log_list_item.xml
@@ -64,8 +64,8 @@
android:nextFocusLeft="@+id/quick_contact_photo" >
<QuickContactBadge
android:id="@+id/quick_contact_photo"
- android:layout_width="@dimen/call_log_list_contact_photo_size"
- android:layout_height="@dimen/call_log_list_contact_photo_size"
+ android:layout_width="@dimen/contact_photo_size"
+ android:layout_height="@dimen/contact_photo_size"
android:nextFocusRight="@id/primary_action_view"
android:layout_alignParentStart="true"
android:focusable="true"
diff --git a/res/layout/dialpad_fragment.xml b/res/layout/dialpad_fragment.xml
index b2312ad..01bbecc 100644
--- a/res/layout/dialpad_fragment.xml
+++ b/res/layout/dialpad_fragment.xml
@@ -28,7 +28,7 @@
<!-- Dialpad shadow -->
<View
android:layout_width="match_parent"
- android:layout_height="10dp"
+ android:layout_height="@dimen/shadow_length"
android:background="@drawable/shadow_fade_up" />
<include layout="@layout/dialpad_view" />
<!-- "Dialpad chooser" UI, shown only when the user brings up the
diff --git a/res/layout/playback_layout.xml b/res/layout/playback_layout.xml
index 01ed2e9..aa3ab47 100644
--- a/res/layout/playback_layout.xml
+++ b/res/layout/playback_layout.xml
@@ -18,7 +18,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/background_dialer_light"
+ android:background="@color/background_dialer_list_items"
>
<!-- Mute, playback, trash buttons. -->
<LinearLayout
@@ -33,7 +33,6 @@
android:layout_height="58dip"
android:layout_marginEnd="@dimen/call_detail_button_spacing"
android:layout_weight="1"
- android:background="@color/background_dialer_list_items"
>
<ImageButton
android:id="@+id/playback_start_stop"
@@ -41,6 +40,7 @@
android:layout_height="match_parent"
android:background="?android:attr/selectableItemBackground"
android:src="@drawable/ic_hold_pause"
+ android:contentDescription="@string/voicemail_play_start_pause"
/>
</LinearLayout>
<LinearLayout
@@ -64,7 +64,6 @@
android:layout_height="80dip"
android:layout_below="@id/buttons_linear_layout"
android:layout_marginTop="@dimen/call_detail_button_spacing"
- android:background="@color/background_dialer_list_items"
>
<!-- SeekBar left-right margin decreased from redlines 72dip by 8dip to account for
half thumb width (thumb is 16dip).
@@ -117,6 +116,7 @@
android:paddingTop="29dip"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
+ android:contentDescription="@string/voicemail_play_slower"
/>
<ImageButton
android:id="@+id/rate_increase_button"
@@ -128,11 +128,11 @@
android:paddingTop="29dip"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
+ android:contentDescription="@string/voicemail_play_faster"
/>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
- android:background="@color/background_dialer_light"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
</RelativeLayout>
diff --git a/res/layout/search_edittext.xml b/res/layout/search_edittext.xml
index a07bfb8..0308d51 100644
--- a/res/layout/search_edittext.xml
+++ b/res/layout/search_edittext.xml
@@ -45,7 +45,6 @@
android:layout_marginLeft="@dimen/search_box_collapsed_text_margin_left"
android:textSize="@dimen/search_collapsed_text_size"
android:fontFamily="@string/search_font_family"
- android:textColor="@color/searchbox_text_color"
android:textColorHint="@color/searchbox_hint_text_color"
android:gravity="center_vertical"
android:hint="@string/dialer_hint_find_contact" />
@@ -76,46 +75,6 @@
</LinearLayout>
- <LinearLayout
- android:id="@+id/search_box_expanded"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal"
- android:gravity="center_vertical"
- android:visibility="gone" >
+ <include layout="@layout/search_bar_expanded" />
- <ImageButton
- android:id="@+id/search_back_button"
- android:layout_width="@dimen/search_box_icon_size"
- android:layout_height="@dimen/search_box_icon_size"
- android:layout_marginLeft="8dp"
- android:src="@drawable/ic_back_arrow"
- android:background="?android:attr/selectableItemBackground"
- android:contentDescription="@string/action_menu_overflow_description"
- android:tint="@color/actionbar_background_color" />
-
- <EditText
- android:id="@+id/search_view"
- android:layout_width="0dp"
- android:layout_height="@dimen/action_bar_height"
- android:layout_weight="1"
- android:layout_marginLeft="@dimen/search_box_expanded_text_margin_left"
- android:textSize="@dimen/search_expanded_text_size"
- android:fontFamily="@string/search_font_family"
- android:textColor="@color/searchbox_text_color"
- android:inputType="textFilter" />
-
- <ImageView
- android:id="@+id/search_close_button"
- android:layout_height="@dimen/search_box_icon_size"
- android:layout_width="@dimen/search_box_icon_size"
- android:layout_marginRight="8dp"
- android:src="@drawable/ic_close_dk"
- android:clickable="true"
- android:background="?android:attr/selectableItemBackground"
- android:contentDescription="@string/description_clear_search"
- android:tint="@color/searchbox_icon_tint" />
-
- </LinearLayout>
-
-</view>
\ No newline at end of file
+</view>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 405524f..e2b4e19 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> oproepe."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Stuur teksboodskap aan <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ongeluisterde stemboodskap"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Vee soektog uit"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Begin stemsoektog"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Onbekend"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 93b1413..7e89343 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ጥሪዎች።"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"የፅሁፍ መልዕክት ወደ <xliff:g id="NAME">%1$s</xliff:g> ላክ"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ያልተሰማ የድምፅመልዕክት"</string>
- <string name="description_clear_search" msgid="688023606766232904">"ፍለጋን አጽዳ"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"በድምፅ ፍለጋ ይጀምሩ"</string>
<string name="menu_callNumber" msgid="997146291983360266">"ደውል<xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"ያልታወቀ"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index e86b11c..1dbe5f8 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> من المكالمات."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"إرسال رسالة نصية إلى <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"البريد الصوتي غير المسموع"</string>
- <string name="description_clear_search" msgid="688023606766232904">"محو البحث"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"بدء البحث الصوتي"</string>
<string name="menu_callNumber" msgid="997146291983360266">"الاتصال بالرقم <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"غير معروف"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 3e4ce4e..a171d55 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> обаждания."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Изпращане на SMS до <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослушана гласова поща"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Изчистване на търсенето"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Стартиране на гласово търсене"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Обаждане на <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Неизвестен"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 1e72d99..09bcbae 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> trucades"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Envia un missatge de text a <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Missatge de veu no escoltat"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Esborra la cerca"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Inicia la cerca per veu"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Truca al <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Desconegut"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 09e06e1..5d5a88f 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"Počet hovorů: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Odeslat textovou zprávu kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nevyslechnutá hlasová zpráva"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Vymazat vyhledávání"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Spustit hlasové vyhledávání"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Zavolat na číslo <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Neznámé"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 518ed86..b1e34a4 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> opkald."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Send sms til <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Uaflyttet besked på telefonsvareren"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Ryd søgning"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Start stemmesøgning"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Ring til <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Ukendte"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 596b144..75e85e2 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> Anrufe"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"SMS an <xliff:g id="NAME">%1$s</xliff:g> senden"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nicht abgehörte Mailbox-Nachricht"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Suche zurücksetzen"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Sprachsuche starten"</string>
<string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> wählen"</string>
<string name="unknown" msgid="740067747858270469">"Unbekannt"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index e787936..bd81888 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> κλήσεις."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Αποστολή μηνύματος κειμένου στον χρήστη <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Μηνύματα αυτόματου τηλεφωνητή που δεν έχετε ακούσει"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Διαγραφή αναζητήσεων"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Έναρξη φωνητικής αναζήτησης"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Κλήση του αριθμού <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Άγνωστος"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 2bcbd79..537f211 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> calls."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Send text message to <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Unheard voicemail"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Clear search"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Start voice search"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Unknown"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 2bcbd79..537f211 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> calls."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Send text message to <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Unheard voicemail"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Clear search"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Start voice search"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Unknown"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 7365c4b..e374370 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> llamadas"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensaje de texto a <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Buzón de voz no escuchado"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Borrar la búsqueda"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Iniciar búsqueda por voz"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Llamar al <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Desconocido"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index c1259b6..2fab950 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> llamadas."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensaje de texto a <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mensaje de voz sin oír"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Borrar la búsqueda"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Iniciar búsqueda por voz"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Llamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Desconocidos"</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index bc93a64..00a2caa 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> kõnet."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Saada tekstsõnum kontaktile <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Kuulamata kõnepostisõnum"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Otsingu kustutamine"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Häälotsingu alustamine"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Helistage: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Tundmatu"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 5a59b6f..3cef835 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> تماس."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"ارسال پیام متنی به <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"پست صوتی شنیده نشده"</string>
- <string name="description_clear_search" msgid="688023606766232904">"پاک کردن جستجو"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"شروع جستجوی صوتی"</string>
<string name="menu_callNumber" msgid="997146291983360266">"تماس با <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"ناشناس"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 3207f05..225752d 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> puhelua."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Lähetä tekstiviesti: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Kuuntelematon vastaajaviesti"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Tyhjennä haku"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Aloita puhehaku"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Soita <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Tuntematon"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 3e0a4f5..11064fe 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> appels."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Envoyer un SMS à <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nouveau message vocal"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Effacer les termes de recherche"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Démarrer la recherche vocale"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Inconnu"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 0425ce1..6d79bee 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> appels"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Envoyer un SMS à <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nouveau message vocal"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Effacer la recherche"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Démarrer la recherche vocale"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Inconnu"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 2e140bb..c2c0c4d 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> कॉल."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g> को पाठ संदेश भेजें"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"नहीं सुना गया ध्वनिमेल"</string>
- <string name="description_clear_search" msgid="688023606766232904">"खोज साफ़ करें"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"बोलकर खोजें शुरु करें"</string>
<string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> पर कॉल करें"</string>
<string name="unknown" msgid="740067747858270469">"अज्ञात"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 5c2c4e3..63cd451 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"Broj poziva: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Slanje tekstualne poruke: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nepreslušana govorna pošta"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Brisanje pretraživanja"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Pokretanje glasovnog pretraživanja"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Nazovite <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Nepoznato"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index dfb986f..f4f6234 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> hívás"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"SMS küldése neki: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nem lejátszott hangüzenet"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Keresés törlése"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Hangalapú keresés indítása"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Hívás: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Ismeretlen"</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 23afd39..7dd3085 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> զանգ:"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Ուղարկել տեքստային հաղորդագրություն <xliff:g id="NAME">%1$s</xliff:g>-ին"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Չլսված ձայնային փոստ"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Մաքրել որոնման դաշտը"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Սկսկեք ձայնային որոնումը"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Զանգել <xliff:g id="NUMBER">%s</xliff:g>-ին"</string>
<string name="unknown" msgid="740067747858270469">"Անհայտ"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 0135e69..9b3ddad 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> panggilan."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Kirim SMS ke <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Pesan suara yang belum didengar"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Hapus penelusuran"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Memulai penelusuran suara"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Tidak diketahui"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 88e3473..c3957bc 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> chiamate."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Invia messaggio di testo a <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Messaggio vocale non ascoltato"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Cancella ricerca"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Avvia la ricerca vocale"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Chiama <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Sconosciuto"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index e11dea5..9e42c55 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> שיחות."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"שלח הודעת טקסט אל <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"דואר קולי שעדיין לא נשמע"</string>
- <string name="description_clear_search" msgid="688023606766232904">"נקה חיפוש"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"התחל חיפוש קולי"</string>
<string name="menu_callNumber" msgid="997146291983360266">"התקשר אל <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"לא ידוע"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 2215cd3..ad56cab 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"通話回数は<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>回。"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g>にテキストメッセージを送信"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未再生のボイスメール"</string>
- <string name="description_clear_search" msgid="688023606766232904">"検索をクリア"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"音声検索を開始"</string>
<string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g>に発信"</string>
<string name="unknown" msgid="740067747858270469">"通知不可能"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index da91ab1..8e09b26 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ზარი."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"ტესქტური შეტყობინების გაგზავნა <xliff:g id="NAME">%1$s</xliff:g>-ისთვის"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"მოსასმენი ხმოვანი ფოსტა"</string>
- <string name="description_clear_search" msgid="688023606766232904">"ძიების გასუფთავება"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"ხმოვანი ძიების დაწყება"</string>
<string name="menu_callNumber" msgid="997146291983360266">"დარეკვა <xliff:g id="NUMBER">%s</xliff:g>-ზე"</string>
<string name="unknown" msgid="740067747858270469">"უცნობი"</string>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index acebb5d..8b3ebd2 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"ការហៅ <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ។"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"ផ្ញើរសារអត្ថបទទៅ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"សារជាសំឡេងដែលមិនបានឮ"</string>
- <string name="description_clear_search" msgid="688023606766232904">"សម្អាតការស្វែងរក"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"ចាប់ផ្ដើមស្វែងរកជាសំឡេង"</string>
<string name="menu_callNumber" msgid="997146291983360266">"ហៅ <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"មិនស្គាល់"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 2b7ca7d..f065d74 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"통화 횟수: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>번"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g>님에게 문자 메시지 보내기"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"듣지 않은 음성사서함"</string>
- <string name="description_clear_search" msgid="688023606766232904">"검색창 지우기"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"음성 검색 시작"</string>
<string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g>에 전화"</string>
<string name="unknown" msgid="740067747858270469">"알 수 없음"</string>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index ec47874..1ba8a65 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ການໂທ."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"ສົ່ງຂໍ້ຄວາມຫາ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ຂໍ້ຄວາມສຽງທີ່ຍັງບໍ່ໄດ້ຟັງ"</string>
- <string name="description_clear_search" msgid="688023606766232904">"ລຶບການຊອກຫາ"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"ເລີ່ມການຊອກຫາດ້ວຍສຽງ"</string>
<string name="menu_callNumber" msgid="997146291983360266">"ໂທຫາ <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"ບໍ່ຮູ້ຈັກ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index ef58e8b..687ec7e 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"Skambučių: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Siųsti teksto pranešimą <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Neklausytas balso pašto pranešimas"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Išvalyti paiešką"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Pradėti paiešką balsu"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Skambinti <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Nežinomas"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 1228c1a..9c06067 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> zvani."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Sūtīt īsziņu šim: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nenoklausīti balss pasta ziņojumi"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Notīrīt meklēšanas lauku"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Sākt meklēšanu ar balsi"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Zvaniet: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Nezināms"</string>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index a7a6852..3da000e 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> дуудлага."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g> руу зурвас илгээх"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Сонсоогүй дуут шуудан"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Хайлтыг цэвэрлэх"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Дуун хайлтыг эхлүүлэх"</string>
<string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> руу залгах"</string>
<string name="unknown" msgid="740067747858270469">"Тодорхойгүй"</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 9ac1ded..a6fdc61 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> panggilan."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Hantar mesej teks kepada <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mel suara belum didengar"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Kosongkan carian"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Mulakan carian suara"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Tidak diketahui"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index d361a04..4ae10fa 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> samtaler."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Send tekstmelding til <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ikke avspilt talepost"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Slett søk"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Start talesøk"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Ukjent"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index fdd65fd..86203c0 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> telefoongesprekken."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Sms verzenden naar <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Niet-beluisterde voicemail"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Zoekopdracht wissen"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Gesproken zoekopdracht"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Onbekend"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index f0850df..f36a94c 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"Połączenia: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Wyślij SMS do: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nieodsłuchana poczta głosowa"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Wyczyść wyszukiwanie"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Wyszukiwanie głosowe"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Zadzwoń: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Nieznane"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index edc736f..377c83a 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> chamadas."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensagem de texto para <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mensagem de correio de voz ainda não ouvida"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Limpar pesquisa"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Iniciar pesquisa por voz"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Telefonar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Desconhecido"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 4cfd902..739aef4 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> chamadas."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensagem de texto para <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nova mensagem de voz"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Limpar pesquisa"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Iniciar pesquisa por voz"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Ligar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Desconhecido"</string>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 2389cc4..16c1db1 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -171,8 +171,6 @@
<skip />
<!-- no translation found for description_call_log_unheard_voicemail (118101684236996786) -->
<skip />
- <!-- no translation found for description_clear_search (688023606766232904) -->
- <skip />
<!-- no translation found for description_start_voice_search (520539488194946012) -->
<skip />
<!-- no translation found for menu_callNumber (997146291983360266) -->
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 80aa848..481ede9 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> (de) apeluri."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Trimiteţi un mesaj text către <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mesaje vocale neascultate"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Ștergeți căutarea"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Începeţi căutarea vocală"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Apelaţi <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Necunoscut"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 621ff68..a148ea3 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"Вызовов: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Отправить текстовое сообщение: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослушанные сообщения голосовой почты"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Очистить условия поиска"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Начать голосовой поиск"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Позвонить: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Неизвестно"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 8561765..4b1069f 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"Počet volaní: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Poslať textovú správu kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nevypočutá hlasová správa"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Vymazať vyhľadávanie"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Spustenie hlasového vyhľadávania"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Volať <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Neznáme"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 045e5e0..593ef37 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"Št. klicev: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Pošlji SMS osebi <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Neodprta glasovna pošta"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Počisti iskalno polje"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Začni glasovno iskanje"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Pokliči <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Neznano"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 8506e9f..f931dc2 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> позива."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Слање текстуалне поруке контакту <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непреслушана говорна пошта"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Брисање претраге"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Покретање гласовне претраге"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Позови <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Непознато"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index a83b9fd..5b16468 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> samtal."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Skicka SMS till <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ej hört röstmeddelande"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Rensa sökning"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Starta röstsökning"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Okänd"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index c1ee838..c4b0bf9 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"Simu <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Tuma ujumbe wa maandishi kwa <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Barua sauti ambayo haijasikizwa"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Futa utafutaji"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Anza kutafuta kwa kutamka"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Piga simu <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Haijulikani"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index b390dfa..32fa732 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> สาย"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"ส่งข้อความไปที่ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ข้อความเสียงที่ยังไม่ได้ฟัง"</string>
- <string name="description_clear_search" msgid="688023606766232904">"ล้างการค้นหา"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"เริ่มต้นการค้นหาด้วยเสียง"</string>
<string name="menu_callNumber" msgid="997146291983360266">"โทร <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"ไม่ทราบ"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 7a6c482..9994142 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> (na) tawag."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Ipadala ang text message kay <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Hindi pa naririnig na voicemail"</string>
- <string name="description_clear_search" msgid="688023606766232904">"I-clear ang paghahanap"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Simulan ang paghahanap gamit ang boses"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Tumawag sa <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Di-kilala"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index d66bd73..15a013c 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> çağrı."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Şu kişiye kısa mesaj gönder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Dinlenilmemiş sesli mesaj"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Aramayı temizle"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Sesli arama başlat"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Çağrı yap: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Bilinmiyor"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 0b6ee7d..d65411a 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"Викликів: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Надіслати текстове повідомлення: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослухана голосова пошта"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Очистити поле пошуку"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Розпочати голосовий пошук"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Телефонувати <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Невідомий"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index d00e7c3..920bdba 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> cuộc gọi."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Gửi tin nhắn văn bản tới <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Thư thoại chưa nghe"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Xóa tìm kiếm"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Bắt đầu tìm kiếm bằng giọng nói"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Gọi <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Không xác định"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 58f19eb..0050026 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>次通话。"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"向<xliff:g id="NAME">%1$s</xliff:g>发送短信"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未收听的语音邮件"</string>
- <string name="description_clear_search" msgid="688023606766232904">"清除搜索内容"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"开始语音搜索"</string>
<string name="menu_callNumber" msgid="997146291983360266">"拨打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"未知"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 6bac571..94fcef2 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> 次通話次數。"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"發短訊給<xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未聽取的語音留言"</string>
- <string name="description_clear_search" msgid="688023606766232904">"清除搜尋"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"開始語音搜尋"</string>
<string name="menu_callNumber" msgid="997146291983360266">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"未知"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 33aaedd..ab9d506 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"通話 <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> 次。"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"傳送簡訊給<xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未聽取的語音留言"</string>
- <string name="description_clear_search" msgid="688023606766232904">"清除搜尋"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"開始進行語音搜尋"</string>
<string name="menu_callNumber" msgid="997146291983360266">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"不明"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 9e8b16c..9d7ad7d 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -115,7 +115,6 @@
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> amakholi."</string>
<string name="description_send_text_message" msgid="7803126439934046891">"Hambisa umyalezo ku <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"I-imeyli yezwi engazwakalanga"</string>
- <string name="description_clear_search" msgid="688023606766232904">"Sula usesho"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Qalisa ukusesha ngezwi"</string>
<string name="menu_callNumber" msgid="997146291983360266">"Shayela <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="unknown" msgid="740067747858270469">"Akwaziwa"</string>
diff --git a/res/values/animation_constants.xml b/res/values/animation_constants.xml
index 05b8e21..7863060 100644
--- a/res/values/animation_constants.xml
+++ b/res/values/animation_constants.xml
@@ -16,8 +16,6 @@
-->
<resources>
<integer name="fade_duration">300</integer>
- <integer name="dialpad_slide_in_duration">532</integer>
- <integer name="dialpad_slide_out_duration">257</integer>
<!-- Swipe constants -->
<integer name="swipe_escape_velocity">100</integer>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 9264e30..05381a5 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -39,6 +39,8 @@
<!-- Standard color for selected items. -->
<color name="item_selected">#660099cc</color>
+ <!-- White background for dialer -->
+ <color name="background_dialer_white">#ffffff</color>
<!-- Background color of new dialer activity -->
<color name="background_dialer_light">#f6f6f6</color>
<!-- Background color of dialer list items (contacts, call log entries) -->
@@ -47,18 +49,9 @@
<color name="search_shortcut_background_color">#b6b6b6</color>
<color name="search_shortcut_icon_color">#f8f8f8</color>
- <!-- Dark variant of the action bar color. -->
- <color name="actionbar_background_color_dark">#008aa1</color>
-
<!-- Color of the 1dp divider that separates favorites -->
<color name="favorite_contacts_separator_color">#d0d0d0</color>
- <!-- Background color of the search box -->
- <color name="searchbox_background_color">#ffffff</color>
- <!-- Text color of the search box text as entered by user -->
- <color name="searchbox_text_color">#000000</color>
- <!-- Text color of the search box hint text -->
- <color name="searchbox_hint_text_color">#a4a4a4</color>
<color name="searchbox_icon_tint">#a4a4a4</color>
<!-- Color of the contact name in favorite tiles -->
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 53292e1..4b955c6 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -15,7 +15,6 @@
~ limitations under the License
-->
<resources>
-
<!--
Drag to remove view (in dp because it is used in conjunction with a statically
sized icon
@@ -32,18 +31,19 @@
<dimen name="call_log_indent_margin">24dip</dimen>
<dimen name="call_log_name_margin_bottom">2dp</dimen>
<dimen name="call_log_list_item_height">56dip</dimen>
- <dimen name="call_log_list_contact_photo_size">40dip</dimen>
- <dimen name="call_detail_contact_name_margin">24dip</dimen>
+
+ <!-- Size of contact photos in the call log and call details. -->
+ <dimen name="contact_photo_size">40dp</dimen>
<dimen name="call_detail_button_spacing">2dip</dimen>
+ <dimen name="call_detail_horizontal_margin">16dp</dimen>
+ <dimen name="call_detail_top_margin">36dp</dimen>
+ <dimen name="call_detail_bottom_margin">32dp</dimen>
+ <dimen name="call_detail_header_top_margin">24dp</dimen>
+ <dimen name="call_detail_translation_z">0.5dp</dimen>
<!-- Match call_button_height to Phone's dimens/in_call_end_button_height -->
<dimen name="call_button_height">74dp</dimen>
- <!-- Right margin of the floating action button -->
- <dimen name="floating_action_button_margin_right">16dp</dimen>
- <!-- Bottom margin of the floating action button -->
- <dimen name="floating_action_button_margin_bottom">16dp</dimen>
- <dimen name="floating_action_button_dialpad_margin_bottom">12dp</dimen>
<!-- Dimensions for speed dial tiles -->
<dimen name="contact_tile_divider_width">1dp</dimen>
@@ -141,4 +141,7 @@
<!-- Size of icon for contacts number shortcuts -->
<dimen name="search_shortcut_radius">40dp</dimen>
+
+ <!-- Length of dialpad's shadows in dialer. -->
+ <dimen name="shadow_length">10dp</dimen>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0cf4e25..6d9c77a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -460,9 +460,6 @@
-->
<string name="description_call_log_unheard_voicemail">Unheard voicemail</string>
- <!-- String describing the icon used to clear the search field -->
- <string name="description_clear_search">Clear search</string>
-
<!-- String describing the icon used to start a voice search -->
<string name="description_start_voice_search">Start voice search</string>
@@ -635,10 +632,6 @@
Do not translate. -->
<string name="favorites_menu_all_contacts_font_family">sans-serif</string>
- <!-- The font-family to use for the text inside the searchbox.
- Do not translate. -->
- <string name="search_font_family">sans-serif</string>
-
<!-- Button text for the "call back" button displayed underneath an entry in the call log.
Tapping causes a call to be placed to the caller represented by the call log entry.
[CHAR LIMIT=30] -->
@@ -694,11 +687,56 @@
[CHAR LIMIT=NONE] -->
<string name="toast_entry_removed">Call log entry deleted.</string>
+ <!-- String used as a header in the call log above calls which occurred today.
+ [CHAR LIMIT=65] -->
+ <string name="call_log_header_today">Today</string>
+
+ <!-- String used as a header in the call log above calls which occurred yesterday.
+ [CHAR LIMIT=65] -->
+ <string name="call_log_header_yesterday">Yesterday</string>
+
<!-- String used as a header in the call log above calls which occurred last week.
[CHAR LIMIT=65] -->
<string name="call_log_header_last_week">Last week</string>
- <!-- String used as a header in the call log above calls which ocurred more than a week ago.
+ <!-- String used as a header in the call log above calls which occurred more than a week ago.
[CHAR LIMIT=65] -->
<string name="call_log_header_other">Other</string>
+
+ <!-- String a header on the call details screen. Appears above the list calls to or from a
+ particular number.
+ [CHAR LIMIT=65] -->
+ <string name="call_detail_list_header">Call List</string>
+
+ <!-- String describing the "speaker on" button on the playback control used to listen to a
+ voicemail message. When speaker is on, playback of the voicemail will occur through the
+ phone speaker.
+ Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+ [CHAR LIMIT=NONE] -->
+ <string name="voicemail_speaker_on">Turn speaker on.</string>
+
+ <!-- String describing the "speaker off" button on the playback control used to listen to a
+ voicemail message. When speaker is off, playback of the voicemail will occur through the
+ phone earpiece.
+ Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+ [CHAR LIMIT=NONE] -->
+ <string name="voicemail_speaker_off">Turn speaker off.</string>
+
+ <!-- String describing the "play faster" button in the playback control used to listen to a
+ voicemail message. Speeds up playback of the voicemail message.
+ Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+ [CHAR LIMIT=NONE] -->
+ <string name="voicemail_play_faster">Play faster.</string>
+
+ <!-- String describing the "play slower" button in the playback control used to listen to a
+ voicemail message. Slows down playback of the voicemail message.
+ Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+ [CHAR LIMIT=NONE] -->
+ <string name="voicemail_play_slower">Play slower.</string>
+
+ <!-- String describing the "play/pause" button in the playback control used to listen to a
+ voicemail message. Starts playback or pauses ongoing playback.
+ Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+ [CHAR LIMIT=NONE] -->
+ <string name="voicemail_play_start_pause">Start or pause playback.</string>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 65b0f30..d6f2023 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -27,8 +27,6 @@
<!-- Drawable for the back button -->
<item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
<item name="android:windowContentOverlay">@null</item>
- <!-- Searchbox Style -->
- <item name="android:editTextStyle">@style/DialtactsSearchboxStyle</item>
<item name="android:listViewStyle">@style/ListViewStyle</item>
<item name="activated_background">@drawable/list_item_activated_background</item>
<item name="section_header_background">@drawable/list_title_holo</item>
@@ -148,11 +146,6 @@
<item name="android:overScrollMode">always</item>
</style>
- <style name="DialtactsSearchboxStyle" parent="@android:style/Widget.EditText">
- <item name="android:background">@null</item>
- <item name="android:textColorHint">@color/searchbox_text_color</item>
- </style>
-
<style name="DismissButtonStyle">
<item name="android:paddingLeft">@dimen/dismiss_button_padding_start</item>
<item name="android:paddingRight">@dimen/dismiss_button_padding_end</item>
diff --git a/src/com/android/dialer/BackScrollManager.java b/src/com/android/dialer/BackScrollManager.java
deleted file mode 100644
index 5728702..0000000
--- a/src/com/android/dialer/BackScrollManager.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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.dialer;
-
-import android.view.View;
-import android.widget.AbsListView;
-import android.widget.ListView;
-
-/**
- * Handles scrolling back of a list tied to a header.
- * <p>
- * This is used to implement a header that scrolls up with the content of a list to be partially
- * obscured.
- */
-public class BackScrollManager {
- /** Defines the header to be scrolled. */
- public interface ScrollableHeader {
- /** Sets the offset by which to scroll. */
- public void setOffset(int offset);
- /** Gets the maximum offset that should be applied to the header. */
- public int getMaximumScrollableHeaderOffset();
- }
-
- private final ScrollableHeader mHeader;
- private final ListView mListView;
-
- private final AbsListView.OnScrollListener mScrollListener =
- new AbsListView.OnScrollListener() {
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
- int totalItemCount) {
- if (firstVisibleItem != 0) {
- // The first item is not shown, the header should be pinned at the top.
- mHeader.setOffset(mHeader.getMaximumScrollableHeaderOffset());
- return;
- }
-
- View firstVisibleItemView = view.getChildAt(firstVisibleItem);
- if (firstVisibleItemView == null) {
- return;
- }
- // We scroll the header up, but at most pin it to the top of the screen.
- int offset = Math.min(
- (int) -view.getChildAt(firstVisibleItem).getY(),
- mHeader.getMaximumScrollableHeaderOffset());
- mHeader.setOffset(offset);
- }
-
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- // Nothing to do here.
- }
- };
-
- /**
- * Creates a new instance of a {@link BackScrollManager} that connected the header and the list
- * view.
- */
- public static void bind(ScrollableHeader header, ListView listView) {
- BackScrollManager backScrollManager = new BackScrollManager(header, listView);
- backScrollManager.bind();
- }
-
- private BackScrollManager(ScrollableHeader header, ListView listView) {
- mHeader = header;
- mListView = listView;
- }
-
- private void bind() {
- mListView.setOnScrollListener(mScrollListener);
- // We disable the scroll bar because it would otherwise be incorrect because of the hidden
- // header.
- mListView.setVerticalScrollBarEnabled(false);
- }
-}
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index decfe9b..695f8aa 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -17,53 +17,37 @@
package com.android.dialer;
import android.app.Activity;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.ActivityNotFoundException;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
-import android.content.Loader;
import android.content.res.Resources;
import android.database.Cursor;
-import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.CallLog;
-import android.provider.ContactsContract;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.DisplayNameSources;
-import android.provider.ContactsContract.Intents.Insert;
import android.provider.VoicemailContract.Voicemails;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
-import android.view.ActionMode;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.widget.ImageButton;
-import android.widget.ImageView;
import android.widget.ListView;
+import android.widget.QuickContactBadge;
import android.widget.TextView;
import android.widget.Toast;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.CallUtil;
-import com.android.contacts.common.ClipboardUtils;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.GeoUtil;
-import com.android.contacts.common.model.Contact;
-import com.android.contacts.common.model.ContactLoader;
-import com.android.contacts.common.util.PhoneNumberHelper;
-import com.android.contacts.common.util.UriUtils;
-import com.android.dialer.BackScrollManager.ScrollableHeader;
import com.android.dialer.calllog.CallDetailHistoryAdapter;
import com.android.dialer.calllog.CallTypeHelper;
import com.android.dialer.calllog.ContactInfo;
@@ -119,12 +103,9 @@
private CallTypeHelper mCallTypeHelper;
private PhoneNumberDisplayHelper mPhoneNumberHelper;
- private PhoneCallDetailsHelper mPhoneCallDetailsHelper;
- private TextView mHeaderTextView;
- private View mHeaderOverlayView;
- private ImageView mMainActionView;
- private ImageButton mMainActionPushLayerView;
- private ImageView mContactBackgroundView;
+ private QuickContactBadge mQuickContactBadge;
+ private TextView mCallerName;
+ private TextView mCallerNumber;
private AsyncTaskExecutor mAsyncTaskExecutor;
private ContactInfoHelper mContactInfoHelper;
@@ -154,15 +135,6 @@
private ProximitySensorManager mProximitySensorManager;
private final ProximitySensorListener mProximitySensorListener = new ProximitySensorListener();
- /**
- * The action mode used when the phone number is selected. This will be non-null only when the
- * phone number is selected.
- */
- private ActionMode mPhoneNumberActionMode;
-
- private CharSequence mPhoneNumberLabelToCopy;
- private CharSequence mPhoneNumberToCopy;
-
/** Listener to changes in the proximity sensor state. */
private class ProximitySensorListener implements ProximitySensorManager.Listener {
/** Used to show a blank view and hide the action bar. */
@@ -232,69 +204,6 @@
static final int GEOCODED_LOCATION_COLUMN_INDEX = 5;
static final int NUMBER_PRESENTATION_COLUMN_INDEX = 6;
- private final View.OnClickListener mPrimaryActionListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- if (finishPhoneNumerSelectedActionModeIfShown()) {
- return;
- }
- DialerUtils.startActivityWithErrorToast(CallDetailActivity.this,
- ((ViewEntry) view.getTag()).primaryIntent);
- }
- };
-
- private final View.OnClickListener mSecondaryActionListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- if (finishPhoneNumerSelectedActionModeIfShown()) {
- return;
- }
- DialerUtils.startActivityWithErrorToast(CallDetailActivity.this,
- ((ViewEntry) view.getTag()).secondaryIntent);
- }
- };
-
- private final View.OnLongClickListener mPrimaryLongClickListener =
- new View.OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- if (finishPhoneNumerSelectedActionModeIfShown()) {
- return true;
- }
- startPhoneNumberSelectedActionMode(v);
- return true;
- }
- };
-
- private final LoaderCallbacks<Contact> mLoaderCallbacks = new LoaderCallbacks<Contact>() {
- @Override
- public void onLoaderReset(Loader<Contact> loader) {
- }
-
- @Override
- public void onLoadFinished(Loader<Contact> loader, Contact data) {
- final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
- intent.setType(Contacts.CONTENT_ITEM_TYPE);
- if (data.getDisplayNameSource() >= DisplayNameSources.ORGANIZATION) {
- intent.putExtra(Insert.NAME, data.getDisplayName());
- }
- intent.putExtra(Insert.DATA, data.getContentValues());
- bindContactPhotoAction(intent, R.drawable.ic_add_contact_holo_dark,
- getString(R.string.description_add_contact));
- }
-
- @Override
- public Loader<Contact> onCreateLoader(int id, Bundle args) {
- final Uri contactUri = args.getParcelable(BUNDLE_CONTACT_URI_EXTRA);
- if (contactUri == null) {
- Log.wtf(TAG, "No contact lookup uri provided.");
- }
- return new ContactLoader(CallDetailActivity.this, contactUri,
- false /* loadGroupMetaData */, false /* loadInvitableAccountTypes */,
- false /* postViewNotification */, true /* computeFormattedPhoneNumber */);
- }
- };
-
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -307,18 +216,15 @@
mCallTypeHelper = new CallTypeHelper(getResources());
mPhoneNumberHelper = new PhoneNumberDisplayHelper(mResources);
- mPhoneCallDetailsHelper = new PhoneCallDetailsHelper(mResources, mCallTypeHelper,
- new PhoneNumberUtilsWrapper());
mVoicemailStatusHelper = new VoicemailStatusHelperImpl();
mAsyncQueryHandler = new CallDetailActivityQueryHandler(this);
- mHeaderTextView = (TextView) findViewById(R.id.header_text);
- mHeaderOverlayView = findViewById(R.id.photo_text_bar);
mStatusMessageView = findViewById(R.id.voicemail_status);
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);
+ mQuickContactBadge = (QuickContactBadge) findViewById(R.id.quick_contact_photo);
+ mQuickContactBadge.setOverlay(null);
+ mCallerName = (TextView) findViewById(R.id.caller_name);
+ mCallerNumber = (TextView) findViewById(R.id.caller_number);
mDefaultCountryIso = GeoUtil.getCurrentCountryIso(this);
mContactPhotoManager = ContactPhotoManager.getInstance(this);
mProximitySensorManager = new ProximitySensorManager(this, mProximitySensorListener);
@@ -398,14 +304,15 @@
* If both are available, the data on the intent takes precedence.
*/
private Uri[] getCallLogEntryUris() {
- Uri uri = getIntent().getData();
+ final Uri uri = getIntent().getData();
if (uri != null) {
// If there is a data on the intent, it takes precedence over the extra.
return new Uri[]{ uri };
}
- long[] ids = getIntent().getLongArrayExtra(EXTRA_CALL_LOG_IDS);
- Uri[] uris = new Uri[ids.length];
- for (int index = 0; index < ids.length; ++index) {
+ final long[] ids = getIntent().getLongArrayExtra(EXTRA_CALL_LOG_IDS);
+ final int numIds = ids == null ? 0 : ids.length;
+ final Uri[] uris = new Uri[numIds];
+ for (int index = 0; index < numIds; ++index) {
uris[index] = ContentUris.withAppendedId(Calls.CONTENT_URI_WITH_VOICEMAIL, ids[index]);
}
return uris;
@@ -474,9 +381,6 @@
final Uri contactUri = firstDetails.contactUri;
final Uri photoUri = firstDetails.photoUri;
- // Set the details header, based on the first phone call.
- mPhoneCallDetailsHelper.setCallDetailsHeader(mHeaderTextView, firstDetails);
-
// Cache the details about the phone number.
final boolean canPlaceCallsTo =
PhoneNumberUtilsWrapper.canPlaceCallsTo(mNumber, numberPresentation);
@@ -484,73 +388,7 @@
final boolean isVoicemailNumber = phoneUtils.isVoicemailNumber(mNumber);
final boolean isSipNumber = phoneUtils.isSipNumber(mNumber);
- // Let user view contact details if they exist, otherwise add option to create new
- // 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;
- }
-
- boolean skipBind = false;
-
- if (contactUri != null && !UriUtils.isEncodedContactUri(contactUri)) {
- mainActionIntent = new Intent(Intent.ACTION_VIEW, contactUri);
- // This will launch People's detail contact screen, so we probably want to
- // treat it as a separate People task.
- mainActionIntent.setFlags(
- Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
- mainActionIcon = R.drawable.ic_contacts_holo_dark;
- mainActionDescription =
- getString(R.string.description_view_contact, nameOrNumber);
- } else if (UriUtils.isEncodedContactUri(contactUri)) {
- final Bundle bundle = new Bundle(1);
- bundle.putParcelable(BUNDLE_CONTACT_URI_EXTRA, contactUri);
- getLoaderManager().initLoader(LOADER_ID, bundle, mLoaderCallbacks);
- mainActionIntent = null;
- mainActionIcon = R.drawable.ic_add_contact_holo_dark;
- mainActionDescription = getString(R.string.description_add_contact);
- skipBind = true;
- } 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.
- //
- // To fix this for SIP addresses, we need to:
- // - define ContactsContract.Intents.Insert.SIP_ADDRESS, and use it here if
- // the current number is a SIP address
- // - update the contacts UI code to handle Insert.SIP_ADDRESS by
- // updating the SipAddress field
- // 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 (!skipBind) {
- bindContactPhotoAction(mainActionIntent, mainActionIcon,
- mainActionDescription);
- }
+ final CharSequence callLocationOrType = getNumberTypeOrLocation(firstDetails);
final CharSequence displayNumber =
mPhoneNumberHelper.getDisplayNumber(
@@ -558,39 +396,18 @@
firstDetails.numberPresentation,
firstDetails.formattedNumber);
- // This action allows to call the number that places the call.
- if (canPlaceCallsTo) {
- ViewEntry entry = new ViewEntry(
- getString(R.string.menu_callNumber,
- forceLeftToRight(displayNumber)),
- CallUtil.getCallIntent(mNumber),
- 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.name)
- && !TextUtils.isEmpty(firstDetails.number)
- && !PhoneNumberHelper.isUriNumber(firstDetails.number.toString())) {
- entry.label = Phone.getTypeLabel(mResources, firstDetails.numberType,
- firstDetails.numberLabel);
- }
-
- // The secondary action allows to send an SMS to the number that placed the
- // call.
- if (phoneUtils.canSendSmsTo(mNumber, numberPresentation)) {
- entry.setSecondaryAction(
- R.drawable.ic_text_holo_light,
- new Intent(Intent.ACTION_SENDTO,
- Uri.fromParts("sms", mNumber, null)),
- getString(R.string.description_send_text_message, nameOrNumber));
- }
-
- configureCallButton(entry);
- mPhoneNumberToCopy = displayNumber;
- mPhoneNumberLabelToCopy = entry.label;
+ if (!TextUtils.isEmpty(firstDetails.name)) {
+ mCallerName.setText(firstDetails.name);
+ mCallerNumber.setText(callLocationOrType + " " + displayNumber);
} else {
- disableCallButton();
- mPhoneNumberToCopy = null;
- mPhoneNumberLabelToCopy = null;
+ mCallerName.setText(displayNumber);
+ if (!TextUtils.isEmpty(callLocationOrType)) {
+ mCallerNumber.setText(callLocationOrType);
+ mCallerNumber.setVisibility(View.VISIBLE);
+ } else {
+ mCallerNumber.setVisibility(View.GONE);
+ }
+
}
mHasEditNumberBeforeCallOption =
@@ -602,39 +419,10 @@
ListView historyList = (ListView) findViewById(R.id.history);
historyList.setAdapter(
new CallDetailHistoryAdapter(CallDetailActivity.this, mInflater,
- mCallTypeHelper, details, hasVoicemail(), canPlaceCallsTo,
- findViewById(R.id.controls)));
- BackScrollManager.bind(
- new ScrollableHeader() {
- private View mControls = findViewById(R.id.controls);
- private View mPhoto = findViewById(R.id.contact_background_sizer);
- private View mHeader = findViewById(R.id.photo_text_bar);
- private View mSeparator = findViewById(R.id.separator);
+ mCallTypeHelper, details));
- @Override
- public void setOffset(int offset) {
- mControls.setY(-offset);
- }
-
- @Override
- public int getMaximumScrollableHeaderOffset() {
- // We can scroll the photo out, but we should keep the header if
- // present.
- if (mHeader.getVisibility() == View.VISIBLE) {
- return mPhoto.getHeight() - mHeader.getHeight();
- } else {
- // If the header is not present, we should also scroll out the
- // separator line.
- return mPhoto.getHeight() + mSeparator.getHeight();
- }
- }
- },
- historyList);
-
- final String displayNameForDefaultImage = TextUtils.isEmpty(firstDetails.name) ?
- displayNumber.toString() : firstDetails.name.toString();
-
- final String lookupKey = ContactInfoHelper.getLookupKeyFromUri(contactUri);
+ String lookupKey = contactUri == null ? null
+ : ContactInfoHelper.getLookupKeyFromUri(contactUri);
final boolean isBusiness = mContactInfoHelper.isBusiness(firstDetails.sourceType);
@@ -643,37 +431,39 @@
isBusiness ? ContactPhotoManager.TYPE_BUSINESS :
ContactPhotoManager.TYPE_DEFAULT;
- loadContactPhotos(photoUri, displayNameForDefaultImage, lookupKey, contactType);
+ String nameForDefaultImage;
+ if (TextUtils.isEmpty(firstDetails.name)) {
+ nameForDefaultImage = mPhoneNumberHelper.getDisplayNumber(firstDetails.number,
+ firstDetails.numberPresentation,
+ firstDetails.formattedNumber).toString();
+ } else {
+ nameForDefaultImage = firstDetails.name.toString();
+ }
+
+ loadContactPhotos(
+ contactUri, photoUri, nameForDefaultImage, lookupKey, contactType);
findViewById(R.id.call_detail).setVisibility(View.VISIBLE);
}
+
+ /**
+ * Determines the location geocode text for a call, or the phone number type
+ * (if available).
+ *
+ * @param details The call details.
+ * @return The phone number type or location.
+ */
+ private CharSequence getNumberTypeOrLocation(PhoneCallDetails details) {
+ if (!TextUtils.isEmpty(details.name)) {
+ return Phone.getTypeLabel(mResources, details.numberType,
+ details.numberLabel);
+ } else {
+ return details.geocode;
+ }
+ }
}
mAsyncTaskExecutor.submit(Tasks.UPDATE_PHONE_CALL_DETAILS, new UpdateContactDetailsTask());
}
- private void bindContactPhotoAction(final Intent actionIntent, int actionIcon,
- String actionDescription) {
- if (actionIntent == null) {
- mMainActionView.setVisibility(View.INVISIBLE);
- mMainActionPushLayerView.setVisibility(View.GONE);
- mHeaderTextView.setVisibility(View.INVISIBLE);
- mHeaderOverlayView.setVisibility(View.INVISIBLE);
- } else {
- mMainActionView.setVisibility(View.VISIBLE);
- mMainActionView.setImageResource(actionIcon);
- mMainActionPushLayerView.setVisibility(View.VISIBLE);
- mMainActionPushLayerView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DialerUtils.startActivityWithErrorToast(CallDetailActivity.this, actionIntent,
- R.string.add_contact_not_available);
- }
- });
- mMainActionPushLayerView.setContentDescription(actionDescription);
- mHeaderTextView.setVisibility(View.VISIBLE);
- mHeaderOverlayView.setVisibility(View.VISIBLE);
- }
- }
-
/** Return the phone call details for a given call log URI. */
private PhoneCallDetails getPhoneCallDetailsForUri(Uri callUri) {
ContentResolver resolver = getContentResolver();
@@ -742,12 +532,18 @@
}
/** Load the contact photos and places them in the corresponding views. */
- private void loadContactPhotos(Uri photoUri, String displayName, String lookupKey,
- int contactType) {
+ private void loadContactPhotos(Uri contactUri, Uri photoUri, String displayName,
+ String lookupKey, int contactType) {
+
final DefaultImageRequest request = new DefaultImageRequest(displayName, lookupKey,
- contactType, false);
- mContactPhotoManager.loadPhoto(mContactBackgroundView, photoUri,
- mContactBackgroundView.getWidth(), true, false /* isCircular */, request);
+ contactType, true /* isCircular */);
+
+ mQuickContactBadge.assignContactUri(contactUri);
+ mQuickContactBadge.setContentDescription(
+ mResources.getString(R.string.description_contact_details, displayName));
+
+ mContactPhotoManager.loadDirectoryPhoto(mQuickContactBadge, photoUri,
+ false /* darkTheme */, true /* isCircular */, request);
}
static final class ViewEntry {
@@ -777,48 +573,6 @@
}
}
- /** Disables the call button area, e.g., for private numbers. */
- private void disableCallButton() {
- findViewById(R.id.call_and_sms).setVisibility(View.GONE);
- }
-
- /** 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);
-
- 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_text);
-
- View mainAction = convertView.findViewById(R.id.call_and_sms_main_action);
- mainAction.setOnClickListener(mPrimaryActionListener);
- mainAction.setTag(entry);
- mainAction.setContentDescription(entry.primaryDescription);
- mainAction.setOnLongClickListener(mPrimaryLongClickListener);
-
- 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);
-
- TextView label = (TextView) convertView.findViewById(R.id.call_and_sms_label);
- if (TextUtils.isEmpty(entry.label)) {
- label.setVisibility(View.GONE);
- } else {
- label.setText(entry.label);
- label.setVisibility(View.VISIBLE);
- }
- }
-
protected void updateVoicemailStatusMessage(Cursor statusCursor) {
if (statusCursor == null) {
mStatusMessageView.setVisibility(View.GONE);
@@ -900,7 +654,8 @@
public void onPostExecute(Void result) {
finish();
}
- });
+ }
+ );
}
public void onMenuEditNumberBeforeCall(MenuItem menuItem) {
@@ -916,20 +671,13 @@
getContentResolver().delete(voicemailUri, null, null);
return null;
}
+
@Override
public void onPostExecute(Void result) {
finish();
}
- });
- }
-
- /** Invoked when the user presses the home button in the action bar. */
- private void onHomeSelected() {
- Intent intent = new Intent(Intent.ACTION_VIEW, Calls.CONTENT_URI);
- // This will open the call log even if the detail view has been opened directly.
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
- finish();
+ }
+ );
}
@Override
@@ -950,70 +698,10 @@
mProximitySensorManager.disable(waitForFarState);
}
- /**
- * If the phone number is selected, unselect it and return {@code true}.
- * Otherwise, just {@code false}.
- */
- private boolean finishPhoneNumerSelectedActionModeIfShown() {
- if (mPhoneNumberActionMode == null) return false;
- mPhoneNumberActionMode.finish();
- return true;
- }
-
- private void startPhoneNumberSelectedActionMode(View targetView) {
- mPhoneNumberActionMode = startActionMode(new PhoneNumberActionModeCallback(targetView));
- }
-
private void closeSystemDialogs() {
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
}
- private class PhoneNumberActionModeCallback implements ActionMode.Callback {
- private final View mTargetView;
- private final Drawable mOriginalViewBackground;
-
- public PhoneNumberActionModeCallback(View targetView) {
- mTargetView = targetView;
-
- // Highlight the phone number view. Remember the old background, and put a new one.
- mOriginalViewBackground = mTargetView.getBackground();
- mTargetView.setBackgroundColor(getResources().getColor(R.color.item_selected));
- }
-
- @Override
- public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- if (TextUtils.isEmpty(mPhoneNumberToCopy)) return false;
-
- getMenuInflater().inflate(R.menu.call_details_cab, menu);
- return true;
- }
-
- @Override
- public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- return true;
- }
-
- @Override
- public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- switch (item.getItemId()) {
- case R.id.copy_phone_number:
- ClipboardUtils.copyText(CallDetailActivity.this, mPhoneNumberLabelToCopy,
- mPhoneNumberToCopy, true);
- mode.finish(); // Close the CAB
- return true;
- }
- return false;
- }
-
- @Override
- public void onDestroyActionMode(ActionMode mode) {
- mPhoneNumberActionMode = null;
-
- // Restore the view background.
- mTargetView.setBackground(mOriginalViewBackground);
- }
- }
-
/** Returns the given text, forced to be left-to-right. */
private static CharSequence forceLeftToRight(CharSequence text) {
StringBuilder sb = new StringBuilder();
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index d4ba6a2..ad01b86 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -26,6 +26,7 @@
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.net.Uri;
@@ -47,6 +48,7 @@
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewTreeObserver;
import android.view.View.OnDragListener;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
@@ -66,6 +68,7 @@
import com.android.contacts.common.interactions.ImportExportDialogFragment;
import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
import com.android.contacts.common.util.ViewUtil;
+import com.android.contacts.common.widget.FloatingActionButtonController;
import com.android.dialer.calllog.CallLogActivity;
import com.android.dialer.database.DialerDatabaseHelper;
import com.android.dialer.dialpad.DialpadFragment;
@@ -154,13 +157,30 @@
private SmartDialSearchFragment mSmartDialSearchFragment;
/**
+ * Animation that slides in.
+ */
+ private Animation mSlideIn;
+
+ /**
+ * Animation that slides out.
+ */
+ private Animation mSlideOut;
+
+ /**
+ * Listener for after slide out animation completes on dialer fragment.
+ */
+ AnimationListenerAdapter mSlideOutListener = new AnimationListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ commitDialpadFragmentHide();
+ }
+ };
+
+ /**
* Fragment containing the speed dial list, recents list, and all contacts list.
*/
private ListsFragment mListsFragment;
- private View mFloatingActionButtonContainer;
- private ImageButton mFloatingActionButton;
-
private boolean mInDialpadSearch;
private boolean mInRegularSearch;
private boolean mClearSearchOnPause;
@@ -168,6 +188,11 @@
private boolean mShowDialpadOnResume;
/**
+ * Whether or not the device is in landscape orientation.
+ */
+ private boolean mIsLandscape;
+
+ /**
* The position of the currently selected tab in the attached {@link ListsFragment}.
*/
private int mCurrentTabPosition = 0;
@@ -197,9 +222,16 @@
private DragDropController mDragDropController;
private ActionBarController mActionBarController;
+ private String mDescriptionDialButtonStr;
+ private String mActionMenuDialpadButtonStr;
+ private ImageButton mFloatingActionButton;
+ private FloatingActionButtonController mFloatingActionButtonController;
+ /**
+ * Additional offset for FAB to be lowered when dialpad is open.
+ */
+ private int mFloatingActionButtonDialpadMarginBottomOffset;
+
private int mActionBarHeight;
- private int mFloatingActionButtonMarginBottom;
- private int mFloatingActionButtonDialpadMarginBottom;
private class OptionsPopupMenu extends PopupMenu {
public OptionsPopupMenu(Context context, View anchor) {
@@ -312,10 +344,8 @@
final Resources resources = getResources();
mActionBarHeight = resources.getDimensionPixelSize(R.dimen.action_bar_height);
- mFloatingActionButtonMarginBottom =
- resources.getDimensionPixelOffset(R.dimen.floating_action_button_margin_bottom);
- mFloatingActionButtonDialpadMarginBottom = resources.getDimensionPixelOffset(
- R.dimen.floating_action_button_dialpad_margin_bottom);
+ mDescriptionDialButtonStr = resources.getString(R.string.description_dial_button);
+ mActionMenuDialpadButtonStr = resources.getString(R.string.action_menu_dialpad_button);
setContentView(R.layout.dialtacts_activity);
getWindow().setBackgroundDrawable(null);
@@ -347,6 +377,19 @@
}
});
+ mIsLandscape = getResources().getConfiguration().orientation
+ == Configuration.ORIENTATION_LANDSCAPE;
+ final View floatingActionButtonContainer = findViewById(
+ R.id.floating_action_button_container);
+ mFloatingActionButton = (ImageButton) findViewById(R.id.floating_action_button);
+ int floatingActionButtonWidth = resources.getDimensionPixelSize(
+ R.dimen.floating_action_button_width);
+ mFloatingActionButton.setOnClickListener(this);
+ mFloatingActionButtonController = new FloatingActionButtonController(this,
+ floatingActionButtonContainer);
+ mFloatingActionButtonDialpadMarginBottomOffset = resources.getDimensionPixelOffset(
+ R.dimen.floating_action_button_dialpad_margin_bottom_offset);
+
ImageButton optionsMenuButton =
(ImageButton) searchEditTextLayout.findViewById(R.id.dialtacts_options_menu_button);
optionsMenuButton.setOnClickListener(this);
@@ -369,18 +412,34 @@
mActionBarController.restoreInstanceState(savedInstanceState);
}
+ mSlideIn = AnimationUtils.loadAnimation(this,
+ mIsLandscape ? R.anim.dialpad_slide_in_right : R.anim.dialpad_slide_in_bottom);
+ mSlideOut = AnimationUtils.loadAnimation(this,
+ mIsLandscape ? R.anim.dialpad_slide_out_right : R.anim.dialpad_slide_out_bottom);
+
+ mSlideOut.setAnimationListener(mSlideOutListener);
+
parentLayout = (RelativeLayout) findViewById(R.id.dialtacts_mainlayout);
parentLayout.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
parentLayout.setOnDragListener(new LayoutOnDragListener());
+ floatingActionButtonContainer.getViewTreeObserver().addOnGlobalLayoutListener(
+ new ViewTreeObserver.OnGlobalLayoutListener() {
+ @Override
+ public void onGlobalLayout() {
+ final ViewTreeObserver observer = floatingActionButtonContainer
+ .getViewTreeObserver();
+ if (!observer.isAlive()) {
+ return;
+ }
+ observer.removeOnGlobalLayoutListener(this);
+ int screenWidth = parentLayout.getWidth();
+ mFloatingActionButtonController.setScreenWidth(screenWidth);
+ updateFloatingActionButtonControllerAlignment(false /* animate */);
+ }
+ });
setupActivityOverlay();
- mFloatingActionButtonContainer = findViewById(R.id.floating_action_button_container);
- ViewUtil.setupFloatingActionButton(mFloatingActionButtonContainer, getResources());
-
- mFloatingActionButton = (ImageButton) findViewById(R.id.floating_action_button);
- mFloatingActionButton.setOnClickListener(this);
-
mDialerDatabaseHelper = DatabaseHelperManager.getDatabaseHelper(this);
SmartDialPrefix.initializeNanpSettings(this);
}
@@ -413,6 +472,7 @@
mFirstLaunch = false;
prepareVoiceSearchButton();
mDialerDatabaseHelper.startSmartDialUpdateThread();
+ updateFloatingActionButtonControllerAlignment(false /* animate */);
}
@Override
@@ -583,10 +643,11 @@
* Callback from child DialpadFragment when the dialpad is shown.
*/
public void onDialpadShown() {
- updateFloatingActionButton();
+ mFloatingActionButton.setImageResource(R.drawable.fab_ic_call);
+ mFloatingActionButton.setContentDescription(mDescriptionDialButtonStr);
+ updateFloatingActionButtonControllerAlignment(mDialpadFragment.getAnimate());
if (mDialpadFragment.getAnimate()) {
- Animation slideIn = AnimationUtils.loadAnimation(this, R.anim.slide_in);
- mDialpadFragment.getView().startAnimation(slideIn);
+ mDialpadFragment.getView().startAnimation(mSlideIn);
} else {
mDialpadFragment.setYFraction(0);
}
@@ -613,16 +674,12 @@
mDialpadFragment.setAnimate(animate);
updateSearchFragmentPosition();
- updateFloatingActionButton();
+ mFloatingActionButton.setImageResource(R.drawable.fab_ic_dial);
+ mFloatingActionButton.setContentDescription(mActionMenuDialpadButtonStr);
+
+ updateFloatingActionButtonControllerAlignment(animate);
if (animate) {
- Animation slideOut = AnimationUtils.loadAnimation(this, R.anim.slide_out);
- slideOut.setAnimationListener(new AnimationListenerAdapter() {
- @Override
- public void onAnimationEnd(Animation animation) {
- commitDialpadFragmentHide();
- }
- });
- mDialpadFragment.getView().startAnimation(slideOut);
+ mDialpadFragment.getView().startAnimation(mSlideOut);
} else {
commitDialpadFragmentHide();
}
@@ -954,7 +1011,7 @@
@Override
public void setFloatingActionButtonVisible(boolean visible) {
- mFloatingActionButtonContainer.setVisibility(visible ? View.VISIBLE : View.GONE);
+ mFloatingActionButtonController.setVisible(visible);
}
private boolean phoneIsInUse() {
@@ -1051,15 +1108,22 @@
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-
+ // Only scroll the button when the first tab is selected. The button should scroll from
+ // the middle to right position only on the transition from the first tab to the second
+ // tab.
+ if (position == ListsFragment.TAB_INDEX_SPEED_DIAL && !mIsLandscape) {
+ mFloatingActionButtonController.onPageScrolled(positionOffset);
+ }
}
@Override
public void onPageSelected(int position) {
mCurrentTabPosition = position;
- // If the dialpad is showing, the floating action button should always be middle aligned.
- if (!mIsDialpadShown) {
- alignFloatingActionButtonByTab(mCurrentTabPosition);
+ // Prevents jittery movement when clicking on tabs.
+ if (mCurrentTabPosition != ListsFragment.TAB_INDEX_SPEED_DIAL) {
+ mFloatingActionButtonController.manuallyTranslate(
+ mFloatingActionButtonController.getTranslationXForAlignment(
+ FloatingActionButtonController.ALIGN_RIGHT), 0);
}
}
@@ -1067,56 +1131,6 @@
public void onPageScrollStateChanged(int state) {
}
- private void updateFloatingActionButton() {
- if (mIsDialpadShown) {
- mFloatingActionButton.setImageResource(R.drawable.fab_ic_call);
- mFloatingActionButton.setContentDescription(
- getResources().getString(R.string.description_dial_button));
- alignFloatingActionButtonMiddle();
- } else {
- mFloatingActionButton.setImageResource(R.drawable.fab_ic_dial);
- mFloatingActionButton.setContentDescription(
- getResources().getString(R.string.action_menu_dialpad_button));
- alignFloatingActionButtonByTab(mCurrentTabPosition);
- }
- }
-
- private void alignFloatingActionButtonByTab(int position) {
- if (position == ListsFragment.TAB_INDEX_SPEED_DIAL) {
- alignFloatingActionButtonMiddle();
- } else {
- alignFloatingActionButtonRight();
- }
- }
-
- private void alignFloatingActionButtonRight() {
- final RelativeLayout.LayoutParams params =
- (RelativeLayout.LayoutParams) mFloatingActionButtonContainer.getLayoutParams();
- params.removeRule(RelativeLayout.CENTER_HORIZONTAL);
- params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
- updateFloatingActionButtonMargin(params);
- mFloatingActionButtonContainer.setLayoutParams(params);
- }
-
- private void alignFloatingActionButtonMiddle() {
- final RelativeLayout.LayoutParams params =
- (RelativeLayout.LayoutParams) mFloatingActionButtonContainer.getLayoutParams();
- params.removeRule(RelativeLayout.ALIGN_PARENT_RIGHT);
- params.addRule(RelativeLayout.CENTER_HORIZONTAL);
- updateFloatingActionButtonMargin(params);
- mFloatingActionButtonContainer.setLayoutParams(params);
- }
-
- private void updateFloatingActionButtonMargin(RelativeLayout.LayoutParams params) {
- params.setMarginsRelative(
- params.getMarginStart(),
- params.topMargin,
- params.getMarginEnd(),
- mIsDialpadShown ?
- mFloatingActionButtonDialpadMarginBottom :
- mFloatingActionButtonMarginBottom);
- }
-
private TelephonyManager getTelephonyManager() {
return (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
}
@@ -1144,4 +1158,29 @@
public void setActionBarHideOffset(int hideOffset) {
getActionBar().setHideOffset(hideOffset);
}
+
+ /**
+ * Updates controller based on currently known information.
+ *
+ * @param animate Whether or not to animate the transition.
+ */
+ private void updateFloatingActionButtonControllerAlignment(boolean animate) {
+ int align;
+ if (mIsDialpadShown) {
+ align = mIsLandscape ? FloatingActionButtonController.ALIGN_QUARTER_RIGHT
+ : FloatingActionButtonController.ALIGN_MIDDLE;
+ } else {
+ if (!mIsLandscape) {
+ align = mCurrentTabPosition == ListsFragment.TAB_INDEX_SPEED_DIAL
+ ? FloatingActionButtonController.ALIGN_MIDDLE
+ : FloatingActionButtonController.ALIGN_RIGHT;
+ } else {
+ align = FloatingActionButtonController.ALIGN_RIGHT;
+ }
+ }
+ mFloatingActionButtonController.align(align,
+ 0 /* offsetX */,
+ mIsDialpadShown ? mFloatingActionButtonDialpadMarginBottomOffset : 0 /* offsetY */,
+ animate);
+ }
}
diff --git a/src/com/android/dialer/PhoneCallDetailsHelper.java b/src/com/android/dialer/PhoneCallDetailsHelper.java
index ab59972..2604bf0 100644
--- a/src/com/android/dialer/PhoneCallDetailsHelper.java
+++ b/src/com/android/dialer/PhoneCallDetailsHelper.java
@@ -28,13 +28,13 @@
import android.view.View;
import android.widget.TextView;
-import com.android.contacts.common.test.NeededForTesting;
+import com.android.contacts.common.testing.NeededForTesting;
import com.android.contacts.common.util.PhoneNumberHelper;
import com.android.dialer.calllog.CallTypeHelper;
import com.android.dialer.calllog.ContactInfo;
import com.android.dialer.calllog.PhoneNumberDisplayHelper;
import com.android.dialer.calllog.PhoneNumberUtilsWrapper;
-import com.google.android.collect.Lists;
+import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java
index 8af3b82..67cadb1 100644
--- a/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java
+++ b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java
@@ -41,34 +41,13 @@
private final LayoutInflater mLayoutInflater;
private final CallTypeHelper mCallTypeHelper;
private final PhoneCallDetails[] mPhoneCallDetails;
- /** Whether the voicemail controls are shown. */
- private final boolean mShowVoicemail;
- /** Whether the call and SMS controls are shown. */
- private final boolean mShowCallAndSms;
- /** The controls that are shown on top of the history list. */
- private final View mControls;
- /** The listener to changes of focus of the header. */
- private View.OnFocusChangeListener mHeaderFocusChangeListener =
- new View.OnFocusChangeListener() {
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- // When the header is focused, focus the controls above it instead.
- if (hasFocus) {
- mControls.requestFocus();
- }
- }
- };
public CallDetailHistoryAdapter(Context context, LayoutInflater layoutInflater,
- CallTypeHelper callTypeHelper, PhoneCallDetails[] phoneCallDetails,
- boolean showVoicemail, boolean showCallAndSms, View controls) {
+ CallTypeHelper callTypeHelper, PhoneCallDetails[] phoneCallDetails) {
mContext = context;
mLayoutInflater = layoutInflater;
mCallTypeHelper = callTypeHelper;
mPhoneCallDetails = phoneCallDetails;
- mShowVoicemail = showVoicemail;
- mShowCallAndSms = showCallAndSms;
- mControls = controls;
}
@Override
@@ -117,14 +96,6 @@
final View header = convertView == null
? mLayoutInflater.inflate(R.layout.call_detail_history_header, parent, false)
: convertView;
- // Voicemail controls are only shown in the main UI if there is a voicemail.
- View voicemailContainer = header.findViewById(R.id.header_voicemail_container);
- voicemailContainer.setVisibility(mShowVoicemail ? View.VISIBLE : View.GONE);
- // Call and SMS controls are only shown in the main UI if there is a known number.
- View callAndSmsContainer = header.findViewById(R.id.header_call_and_sms_container);
- callAndSmsContainer.setVisibility(mShowCallAndSms ? View.VISIBLE : View.GONE);
- header.setFocusable(true);
- header.setOnFocusChangeListener(mHeaderFocusChangeListener);
return header;
}
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index 4ef1977..4b1aeab 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -122,12 +122,6 @@
/** The size of the cache of contact info. */
private static final int CONTACT_INFO_CACHE_SIZE = 100;
- /** Localized string representing the word "Today". */
- private final CharSequence mTodayLabel = DateUtils.getTodayString();
-
- /** Localized string representing the word "Yesterday". */
- private final CharSequence mYesterdayLabel = DateUtils.getYesterdayString();
-
/** Constant used to indicate no row is expanded. */
private static final long NONE_EXPANDED = -1;
@@ -1322,9 +1316,9 @@
*/
private CharSequence getGroupDescription(int group) {
if (group == CallLogGroupBuilder.DAY_GROUP_TODAY) {
- return mTodayLabel;
+ return mContext.getResources().getString(R.string.call_log_header_today);
} else if (group == CallLogGroupBuilder.DAY_GROUP_YESTERDAY) {
- return mYesterdayLabel;
+ return mContext.getResources().getString(R.string.call_log_header_yesterday);
} else if (group == CallLogGroupBuilder.DAY_GROUP_LAST_WEEK) {
return mContext.getResources().getString(R.string.call_log_header_last_week);
} else {
diff --git a/src/com/android/dialer/calllog/CallLogListItemViews.java b/src/com/android/dialer/calllog/CallLogListItemViews.java
index 762b8ff..ade720f 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViews.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViews.java
@@ -22,7 +22,7 @@
import android.widget.QuickContactBadge;
import android.widget.TextView;
-import com.android.contacts.common.test.NeededForTesting;
+import com.android.contacts.common.testing.NeededForTesting;
import com.android.dialer.PhoneCallDetailsViews;
import com.android.dialer.R;
diff --git a/src/com/android/dialer/calllog/CallTypeIconsView.java b/src/com/android/dialer/calllog/CallTypeIconsView.java
index 125ba6f..7c8afee 100644
--- a/src/com/android/dialer/calllog/CallTypeIconsView.java
+++ b/src/com/android/dialer/calllog/CallTypeIconsView.java
@@ -27,7 +27,7 @@
import android.util.AttributeSet;
import android.view.View;
-import com.android.contacts.common.test.NeededForTesting;
+import com.android.contacts.common.testing.NeededForTesting;
import com.android.dialer.R;
import com.google.common.collect.Lists;
diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java
index 9e2b8d0..d9dc735 100644
--- a/src/com/android/dialer/list/SearchFragment.java
+++ b/src/com/android/dialer/list/SearchFragment.java
@@ -94,11 +94,6 @@
mHideDialpadDuration = res.getInteger(R.integer.dialpad_slide_out_duration);
final View parentView = getView();
- parentView.setPaddingRelative(
- parentView.getPaddingStart(),
- mActionBarHeight,
- parentView.getPaddingEnd(),
- parentView.getPaddingBottom());
final ListView listView = getListView();
@@ -175,19 +170,26 @@
*/
public void updatePosition(boolean animate) {
// Use negative shadow height instead of 0 to account for the 9-patch's shadow.
- int translationValue = mActivity.isDialpadShown() ? -mActionBarHeight : -mShadowHeight;
-
+ int startTranslationValue =
+ mActivity.isDialpadShown() ? mActionBarHeight - mShadowHeight: -mShadowHeight;
+ int endTranslationValue = 0;
+ // Prevents ListView from being translated down after a rotation when the ActionBar is up.
+ if (animate || mActivity.isActionBarShowing()) {
+ endTranslationValue =
+ mActivity.isDialpadShown() ? 0 : mActionBarHeight -mShadowHeight;
+ }
if (animate) {
Interpolator interpolator =
mActivity.isDialpadShown() ? AnimUtils.EASE_IN : AnimUtils.EASE_OUT ;
int duration =
mActivity.isDialpadShown() ? mShowDialpadDuration : mHideDialpadDuration;
+ getView().setTranslationY(startTranslationValue);
getView().animate()
- .translationY(translationValue)
+ .translationY(endTranslationValue)
.setInterpolator(interpolator)
.setDuration(duration);
} else {
- getView().setTranslationY(translationValue);
+ getView().setTranslationY(endTranslationValue);
}
// There is padding which should only be applied when the dialpad is not shown.
diff --git a/src/com/android/dialer/util/AsyncTaskExecutors.java b/src/com/android/dialer/util/AsyncTaskExecutors.java
index 322a435..a59af3e 100644
--- a/src/com/android/dialer/util/AsyncTaskExecutors.java
+++ b/src/com/android/dialer/util/AsyncTaskExecutors.java
@@ -19,7 +19,7 @@
import android.os.AsyncTask;
import android.os.Looper;
-import com.android.contacts.common.test.NeededForTesting;
+import com.android.contacts.common.testing.NeededForTesting;
import com.google.common.base.Preconditions;
import java.util.concurrent.Executor;
diff --git a/src/com/android/dialer/util/ExpirableCache.java b/src/com/android/dialer/util/ExpirableCache.java
index 94ea6aa..00ebd16 100644
--- a/src/com/android/dialer/util/ExpirableCache.java
+++ b/src/com/android/dialer/util/ExpirableCache.java
@@ -18,7 +18,7 @@
import android.util.LruCache;
-import com.android.contacts.common.test.NeededForTesting;
+import com.android.contacts.common.testing.NeededForTesting;
import java.util.concurrent.atomic.AtomicInteger;
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
index 826dec0..33ae5c8 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
@@ -423,8 +423,14 @@
getAudioManager().setSpeakerphoneOn(on);
if (on) {
mPlaybackSpeakerphone.setImageResource(R.drawable.ic_speakerphone_on);
+ // Speaker is now on, tapping button will turn it off.
+ mPlaybackSpeakerphone.setContentDescription(
+ mApplicationContext.getString(R.string.voicemail_speaker_off));
} else {
mPlaybackSpeakerphone.setImageResource(R.drawable.ic_speakerphone_off);
+ // Speaker is now off, tapping button will turn it on.
+ mPlaybackSpeakerphone.setContentDescription(
+ mApplicationContext.getString(R.string.voicemail_speaker_on));
}
}
diff --git a/src/com/android/dialer/widget/OverlappingPaneLayout.java b/src/com/android/dialer/widget/OverlappingPaneLayout.java
index b513cd2..0b11e88 100644
--- a/src/com/android/dialer/widget/OverlappingPaneLayout.java
+++ b/src/com/android/dialer/widget/OverlappingPaneLayout.java
@@ -982,6 +982,9 @@
@Override
public void onViewReleased(View releasedChild, float xvel, float yvel) {
+ if (releasedChild == null) {
+ return;
+ }
final LayoutParams lp = (LayoutParams) releasedChild.getLayoutParams();
int top = getPaddingTop() + lp.topMargin;
diff --git a/src/com/android/dialer/widget/SearchEditTextLayout.java b/src/com/android/dialer/widget/SearchEditTextLayout.java
index f3e355d..3dcbc4b 100644
--- a/src/com/android/dialer/widget/SearchEditTextLayout.java
+++ b/src/com/android/dialer/widget/SearchEditTextLayout.java
@@ -230,7 +230,9 @@
mVoiceSearchButtonView.setVisibility(collapsedViewVisibility);
mOverflowButtonView.setVisibility(collapsedViewVisibility);
mBackButtonView.setVisibility(expandedViewVisibility);
- mExpandedSearchBox.setVisibility(expandedViewVisibility);
+ // TODO: Prevents keyboard from jumping up in landscape mode after exiting the
+ // SearchFragment when the query string is empty. More elegant fix?
+ //mExpandedSearchBox.setVisibility(expandedViewVisibility);
mClearButtonView.setVisibility(expandedViewVisibility);
}
diff --git a/tests/res/layout/fill_call_log_test.xml b/tests/res/layout/fill_call_log_test.xml
index 704b9c6..6de9b91 100644
--- a/tests/res/layout/fill_call_log_test.xml
+++ b/tests/res/layout/fill_call_log_test.xml
@@ -20,7 +20,7 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:gravity="center_horizontal"
+ android:gravity="left"
>
<TextView
android:layout_width="match_parent"
@@ -53,4 +53,134 @@
android:indeterminate="false"
android:visibility="gone"
/>
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/add_custom_entry"
+ />
+ <RadioGroup
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+ <RadioButton
+ android:id="@+id/call_type_incoming"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/call_type_incoming" />
+ <RadioButton
+ android:id="@+id/call_type_missed"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/call_type_missed" />
+ <RadioButton
+ android:id="@+id/call_type_outgoing"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/call_type_outgoing" />
+ </RadioGroup>
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="left"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/call_date"
+ />
+ <TextView
+ android:id="@+id/call_date"
+ android:paddingStart="16dp"
+ android:layout_width="120dp"
+ android:layout_height="wrap_content"
+ />
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/edit"
+ android:onClick="showDatePickerDialog" />
+ </LinearLayout>
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="left"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/call_time"
+ />
+ <TextView
+ android:id="@+id/call_time"
+ android:paddingStart="16dp"
+ android:layout_width="120dp"
+ android:layout_height="wrap_content"
+ />
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/edit"
+ android:onClick="showTimePickerDialog" />
+ </LinearLayout>
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/call_presentation"
+ />
+ <RadioGroup
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+ <RadioButton
+ android:id="@+id/presentation_allowed"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/presentation_allowed"
+ android:textSize="9sp" />
+ <RadioButton
+ android:id="@+id/presentation_restricted"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/presentation_restricted"
+ android:textSize="9sp" />
+ <RadioButton
+ android:id="@+id/presentation_unknown"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/presentation_unknown"
+ android:textSize="9sp" />
+ <RadioButton
+ android:id="@+id/presentation_payphone"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/presentation_payphone"
+ android:textSize="9sp" />
+ </RadioGroup>
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="left"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/number"
+ />
+ <EditText
+ android:id="@+id/phone_number"
+ android:layout_width="180dp"
+ android:layout_height="wrap_content"
+ android:inputType="phone"
+ />
+ </LinearLayout>
+ <Button
+ android:id="@+id/add_custom"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/addToCallLogButton"
+ android:onClick="addManualEntry"
+ />
</LinearLayout>
diff --git a/tests/res/values/donottranslate_strings.xml b/tests/res/values/donottranslate_strings.xml
index ceba5ea..bdeb304 100644
--- a/tests/res/values/donottranslate_strings.xml
+++ b/tests/res/values/donottranslate_strings.xml
@@ -37,5 +37,17 @@
<string name="numberOfCallLogEntries">Number of call log entries to add:</string>
<string name="addedLogEntriesToast">Added %1$d call log entries.</string>
<string name="noLogEntriesToast">No entries in the call log yet. Need at least one record for the template. Or use random numbers.</string>
-
+ <string name="add_custom_entry">Add custom call log entry:</string>
+ <string name="call_type_incoming">Incoming</string>
+ <string name="call_type_missed">Missed</string>
+ <string name="call_type_outgoing">Outgoing</string>
+ <string name="call_date">Call date</string>
+ <string name="call_time">Call time</string>
+ <string name="edit">Edit</string>
+ <string name="number">Number</string>
+ <string name="call_presentation">Presentation</string>
+ <string name="presentation_allowed">Allowed</string>
+ <string name="presentation_restricted">Restricted</string>
+ <string name="presentation_unknown">Unknown</string>
+ <string name="presentation_payphone">Payphone</string>
</resources>
diff --git a/tests/src/com/android/dialer/CallDetailActivityTest.java b/tests/src/com/android/dialer/CallDetailActivityTest.java
index 1ad17c4..1e16fe4 100644
--- a/tests/src/com/android/dialer/CallDetailActivityTest.java
+++ b/tests/src/com/android/dialer/CallDetailActivityTest.java
@@ -219,7 +219,6 @@
mFakeAsyncTaskExecutor.runTask(PREPARE_MEDIA_PLAYER);
mTestUtils.clickButton(mActivityUnderTest, R.id.playback_speakerphone);
mTestUtils.clickButton(mActivityUnderTest, R.id.playback_start_stop);
- mTestUtils.clickButton(mActivityUnderTest, R.id.call_and_sms_main_action);
Thread.sleep(2000);
// TODO: Suppressed the test for now, because I'm looking for an easy way to say "the audio
// is not playing at this point", and I can't find it without doing dirty things.
diff --git a/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java b/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
index 30fd0e2..679335e 100644
--- a/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
+++ b/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
@@ -112,8 +112,6 @@
setPhoneCallDetailsWithNumber("14125551212",
Calls.PRESENTATION_ALLOWED, "1-412-555-1212");
assertTrue(mViews.callLocationAndDate.getText().toString().contains("Yesterday"));
- assertTrue(mViews.callLocationAndDate.getText().toString().contains(
- "<font color='#33b5e5'><b>Yesterday</b></font>"));
}
/** Asserts that a char sequence is actually a Spanned corresponding to the expected HTML. */
diff --git a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
index 8225d13..f3679d4 100644
--- a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
@@ -68,7 +68,7 @@
mCursor = new MatrixCursor(CallLogQuery._PROJECTION);
mCursor.moveToFirst();
// The views into which to store the data.
- mView = new View(getContext());
+ mView = new CallLogListItemView(getContext());
mView.setTag(CallLogListItemViews.createForTest(getContext()));
}
diff --git a/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java b/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
index 2c0fe0e..964d8a2 100644
--- a/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
@@ -91,11 +91,6 @@
private Random mRnd;
- // References to the icons bitmaps used to build the list are stored in a
- // map mIcons. The keys to retrieve the icons are:
- // Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE and Calls.MISSED_TYPE.
- private HashMap<Integer, Bitmap> mCallTypeIcons;
-
// An item in the call list. All the methods performing checks use it.
private CallLogListItemViews mItem;
// The list of views representing the data in the DB. View are in
@@ -133,7 +128,6 @@
mAdapter.stopRequestProcessing();
mParentView = new FrameLayout(mActivity);
mCursor = new MatrixCursor(CallLogQuery._PROJECTION);
- buildIconMap();
}
/**
@@ -412,17 +406,6 @@
return d.getBitmap();
}
- /**
- * Fetch all the icons we need in tests from the contacts app and store them in a map.
- */
- private void buildIconMap() {
- mCallTypeIcons = new HashMap<Integer, Bitmap>(3);
-
- mCallTypeIcons.put(Calls.INCOMING_TYPE, getBitmap("ic_call_incoming_holo_dark"));
- mCallTypeIcons.put(Calls.MISSED_TYPE, getBitmap("ic_call_missed_holo_dark"));
- mCallTypeIcons.put(Calls.OUTGOING_TYPE, getBitmap("ic_call_outgoing_holo_dark"));
- }
-
//
// HELPERS to build/update the call entries (views) from the DB.
//
diff --git a/tests/src/com/android/dialer/database/SmartDialPrefixTest.java b/tests/src/com/android/dialer/database/SmartDialPrefixTest.java
index 558be26..9cb842e 100644
--- a/tests/src/com/android/dialer/database/SmartDialPrefixTest.java
+++ b/tests/src/com/android/dialer/database/SmartDialPrefixTest.java
@@ -21,6 +21,8 @@
import android.test.suitebuilder.annotation.SmallTest;
import android.test.suitebuilder.annotation.Suppress;
import android.test.AndroidTestCase;
+import android.text.TextUtils;
+import android.util.Log;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
@@ -37,7 +39,7 @@
/**
* To run this test, use the command:
- * adb shell am instrument -w -e class com.android.dialer.dialpad.SmartDialPrefixTest /
+ * adb shell am instrument -w -e class com.android.dialer.database.SmartDialPrefixTest /
* com.android.dialer.tests/android.test.InstrumentationTestRunner
*/
@SmallTest
@@ -145,6 +147,12 @@
assertNotNull(contactCursor);
assertNotNull(nameCursor);
+ if (TextUtils.isEmpty(number)) {
+ // Add a dummy number, otherwise DialerDatabaseHelper simply ignores the entire
+ // row if the number is empty
+ number = "0";
+ }
+
contactCursor.addRow(new Object[]{id, "", "", number, contactId, lookupKey, displayName,
photoId, lastTimeUsed, timesUsed, starred, isSuperPrimary, inVisibleGroup,
isPrimary});
@@ -292,7 +300,8 @@
// 6543 doesn't match
assertFalse(getLooseMatchesFromDb("6543").contains(martinjuniorharry));
- assertEquals(7, mTestHelper.countPrefixTableRows(db));
+ // 7 actual rows, + 1 for the dummy number we added
+ assertEquals(8, mTestHelper.countPrefixTableRows(db));
}
public void testPutForInitialMatchesForLongTokenNames() {
diff --git a/tests/src/com/android/dialer/tests/calllog/FillCallLogTestActivity.java b/tests/src/com/android/dialer/tests/calllog/FillCallLogTestActivity.java
index b1b8e2f..3a1682e 100644
--- a/tests/src/com/android/dialer/tests/calllog/FillCallLogTestActivity.java
+++ b/tests/src/com/android/dialer/tests/calllog/FillCallLogTestActivity.java
@@ -17,7 +17,11 @@
package com.android.dialer.tests.calllog;
import android.app.Activity;
+import android.app.DatePickerDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
import android.app.LoaderManager;
+import android.app.TimePickerDialog;
import android.content.ContentProviderClient;
import android.content.ContentValues;
import android.content.CursorLoader;
@@ -27,16 +31,21 @@
import android.os.Bundle;
import android.os.RemoteException;
import android.provider.CallLog.Calls;
+import android.text.format.DateFormat;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
+import android.widget.DatePicker;
import android.widget.ProgressBar;
+import android.widget.RadioButton;
import android.widget.TextView;
+import android.widget.TimePicker;
import android.widget.Toast;
import com.android.dialer.tests.R;
+import java.util.Calendar;
import java.util.Random;
/**
@@ -56,6 +65,22 @@
private Button mAddButton;
private ProgressBar mProgressBar;
private CheckBox mUseRandomNumbers;
+ private RadioButton mCallTypeIncoming;
+ private RadioButton mCallTypeMissed;
+ private RadioButton mCallTypeOutgoing;
+ private RadioButton mPresentationAllowed;
+ private RadioButton mPresentationRestricted;
+ private RadioButton mPresentationUnknown;
+ private RadioButton mPresentationPayphone;
+ private TextView mCallDate;
+ private TextView mCallTime;
+ private TextView mPhoneNumber;
+
+ private int mCallTimeHour;
+ private int mCallTimeMinute;
+ private int mCallDateYear;
+ private int mCallDateMonth;
+ private int mCallDateDay;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -88,6 +113,27 @@
mProgressBar.setVisibility(View.VISIBLE);
}
});
+
+ mCallTypeIncoming = (RadioButton) findViewById(R.id.call_type_incoming);
+ mCallTypeMissed = (RadioButton) findViewById(R.id.call_type_missed);
+ mCallTypeOutgoing = (RadioButton) findViewById(R.id.call_type_outgoing);
+ mPresentationAllowed = (RadioButton) findViewById(R.id.presentation_allowed);
+ mPresentationPayphone = (RadioButton) findViewById(R.id.presentation_payphone);
+ mPresentationUnknown = (RadioButton) findViewById(R.id.presentation_unknown);
+ mPresentationRestricted = (RadioButton) findViewById(R.id.presentation_restricted);
+ mCallTime = (TextView) findViewById(R.id.call_time);
+ mCallDate = (TextView) findViewById(R.id.call_date);
+ mPhoneNumber = (TextView) findViewById(R.id.phone_number);
+
+ // Use the current time as the default values for the picker
+ final Calendar c = Calendar.getInstance();
+ mCallTimeHour = c.get(Calendar.HOUR_OF_DAY);
+ mCallTimeMinute = c.get(Calendar.MINUTE);
+ mCallDateYear = c.get(Calendar.YEAR);
+ mCallDateMonth = c.get(Calendar.MONTH);
+ mCallDateDay = c.get(Calendar.DAY_OF_MONTH);
+ setDisplayDate();
+ setDisplayTime();
}
/**
@@ -306,4 +352,122 @@
public void updateCount(Integer count) {
mProgressBar.setProgress(count);
}
+
+ /**
+ * Determines the call type for a manually entered call.
+ *
+ * @return Call type.
+ */
+ private int getManualCallType() {
+ if (mCallTypeIncoming.isChecked()) {
+ return Calls.INCOMING_TYPE;
+ } else if (mCallTypeOutgoing.isChecked()) {
+ return Calls.OUTGOING_TYPE;
+ } else {
+ return Calls.MISSED_TYPE;
+ }
+ }
+
+ /**
+ * Determines the presentation for a manually entered call.
+ *
+ * @return Presentation.
+ */
+ private int getManualPresentation() {
+ if (mPresentationAllowed.isChecked()) {
+ return Calls.PRESENTATION_ALLOWED;
+ } else if (mPresentationPayphone.isChecked()) {
+ return Calls.PRESENTATION_PAYPHONE;
+ } else if (mPresentationRestricted.isChecked()) {
+ return Calls.PRESENTATION_RESTRICTED;
+ } else {
+ return Calls.PRESENTATION_UNKNOWN;
+ }
+ }
+
+ /**
+ * Shows a time picker dialog, storing the results in the time field.
+ */
+ public void showTimePickerDialog(View v) {
+ DialogFragment newFragment = new TimePickerFragment();
+ newFragment.show(getFragmentManager(),"timePicker");
+ }
+
+ /**
+ * Helper class to display time picker and store the hour/minute.
+ */
+ public class TimePickerFragment extends DialogFragment
+ implements TimePickerDialog.OnTimeSetListener {
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Create a new instance of TimePickerDialog and return it
+ return new TimePickerDialog(getActivity(), this, mCallTimeHour, mCallTimeMinute,
+ DateFormat.is24HourFormat(getActivity()));
+ }
+
+ public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
+ mCallTimeHour = hourOfDay;
+ mCallTimeMinute = minute;
+ setDisplayTime();
+ }
+ }
+
+ /**
+ * Sets the call time TextView to the current selected time.
+ */
+ private void setDisplayTime() {
+ mCallTime.setText(String.format("%02d:%02d", mCallTimeHour, mCallTimeMinute));
+ }
+
+ /**
+ * Sets the call date Textview to the current selected date
+ */
+ private void setDisplayDate() {
+ mCallDate.setText(String.format("%04d-%02d-%02d", mCallDateYear, mCallDateMonth,
+ mCallDateDay));
+ }
+
+ /**
+ * Shows a date picker dialog.
+ */
+ public void showDatePickerDialog(View v) {
+ DialogFragment newFragment = new DatePickerFragment();
+ newFragment.show(getFragmentManager(),"datePicker");
+ }
+
+ /**
+ * Helper class to show a date picker.
+ */
+ public class DatePickerFragment extends DialogFragment
+ implements DatePickerDialog.OnDateSetListener {
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Create a new instance of DatePickerDialog and return it
+ return new DatePickerDialog(getActivity(), this, mCallDateYear, mCallDateMonth,
+ mCallDateDay);
+ }
+
+ public void onDateSet(DatePicker view, int year, int month, int day) {
+ mCallDateYear = year;
+ mCallDateMonth = month;
+ mCallDateDay = day;
+ setDisplayDate();
+ }
+ }
+
+ /**
+ * OnClick handler for the button that adds a manual call log entry to the call log.
+ *
+ * @param v Calling view.
+ */
+ public void addManualEntry(View v) {
+ Calendar dateTime = Calendar.getInstance();
+ dateTime.set(mCallDateYear, mCallDateMonth, mCallDateDay, mCallTimeHour, mCallTimeMinute);
+
+ Calls.addCall(null, this, mPhoneNumber.getText().toString(), getManualPresentation(),
+ getManualCallType(), dateTime.getTimeInMillis(), RNG.nextInt(60 * 60));
+
+ }
}