Merge "Hide scrollbar in search mode when no contacts in Phone" into jb-dev
diff --git a/res/drawable/gray_action_bar_background.xml b/res/drawable/gray_action_bar_background.xml
index 7ebf604..4192313 100644
--- a/res/drawable/gray_action_bar_background.xml
+++ b/res/drawable/gray_action_bar_background.xml
@@ -14,8 +14,9 @@
      limitations under the License.
 -->
 
-<selector xmlns:android="http://schemas.android.com/apk/res/android"
-          android:exitFadeDuration="@android:integer/config_mediumAnimTime">
-    <item android:state_pressed="true" android:drawable="@drawable/action_bar_item_pressed_holo_light"/>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ab_solid_custom_blue_inverse_holo"/>
     <item android:drawable="@drawable/ab_stacked_solid_inverse_holo" />
 </selector>
diff --git a/res/layout-sw580dp-w940dp/group_browse_list_account_header.xml b/res/layout-sw580dp-w940dp/group_browse_list_account_header.xml
new file mode 100644
index 0000000..af60c79
--- /dev/null
+++ b/res/layout-sw580dp-w940dp/group_browse_list_account_header.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <!-- Only visible when it is the first element in the list. -->
+    <View
+        android:id="@+id/header_extra_top_padding"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/list_header_extra_top_padding" />
+
+    <include layout="@layout/group_account_header_horizontal" />
+
+</LinearLayout>
diff --git a/res/layout-sw580dp/group_browse_list_account_header.xml b/res/layout-sw580dp/group_browse_list_account_header.xml
new file mode 100644
index 0000000..cca6ed9
--- /dev/null
+++ b/res/layout-sw580dp/group_browse_list_account_header.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <!-- Only visible when it is the first element in the list. -->
+    <View
+        android:id="@+id/header_extra_top_padding"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/list_header_extra_top_padding" />
+
+    <include layout="@layout/group_account_header_vertical" />
+
+</LinearLayout>
diff --git a/res/layout-sw580dp/people_activity.xml b/res/layout-sw580dp/people_activity.xml
index 93f7795..42c6afc 100644
--- a/res/layout-sw580dp/people_activity.xml
+++ b/res/layout-sw580dp/people_activity.xml
@@ -78,7 +78,7 @@
                 class="com.android.contacts.detail.ContactLoaderFragment"
                 android:layout_height="0dip"
                 android:layout_width="0dip"
-                android:visibility="gone"/>
+                android:visibility="gone" />
         </view>
 
         <!-- Right panel detail view for Groups tab -->
@@ -100,42 +100,21 @@
                 android:visibility="gone" />
         </view>
 
-        <!-- Two-panel view under the Favorites tab -->
-        <LinearLayout
+        <!-- Single panel view under the Favorites tab (Strequent) -->
+        <FrameLayout
             android:id="@+id/favorites_view"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@drawable/list_background_holo"
-            android:baselineAligned="false">
+            android:layout_height="match_parent">
 
-            <!-- Starred -->
-            <FrameLayout
-                android:layout_width="0dip"
-                android:layout_height="match_parent"
-                android:layout_weight="10"
-                android:background="@drawable/panel_favorites_holo_light">
-
-                <fragment
-                    android:id="@+id/favorites_fragment"
-                    class="com.android.contacts.list.ContactTileListFragment"
-                    android:layout_height="match_parent"
-                    android:layout_width="match_parent"
-                    android:layout_marginRight="16dip"
-                    android:layout_marginLeft="16dip"/>
-
-            </FrameLayout>
-
-            <!-- Most Frequent -->
             <fragment
-                android:id="@+id/frequent_fragment"
-                class="com.android.contacts.list.ContactTileFrequentFragment"
-                android:layout_width="0dip"
+                android:id="@+id/favorites_fragment"
+                class="com.android.contacts.list.ContactTileListFragment"
                 android:layout_height="match_parent"
-                android:layout_weight="8"
-                android:layout_marginTop="16dip"
-                android:layout_marginRight="16dip"/>
+                android:layout_width="match_parent"
+                android:layout_marginRight="16dip"
+                android:layout_marginLeft="16dip" />
 
-        </LinearLayout>
+        </FrameLayout>
 
     </LinearLayout>
 
diff --git a/res/layout-sw580dp/search_header.xml b/res/layout-sw580dp/search_header.xml
index e543883..cf09190 100644
--- a/res/layout-sw580dp/search_header.xml
+++ b/res/layout-sw580dp/search_header.xml
@@ -14,29 +14,11 @@
      limitations under the License.
 -->
 
-<RelativeLayout
+<TextView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    style="DirectoryHeader"
-    android:layout_width="match_parent"
-    android:layout_height="56dip">
-    <TextView
-        android:id="@+id/totalContactsText"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content"
-        android:layout_centerVertical="true"
-        android:layout_alignParentLeft="true"
-        android:layout_marginLeft="8dip"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:textColor="?android:attr/textColorTertiary"
-        android:textStyle="bold" />
-
-    <ProgressBar
-        android:id="@+id/progress"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        style="?android:attr/progressBarStyleSmall"
-        android:layout_alignParentRight="true"
-        android:layout_centerVertical="true"
-        android:layout_marginRight="10dip" />
-
-</RelativeLayout>
+    android:id="@+id/totalContactsText"
+    android:minHeight="@dimen/contact_filter_header_min_height"
+    android:paddingTop="10dip"
+    android:textAppearance="?android:attr/textAppearanceSmall"
+    android:textColor="?android:attr/textColorTertiary"
+    android:textStyle="bold" />
diff --git a/res/layout-sw680dp/group_browse_list_account_header.xml b/res/layout-sw680dp/group_browse_list_account_header.xml
new file mode 100644
index 0000000..af60c79
--- /dev/null
+++ b/res/layout-sw680dp/group_browse_list_account_header.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <!-- Only visible when it is the first element in the list. -->
+    <View
+        android:id="@+id/header_extra_top_padding"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/list_header_extra_top_padding" />
+
+    <include layout="@layout/group_account_header_horizontal" />
+
+</LinearLayout>
diff --git a/res/layout/call_log_fragment.xml b/res/layout/call_log_fragment.xml
index 1ad71a4..9e88c49 100644
--- a/res/layout/call_log_fragment.xml
+++ b/res/layout/call_log_fragment.xml
@@ -20,7 +20,8 @@
     android:layout_height="match_parent"
     android:orientation="vertical"
     android:paddingBottom="?android:attr/actionBarSize"
-    android:divider="?android:attr/dividerHorizontal">
+    android:divider="?android:attr/dividerHorizontal"
+    android:showDividers="end">
 
     <FrameLayout
         android:id="@+id/voicemail_status"
@@ -34,8 +35,7 @@
     </FrameLayout>
     <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-    >
+        android:layout_height="match_parent">
         <ListView android:id="@android:id/list"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
diff --git a/res/layout/contact_list_content.xml b/res/layout/contact_list_content.xml
index 05f1930..b268102 100644
--- a/res/layout/contact_list_content.xml
+++ b/res/layout/contact_list_content.xml
@@ -33,21 +33,32 @@
         android:id="@+id/account_filter_header_container"
         layout="@layout/account_filter_header" />
 
-    <view
-        class="com.android.contacts.widget.PinnedHeaderListView"
-        android:id="@android:id/list"
+    <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="0dip"
-        android:layout_marginLeft="?attr/contact_browser_list_padding_left"
-        android:layout_marginRight="?attr/contact_browser_list_padding_right"
-        android:fastScrollEnabled="true"
-        android:fadingEdge="none"
-        android:layout_weight="1" />
+        android:layout_weight="1" >
+        <view
+            class="com.android.contacts.widget.PinnedHeaderListView"
+            android:id="@android:id/list"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="?attr/contact_browser_list_padding_left"
+            android:layout_marginRight="?attr/contact_browser_list_padding_right"
+            android:fastScrollEnabled="true"
+            android:fadingEdge="none" />
+        <ProgressBar
+            android:id="@+id/search_progress"
+            style="?android:attr/progressBarStyleLarge"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:visibility="gone" />
+    </FrameLayout>
 
-   <ViewStub
-       android:id="@+id/footer_stub"
-       android:layout="@layout/footer_panel"
-       android:layout_width="fill_parent"
-       android:layout_height="wrap_content" />
+    <ViewStub
+        android:id="@+id/footer_stub"
+        android:layout="@layout/footer_panel"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content" />
 
 </LinearLayout>
diff --git a/res/layout/directory_header.xml b/res/layout/directory_header.xml
index 8e845e0..fcd255e 100644
--- a/res/layout/directory_header.xml
+++ b/res/layout/directory_header.xml
@@ -15,46 +15,53 @@
 -->
 
 <!-- Layout used for list section separators. -->
-<LinearLayout
+<FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     style="@style/DirectoryHeader"
+    android:id="@+id/directory_header"
+    android:paddingLeft="?attr/list_item_padding_left"
+    android:paddingRight="?attr/list_item_padding_right"
+    android:minHeight="@dimen/list_section_divider_min_height"
+    android:layout_marginTop="@dimen/list_header_extra_top_padding"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:gravity="center_vertical"
-    android:minHeight="@dimen/list_section_divider_min_height"
-    android:background="@drawable/list_section_divider_holo_custom"
-    android:layout_marginTop="@dimen/list_header_extra_top_padding"
-    android:paddingLeft="?attr/list_item_padding_left"
-    android:paddingRight="?attr/list_item_padding_right">
-    <TextView
-        android:id="@+id/label"
-        android:layout_width="wrap_content"
+    >
+    <LinearLayout
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginLeft="8dip"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:textColor="@color/people_app_theme_color"
-        android:singleLine="true"
-        android:textStyle="bold"
-        android:textAllCaps="true" />
-    <TextView
-        android:id="@+id/display_name"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="8dip"
-        android:layout_marginRight="8dip"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:textColor="@color/people_app_theme_color"
-        android:singleLine="true"
-        android:textStyle="bold"
-        android:textAllCaps="true" />
-    <TextView
-        android:id="@+id/count"
-        android:paddingTop="1dip"
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:gravity="right"
-        android:singleLine="true"
-        android:textSize="12sp"
-        android:textColor="@color/contact_count_text_color" />
-</LinearLayout>
+        android:gravity="center_vertical"
+        android:background="@drawable/list_section_divider_holo_custom"
+        >
+        <TextView
+            android:id="@+id/label"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dip"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textColor="@color/people_app_theme_color"
+            android:singleLine="true"
+            android:textStyle="bold"
+            android:textAllCaps="true" />
+        <TextView
+            android:id="@+id/display_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dip"
+            android:layout_marginRight="8dip"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textColor="@color/people_app_theme_color"
+            android:singleLine="true"
+            android:textStyle="bold"
+            android:textAllCaps="true" />
+        <TextView
+            android:id="@+id/count"
+            android:paddingTop="1dip"
+            android:layout_width="0dip"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:gravity="right"
+            android:singleLine="true"
+            android:textSize="12sp"
+            android:textColor="@color/contact_count_text_color" />
+    </LinearLayout>
+</FrameLayout>
diff --git a/res/layout/group_account_header_horizontal.xml b/res/layout/group_account_header_horizontal.xml
new file mode 100644
index 0000000..5043f25
--- /dev/null
+++ b/res/layout/group_account_header_horizontal.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?attr/list_item_header_height"
+    android:layout_marginLeft="?attr/list_item_padding_left"
+    android:layout_marginRight="?attr/list_item_padding_right"
+    android:background="@drawable/list_section_divider_holo_custom"
+    android:orientation="horizontal">
+
+    <TextView
+        android:id="@+id/account_type"
+        android:layout_width="0px"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:layout_gravity="center_vertical"
+        android:paddingLeft="?attr/list_item_header_text_indent"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textColor="@color/people_app_theme_color"
+        android:textStyle="bold"
+        android:textAllCaps="true"
+        android:singleLine="true"/>
+
+    <!-- TODO: Should use correct color with a correct name (content should be same).
+         can use "?android:attr/textColorTertiary" -->
+    <TextView
+        android:id="@+id/account_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:textColor="@color/contact_count_text_color"
+        android:textSize="12sp"
+        android:singleLine="true"
+        android:ellipsize="middle" />
+</LinearLayout>
diff --git a/res/layout/group_account_header_vertical.xml b/res/layout/group_account_header_vertical.xml
new file mode 100644
index 0000000..8edbb8b
--- /dev/null
+++ b/res/layout/group_account_header_vertical.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?attr/list_item_header_height"
+    android:layout_marginLeft="?attr/list_item_padding_left"
+    android:layout_marginRight="?attr/list_item_padding_right"
+    android:paddingBottom="4dip"
+    android:background="@drawable/list_section_divider_holo_custom"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/account_type"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:paddingLeft="?attr/list_item_header_text_indent"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textColor="@color/people_app_theme_color"
+        android:textStyle="bold"
+        android:textAllCaps="true"
+        android:singleLine="true"/>
+
+    <!-- TODO: Should use correct color with a correct name (content should be same).
+         can use "?android:attr/textColorTertiary" -->
+    <TextView
+        android:id="@+id/account_name"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:paddingLeft="?attr/list_item_header_text_indent"
+        android:textColor="@color/contact_count_text_color"
+        android:textSize="12sp"
+        android:singleLine="true"
+        android:ellipsize="middle" />
+</LinearLayout>
diff --git a/res/layout/group_browse_list_account_header.xml b/res/layout/group_browse_list_account_header.xml
index 78e0639..7bfbd07 100644
--- a/res/layout/group_browse_list_account_header.xml
+++ b/res/layout/group_browse_list_account_header.xml
@@ -26,39 +26,6 @@
         android:layout_width="match_parent"
         android:layout_height="@dimen/list_header_extra_top_padding" />
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:minHeight="?attr/list_item_header_height"
-        android:layout_marginLeft="?attr/list_item_padding_left"
-        android:layout_marginRight="?attr/list_item_padding_right"
-        android:background="@drawable/list_section_divider_holo_custom"
-        android:orientation="horizontal">
-
-        <TextView
-            android:id="@+id/account_type"
-            android:layout_width="0px"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:layout_gravity="center_vertical"
-            android:paddingLeft="?attr/list_item_header_text_indent"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:textColor="@color/people_app_theme_color"
-            android:textStyle="bold"
-            android:textAllCaps="true"
-            android:singleLine="true"/>
-
-        <!-- TODO: Shold use correct color with a correct name (content should be same).
-             can use "?android:attr/textColorTertiary" -->
-        <TextView
-            android:id="@+id/account_name"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            android:textColor="@color/contact_count_text_color"
-            android:textSize="12sp"
-            android:singleLine="true"
-            android:ellipsize="middle" />
-    </LinearLayout>
+    <include layout="@layout/group_account_header_horizontal" />
 
 </LinearLayout>
diff --git a/res/layout/item_photo_editor.xml b/res/layout/item_photo_editor.xml
index a22a535..b1af745 100644
--- a/res/layout/item_photo_editor.xml
+++ b/res/layout/item_photo_editor.xml
@@ -17,25 +17,38 @@
 <view
     class="com.android.contacts.editor.PhotoEditorView"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="48dip"
-    android:layout_height="48dip"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal"
     >
+    <FrameLayout
+        android:layout_width="48dip"
+        android:layout_height="48dip"
+    >
+        <ImageView
+            android:id="@+id/photo"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:src="@drawable/ic_contact_picture_holo_light"
+            android:cropToPadding="true"
+            android:scaleType="centerCrop"
+            android:gravity="left"
+        />
+        <View
+            android:id="@+id/frame"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:clickable="true"
+            android:focusable="true"
+            android:contentDescription="@string/description_contact_photo"
+            android:background="?android:attr/selectableItemBackground"
+        />
+    </FrameLayout>
     <ImageView
-        android:id="@+id/photo"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:src="@drawable/ic_contact_picture_holo_light"
-        android:cropToPadding="true"
-        android:scaleType="centerCrop"
-        android:gravity="left"
-    />
-    <View
-        android:id="@+id/frame"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:clickable="true"
-        android:focusable="true"
-        android:contentDescription="@string/description_contact_photo"
-        android:background="?android:attr/selectableItemBackground"
+        android:id="@+id/photo_triangle_affordance"
+        android:src="@drawable/account_spinner_icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom"
     />
 </view>
diff --git a/res/layout/phone_contact_tile_list.xml b/res/layout/phone_contact_tile_list.xml
index ec2cc37..57dd66c 100644
--- a/res/layout/phone_contact_tile_list.xml
+++ b/res/layout/phone_contact_tile_list.xml
@@ -21,7 +21,8 @@
     android:layout_height="match_parent"
     android:orientation="vertical"
     android:paddingBottom="?android:attr/actionBarSize"
-    android:divider="?android:attr/dividerHorizontal">
+    android:divider="?android:attr/dividerHorizontal"
+    android:showDividers="end">
     <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent">
diff --git a/res/layout/raw_contact_editor_view.xml b/res/layout/raw_contact_editor_view.xml
index 1ea781e..c8aa9da 100644
--- a/res/layout/raw_contact_editor_view.xml
+++ b/res/layout/raw_contact_editor_view.xml
@@ -52,24 +52,10 @@
 
             </LinearLayout>
 
-            <LinearLayout
-                android:id="@+id/stub_photo"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+            <include
+                android:id="@+id/edit_photo"
                 android:layout_marginRight="8dip"
-                android:orientation="horizontal">
-
-                <include
-                    android:id="@+id/edit_photo"
-                    layout="@layout/item_photo_editor" />
-
-                <ImageView
-                    android:src="@drawable/account_spinner_icon"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="bottom" />
-
-            </LinearLayout>
+                layout="@layout/item_photo_editor" />
 
         </LinearLayout>
 
diff --git a/res/layout/raw_contact_readonly_editor_view.xml b/res/layout/raw_contact_readonly_editor_view.xml
index aa7d705..998d392 100644
--- a/res/layout/raw_contact_readonly_editor_view.xml
+++ b/res/layout/raw_contact_readonly_editor_view.xml
@@ -42,24 +42,10 @@
             android:textAppearance="?android:attr/textAppearanceMedium"
             android:textColor="?android:attr/textColorSecondary" />
 
-        <LinearLayout
-            android:id="@+id/stub_photo"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+        <include
+            android:id="@+id/edit_photo"
             android:layout_marginRight="8dip"
-            android:orientation="horizontal">
-
-            <include
-                android:id="@+id/edit_photo"
-                layout="@layout/item_photo_editor" />
-
-            <ImageView
-                android:src="@drawable/account_spinner_icon"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="bottom" />
-
-        </LinearLayout>
+            layout="@layout/item_photo_editor" />
 
     </LinearLayout>
 
diff --git a/res/layout/search_header.xml b/res/layout/search_header.xml
index b1ba00f..44e4632 100644
--- a/res/layout/search_header.xml
+++ b/res/layout/search_header.xml
@@ -14,28 +14,10 @@
      limitations under the License.
 -->
 
-<RelativeLayout
+<TextView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
+    android:id="@+id/totalContactsText"
     android:minHeight="@dimen/contact_filter_header_min_height"
-    android:background="@android:color/transparent">
-    <TextView
-        android:id="@+id/totalContactsText"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_centerVertical="true"
-        android:layout_alignParentLeft="true"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:textColor="?android:attr/textColorSecondary" />
-
-    <ProgressBar
-        android:id="@+id/progress"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_toRightOf="@id/totalContactsText"
-        style="?android:attr/progressBarStyleSmall"
-        android:layout_alignParentRight="true"
-        android:layout_centerVertical="true" />
-
-</RelativeLayout>
+    android:paddingTop="10dip"
+    android:textAppearance="?android:attr/textAppearanceSmall"
+    android:textColor="?android:attr/textColorSecondary" />
\ No newline at end of file
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 252416e..158d8fa 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Instellings"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakte om te wys"</string>
     <string name="menu_settings" msgid="377929915873428211">"Instellings"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Hulp"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Vertoonopsies"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Vind kontakte"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index adfe377..d3cc56f 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"ቅንብሮች"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"ዕውቂያዎች አሳይ"</string>
     <string name="menu_settings" msgid="377929915873428211">"ቅንብሮች"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"እገዛ"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"ማሳያ አማራጮች"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>፣ <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"ዕውቂያዎች አግኝ"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 6fdd2b6..3fd4b0b 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"الإعدادات"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"جهات الاتصال التي يتم عرضها"</string>
     <string name="menu_settings" msgid="377929915873428211">"الإعدادات"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"مساعدة"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"خيارات العرض"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>، <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"البحث عن جهات اتصال"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 65d27f6..d48eef9 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Налады"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Кантакты для адлюстр."</string>
     <string name="menu_settings" msgid="377929915873428211">"Налады"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Даведка"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Паказаць параметры"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Знайсці кантакты"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 391603a..8a33bde 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Да се изчисти ли списъкът с обаждания?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Всичките ви записи на обажданията ще бъдат изтрити."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Списъкът с обаждания се изчиства..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Да се изчистят ли често търсените?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Ще изчистите списъка с често търсените в приложенията Хора и Телефон и ще принудите приложенията за имейл да научат предпочитанията ви за адресите, започвайки отначало."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Често търсените се изчистват…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Гласова поща"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Не бе намерено приложение за извършване на това действие."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Няма име)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Профили"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Изчистване на често търсените"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Контакти за показване"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Импортиране/Експортиране"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Импортиране/Експортиране на контакти"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Настройки"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Контакти за показване"</string>
     <string name="menu_settings" msgid="377929915873428211">"Настройки"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Помощ"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Опции за показване"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Намиране на контакти"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 1940b54..9692191 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Configuració"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contactes per mostrar"</string>
     <string name="menu_settings" msgid="377929915873428211">"Configuració"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Ajuda"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Opcions de visualització"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Cerca contactes"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index b71e435..66a1102 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Vymazat hovory?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Všechny záznamy hovorů budou smazány."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Vymazání hovorů..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Vymazat často kontaktované osoby?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Vymažete seznam často kontaktovaných osob v aplikacích Lidé a Telefon a e-mailové aplikace budou muset nastavení adresátů vytvořit znovu."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Mazání často kontaktovaných osob..."</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Hlasová schránka"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Aplikace potřebná k provedení této akce nebyla nalezena."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Žádné jméno)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Účty"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Vymazat často kontaktované os."</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakty k zobrazení"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importovat/Exportovat"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importovat nebo exportovat kontakty"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Nastavení"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakty k zobrazení"</string>
     <string name="menu_settings" msgid="377929915873428211">"Nastavení"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Nápověda"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Možnosti zobrazení"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Najít kontakty"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 51ed768..bb646f4 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Indstillinger"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Viste kontaktpersoner"</string>
     <string name="menu_settings" msgid="377929915873428211">"Indstillinger"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Hjælp"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Indstillinger for visning"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Find kontaktpersoner"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 486b8bb..594334f 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Einstellungen"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakte zum Anzeigen"</string>
     <string name="menu_settings" msgid="377929915873428211">"Einstellungen"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Hilfe"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Anzeigeoptionen"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Kontakte suchen"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 5288138..cfab0ab 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Ρυθμίσεις"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Επαφές για προβολή"</string>
     <string name="menu_settings" msgid="377929915873428211">"Ρυθμίσεις"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Βοήθεια"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Επιλογές προβολής"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Εύρεση επαφών"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 43721ad..0820a6b 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Settings"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contacts to display"</string>
     <string name="menu_settings" msgid="377929915873428211">"Settings"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Help"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Display options"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Find contacts"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 9251b1c..c389b7b 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"¿Eliminar registro?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Se eliminarán todos tus registros de llamadas."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Borrando registro de llamadas..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"¿Borrar los contactos frecuentes?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Estás a punto de borrar la lista de contactos frecuentes de las aplicaciones Personas y Teléfono y harás que las aplicaciones de correo deban aprender nuevamente tus preferencias."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Borrando contactos frecuentes…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Correo de voz"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"No se encontró ninguna aplicación que pueda realizar esta acción."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Sin nombre)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Cuentas"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Borrar contactos frecuentes"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Contactos para mostrar"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importar/Exportar"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Imp./exp. contactos"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Configuración"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contactos para mostrar"</string>
     <string name="menu_settings" msgid="377929915873428211">"Configuración"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Ayuda"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Opciones de visualización"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Buscar contactos"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index e73398b..b478a12 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Ajustes"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contactos que mostrar"</string>
     <string name="menu_settings" msgid="377929915873428211">"Ajustes"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Ayuda"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Opciones de visualización"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Buscar contactos"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index e691bd2..1cf5078 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Seaded"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kuvatavad kontaktid"</string>
     <string name="menu_settings" msgid="377929915873428211">"Seaded"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Abi"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Kuvamisvalikud"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Otsige kontakte"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 1ef1080..2fbf33b 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"گزارش تماس پاک شود؟"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"تمام سابقه تماس شما حذف خواهد شد."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"در حال پاک کردن گزارش تماس..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"لیست تماس مکرر با مخاطب پاک شود؟"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"با این کار شما در برنامه «افراد» و «تلفن»، لیست افرادی را که با آن‌ها بیشترین تماس را داشته‌اید پاک خواهید کرد و برنامه‌های ایمیل مجبور می‌شوند تنظیمات برگزیده آدرس‌دهی شما را از اول یاد بگیرند."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"در حال پاک کردن لیست تماس مکرر..."</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"پست صوتی"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"برنامه‌ای برای انجام این عملکرد یافت نشد."</string>
     <string name="missing_name" msgid="8745511583852904385">"(بدون نام)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"حساب‌ها"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"پاک کردن تماس‌های مکرر"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"مخاطبین جهت نمایش"</string>
     <string name="menu_import_export" msgid="26217871113229507">"وارد کردن/صادر کردن"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"وارد کردن/صادر کردن مخاطبین"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"تنظیمات"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"مخاطبین جهت نمایش"</string>
     <string name="menu_settings" msgid="377929915873428211">"تنظیمات"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"راهنمایی"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"گزینه های نمایش"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>، <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"پیدا کردن مخاطبین"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 2241df7..4ef41cd 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Asetukset"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Näytettävät yhteystiedot"</string>
     <string name="menu_settings" msgid="377929915873428211">"Asetukset"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Ohje"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Näyttövalinnat"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Etsi yhteystietoja"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index e3f9f69..1feea62 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Paramètres"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contacts à afficher"</string>
     <string name="menu_settings" msgid="377929915873428211">"Paramètres"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Aide"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Options d\'affichage"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Rechercher contacts"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 1387a01..61301e4 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"कॉल लॉग साफ़ करें?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"आपके सभी कॉल रिकॉर्ड हटा दिए जाएंगे."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"कॉल लॉग साफ़ हो रहा है..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"अक्‍सर किए जाने वाले संपर्क साफ करें?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"आपको लोग और फ़ोन एप्‍लिकेशन में अक्‍सर संपर्क करने की सूची साफ़ करनी होगी, और अपने ईमेल एप्लिकेशन को आपकी प्राथमिकताओं को प्रारंभ से जानने के लिए बाध्‍य करना होगा."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"अक्‍सर किए जाने वाले संपर्क साफ़ कर रहा है…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"ध्वनिमेल"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"यह कार्यवाही प्रबंधित करने के लिए कोई एप्लिकेशन नहीं मिला."</string>
     <string name="missing_name" msgid="8745511583852904385">"(कोई नाम नहीं)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"खाते"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"अक्सर किए जाने वाले साफ़ करें"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"प्रदर्शन के लिए संपर्क"</string>
     <string name="menu_import_export" msgid="26217871113229507">"आयात करें/निर्यात करें"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"संपर्क आयात/निर्यात करें"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"सेटिंग"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"प्रदर्शन के लिए संपर्क"</string>
     <string name="menu_settings" msgid="377929915873428211">"सेटिंग"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"सहायता"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"प्रदर्शन विकल्प"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"संपर्क ढूंढें"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 640968b..4a6ac37 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Izbrisati dnevnik poziva?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Svi vaši zapisi poziva bit će izbrisani."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Brisanje dnevnika poziva..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Brisati podatke o čestim kontaktima?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Obrisat ćete popis osoba s kojima često kontaktirate u aplikacijama Osobe i Telefoni tako da će aplikacije e-pošte morati naučiti vaše preference adresiranja od početka."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Brisanje često kontaktiranih..."</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Govorna pošta"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Nije pronađena nijedna aplikacija koja može provesti ovu radnju."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Bez imena)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Računi"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Briši često kontaktirane"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakti za prikaz"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Uvoz/izvoz"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Uvoz/izvoz kontakata"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Postavke"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakti za prikaz"</string>
     <string name="menu_settings" msgid="377929915873428211">"Postavke"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Pomoć"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Opcije prikaza"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Pronađi kontakte"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 04f582c..99faa34 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Törli a híváslistát?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Minden telefonhívás törlésre kerül."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Híváslista törlése..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Törli a gyakran keresetteket?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Törölni fogja a gyakran keresett személyek listáját a Személyek és a Telefon alkalmazásokban, és arra kényszeríti az e-mail alkalmazásokat, hogy újra, elölről megtanulják az Ön címzési preferenciáit."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Gyakran keresettek törlése..."</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Hangposta"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Nincs megfelelő alkalmazás a művelet elvégzésére."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Nincs név)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Fiókok"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Gyakran keresettek törlése"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Megjelenítendő névjegyek"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importálás/exportálás"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Névjegyek importálása/exportálása"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Beállítások"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Megjelenítendő névjegyek"</string>
     <string name="menu_settings" msgid="377929915873428211">"Beállítások"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Súgó"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Megjelenítési beállítások"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Névjegy keresése"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 9d8dbaf..4452b46 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Hapus log panggilan?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Semua catatan panggilan Anda akan dihapus."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Menghapus log panggilan..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Hapus yang sering dihubungi?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Anda akan menghapus daftar yang sering dihubungi pada aplikasi Orang dan Ponsel, serta memaksa aplikasi email untuk mempelajari preferensi penanganan Anda dari awal."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Menghapus yang sering dihubungi..."</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Kotak Pesan"</string>
@@ -240,8 +237,8 @@
     <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Satu file atau lebih tidak dapat diimpor (%s)."</string>
     <string name="fail_reason_unknown" msgid="1714092345030570863">"Kesalahan tidak dikenal."</string>
     <string name="select_vcard_title" msgid="7791371083694672861">"Pilih file vCard"</string>
-    <string name="caching_vcard_title" msgid="1226272312940516605">"Menyimpan ke tembolok"</string>
-    <string name="caching_vcard_message" msgid="4926308675041506756">"Menyimpan vCard ke tembolok untuk penyimpanan lokal sementara. Impor yang sebenarnya akan segera dimulai."</string>
+    <string name="caching_vcard_title" msgid="1226272312940516605">"Menyimpan ke cache"</string>
+    <string name="caching_vcard_message" msgid="4926308675041506756">"Menyimpan vCard ke cache untuk penyimpanan lokal sementara. Impor yang sebenarnya akan segera dimulai."</string>
     <string name="progress_notifier_message" msgid="2311011466908220528">"Mengimpor <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="importing_vcard_description" msgid="4245275224298571351">"Mengimpor <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Tidak dapat membaca data vCard"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Tidak ada apl yang ditemukan untuk menangani tindakan ini."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Tanpa nama)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Akun"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Hapus yang sering"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kenalan untuk ditampilkan"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Impor/ekspor"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Impor/ekspor data kenalan"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Setelan"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kenalan untuk ditampilkan"</string>
     <string name="menu_settings" msgid="377929915873428211">"Setelan"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Bantuan"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Opsi tampilan"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Temukan kenalan"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 4021d46..2983081 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Impostazioni"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contatti da visualizzare"</string>
     <string name="menu_settings" msgid="377929915873428211">"Impostazioni"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Guida"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Opzioni di visualizzazione"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Trova contatti"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 9c405c7..1606fce 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"הגדרות"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"אנשי קשר להצגה"</string>
     <string name="menu_settings" msgid="377929915873428211">"הגדרות"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"עזרה"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"אפשרויות תצוגה"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"חפש אנשי קשר"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index c32418d..9e1300d 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"通話履歴を消しますか?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"すべての通話記録は削除されます。"</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"通話履歴を消去しています..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"よく使う連絡先をクリアしますか?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Peopleアプリや電話アプリのよく使う連絡先リストをクリアし、メールアプリがアドレス設定を初めから保存していくようにします。"</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"よく使う連絡先をクリアしています…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI(端末識別番号)"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"ボイスメール"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"この操作を行うアプリが見つかりませんでした。"</string>
     <string name="missing_name" msgid="8745511583852904385">"(名前なし)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"アカウント"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"よく使う連絡先のクリア"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"表示する連絡先"</string>
     <string name="menu_import_export" msgid="26217871113229507">"インポート/エクスポート"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"連絡先のインポート/エクスポート"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"設定"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"表示する連絡先"</string>
     <string name="menu_settings" msgid="377929915873428211">"設定"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"ヘルプ"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"表示オプション"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>、<xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"連絡先を検索"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index b031cee..a9aea70 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"통화기록을 지우시겠습니까?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"모든 통화 기록을 삭제합니다."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"통화기록을 지우는 중..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"자주 연락하는 사람들 목록을 삭제하시겠습니까?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"사용자 및 휴대전화 앱에서 자주 연락하는 사람들 목록을 삭제하고 이메일 앱이 주소록 환경설정을 처음부터 다시 반영하도록 합니다."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"자주 연락하는 사람들 목록을 삭제하는 중…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"음성사서함"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"이 작업을 처리하는 앱을 찾을 수 없습니다."</string>
     <string name="missing_name" msgid="8745511583852904385">"(이름 없음)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"계정"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"자주 연락하는 사람들 목록 삭제"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"표시할 연락처"</string>
     <string name="menu_import_export" msgid="26217871113229507">"가져오기/내보내기"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"주소록 가져오기/내보내기"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"설정"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"표시할 연락처"</string>
     <string name="menu_settings" msgid="377929915873428211">"설정"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"도움말"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"표시 옵션"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"연락처 찾기"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 1360621..8a56cc9 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Išv. skamb. žurnalą?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Visi jūsų skambučių įrašai bus ištrinti."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Valomas skambučių žurnalas…"</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Išvalyti dažniaus. naud. kontaktus?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Išvalysite dažniausiai naudojamų kontaktų sąrašą Žmonių ir Telefono programose, o el. pašto programoms reikės iš naujo gauti adresavimo nuostatas."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Valomi dažniaus. naud. kontaktai…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Balso paštas"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Nerasta jokių programų šiam veiksmui apdoroti."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Nėra pavadinimo)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Paskyros"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Valyti dažniausiai naudojamus"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Pateiktini kontaktai"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importuoti / eksportuoti"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Import. / eksport. kont."</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Nustatymai"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Pateiktini kontaktai"</string>
     <string name="menu_settings" msgid="377929915873428211">"Nustatymai"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Pagalba"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Pateikties parinktys"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"„<xliff:g id="COMPANY_0">%2$s</xliff:g>“, „<xliff:g id="COMPANY_1">%1$s</xliff:g>“"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Ieškoti kontaktų"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index e547f05..dc5c502 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -151,9 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Vai not. zv. žurn.?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Visi zvanu ieraksti tiks dzēsti."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Notiek zvanu žurnāla tīrīšana..."</string>
-    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Vai dzēst bieži lietotās kontaktp.?"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Vai dzēst bieži lietotos kontaktus?"</string>
     <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Tiks dzēsts bieži lietoto kontaktpersonu saraksts lietotnēs Personas un Tālrunis, un e-pasta lietotnēs adrešu preferenču saglabāšana tiks sākta no sākuma."</string>
-    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Notiek bieži liet. kontaktp. dzēš."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Bieži lietoto kontaktu dzēšana..."</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Balss pasts"</string>
@@ -285,7 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Netika atrasta neviena lietotne šīs darbības veikšanai."</string>
     <string name="missing_name" msgid="8745511583852904385">"(nav vārda)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Konti"</string>
-    <string name="menu_clear_frequents" msgid="7688250191932838833">"Dzēst bieži lietotās kontaktp."</string>
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Dzēst bieži lietotos kontaktus"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Attēlojamās kontaktpersonas"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importēt/eksportēt"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"K. pers. imports/eksports"</string>
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Iestatījumi"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Attēlojamās kontaktpers."</string>
     <string name="menu_settings" msgid="377929915873428211">"Iestatījumi"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Palīdzība"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Attēlošanas opcijas"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Meklēt kontaktpersonas"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 9d70e40..57f9e53 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Padam bersih log panggilan?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Semua rekod panggilan anda akan dipadamkan."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Memadam bersih log panggilan..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Padam bersih senarai kerap dihubungi?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Anda akan mengosongkan senarai orang yang kerap dihubungi dalam apl Orang dan Telefon serta memaksa apl e-mel untuk mempelajari pilihan alamat anda dari awal."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Memadam bersih senarai kerap dihubungi..."</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Mel suara"</string>
@@ -290,8 +287,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Tiada aplikasi ditemui untuk mengendalikan tindakan ini."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Tiada nama)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Akaun"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Padam bersih kerap dihubungi"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kenalan untuk dipaparkan"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Import/eksport"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Import/Eksport kenalan"</string>
@@ -463,8 +459,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Tetapan"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kenalan untuk dipaparkan"</string>
     <string name="menu_settings" msgid="377929915873428211">"Tetapan"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Bantuan"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Pilihan paparan"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Cari kenalan"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 26cc8cc..0b5e123 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Innstillinger"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakter i visning"</string>
     <string name="menu_settings" msgid="377929915873428211">"Innstillinger"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Hjelp"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Vis grupper"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Finn kontakter"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index d5f02ab..c59fa42 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Instellingen"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Zichtbare contacten"</string>
     <string name="menu_settings" msgid="377929915873428211">"Instellingen"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Help"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Weergaveopties"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Contacten vinden"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index c10c6bd..389d91e 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Usunąć rejestr połączeń?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Wszystkie dane połączeń zostaną usunięte."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Czyszczenie rejestru połączeń…"</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Wyczyścić częste kontakty?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Wyczyścisz listę częstych kontaktów w aplikacjach Osoby i Telefon. Aplikacje pocztowe będą musiały od nowa poznawać Twoje preferencje adresowe."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Czyszczę częste kontakty…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"Numer MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Poczta głosowa"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Nie znaleziono aplikacji do obsługi tego działania."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Bez nazwy)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Konta"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Wyczyść częste kontakty"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakty do wyświetlenia"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importuj/eksportuj"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importuj/eksportuj kontakty"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Ustawienia"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakty do wyświetlenia"</string>
     <string name="menu_settings" msgid="377929915873428211">"Ustawienia"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Pomoc"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Opcje wyświetlania"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Znajdź kontakty"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 6ddfce4..c8175ef 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Limpar reg. de cham.?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Todos os registos de chamadas serão eliminados."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"A limpar registo de chamadas..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Limpar contactos frequentes?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Irá limpar a lista de contactos frequentes nas aplicações Pessoas e Telemóvel e forçar as aplicações de email a aprenderem as suas preferências de endereço de raiz."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"A limpar contactos frequentes..."</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Correio de voz"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Não foram encontradas aplicações para executar esta ação"</string>
     <string name="missing_name" msgid="8745511583852904385">"(Sem nome)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Contas"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Limpar frequentes"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Contactos a apresentar"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importar/exportar"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importar/export. contactos"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Definições"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contactos a apresentar"</string>
     <string name="menu_settings" msgid="377929915873428211">"Definições"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Ajuda"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Opções de visualização"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Localizar contactos"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 2291f16..36cde51 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Configurações"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contatos a exibir"</string>
     <string name="menu_settings" msgid="377929915873428211">"Configurações"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Ajudar"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Opções de exibição"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Localizar contatos"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 0c0b706..9a86b66 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Ştergeţi apelurile?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Toate înregistrările apelurilor dvs. vor fi şterse."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Se goleşte jurnalul de apeluri..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Ştergeţi persoane frecvent contactate?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Veţi şterge lista cu persoanele contactate cel mai frecvent din aplicaţiile Persoane şi Telefon şi veţi forţa aplicaţiile de e-mail să reţină preferinţele dvs. pentru adrese de la zero."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Ştergeți persoane frecv. contactate…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Mesagerie vocală"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Nu s-a găsit o aplicaţie care să gestioneze această acţiune."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Fără nume)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Conturi"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Şterg. pers. frecv. contact."</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Persoane de contact de afişat"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importaţi/exportaţi"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Import/export contacte"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Setări"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Pers. din agendă de afiş."</string>
     <string name="menu_settings" msgid="377929915873428211">"Setări"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Ajutor"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Opţiuni de afişare"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Găsiţi contacte"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index f5930b5..c9c8c2c 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Удаление данных"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Журнал звонков будет очищен."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Очистка списка вызовов..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Очистить список популярных контактов?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Список популярных контактов в приложениях \"Контакты\" и \"Телефон\" будет очищен, и почтовые приложения начнут создавать этот список заново."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Подождите…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Голосовая почта"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Действие не поддерживается ни в одном приложении."</string>
     <string name="missing_name" msgid="8745511583852904385">"Имя не указано"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Аккаунты"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Очистить популярные контакты"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Фильтр контактов"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Импорт/экспорт"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Импорт/экспорт контактов"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Настройки"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Фильтр контактов"</string>
     <string name="menu_settings" msgid="377929915873428211">"Настройки"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Справка"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Варианты отображения"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Найти контакты"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index c01da17..7c8bd40 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Vymazať záznam hov.?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Všetky záznamy o hovoroch budú odstránené."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Vymazávanie denníka hovorov..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Vymazať často kontaktované osoby?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Vymažete zoznam často kontaktovaných osôb v aplikáciách Ľudia a Telefón a použijete odznova predvoľby adresátov v e-mailových aplikáciách."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Mazanie často kontaktovaných osôb."</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Hlasová schránka"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Aplikácia potrebná na spracovanie tejto akcie sa nenašla."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Bez mena)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Účty"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Vymazať často kontakt. osoby"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakty na zobrazenie"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Import a export"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importovať alebo exportovať kontakty"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Nastavenia"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakty na zobrazenie"</string>
     <string name="menu_settings" msgid="377929915873428211">"Nastavenia"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Pomocník"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Možnosti zobrazenia"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Nájsť kontakty"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 0806025..c3ff636 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Nastavitve"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Stiki za prikaz"</string>
     <string name="menu_settings" msgid="377929915873428211">"Nastavitve"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Pomoč"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Možnosti prikaza"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Najdi stike"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index a3f7d4c..2db17b7 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Обрисати евиденцију позива?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Све евиденције позива ће бити избрисане."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Брисање евиденције позива..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Обриши често контактиране?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Обрисаћете листу често контактираних у апликацијама Људи и Телефон, па ће апликације е-поште морати из почетка да сакупе информације о подешавањима адресирања."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Брисање често контактираних..."</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Говорна пошта"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Није пронађена ниједна апликација која би могла да изврши ову радњу."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Без имена)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Налози"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Обриши често контактиране"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Контакти за приказ"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Увоз/извоз"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Увоз/извоз контаката"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Подешавања"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Контакти за приказ"</string>
     <string name="menu_settings" msgid="377929915873428211">"Подешавања"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Помоћ"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Опције приказа"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Пронађи контакте"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 34f1540..1783117 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Inställningar"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakter som ska visas"</string>
     <string name="menu_settings" msgid="377929915873428211">"Inställningar"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Hjälp"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Visa alternativ"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Sök efter kontakter"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 394724c..290afa4 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -459,8 +459,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Mipangilio"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Anwani za uonyesha"</string>
     <string name="menu_settings" msgid="377929915873428211">"Mipangilio"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Msaada"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Onyesha machaguo"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Tafuta anwani"</string>
diff --git a/res/values-sw580dp-w940dp/donottranslate_config.xml b/res/values-sw580dp-w940dp/donottranslate_config.xml
index 92d2780..5e5be30 100644
--- a/res/values-sw580dp-w940dp/donottranslate_config.xml
+++ b/res/values-sw580dp-w940dp/donottranslate_config.xml
@@ -19,4 +19,5 @@
 
 <resources>
     <bool name="config_browse_list_show_images">true</bool>
+    <bool name="config_use_two_panes_in_favorites">true</bool>
 </resources>
diff --git a/res/values-sw580dp-w940dp/integers.xml b/res/values-sw580dp-w940dp/integers.xml
index 8ce96de..191eeb8 100644
--- a/res/values-sw580dp-w940dp/integers.xml
+++ b/res/values-sw580dp-w940dp/integers.xml
@@ -15,5 +15,6 @@
 -->
 <resources>
     <integer name="contact_tile_column_count">3</integer>
+    <integer name="contact_tile_column_count_in_favorites">3</integer>
     <integer name="updates_tab_snippet_max_lines">7</integer>
 </resources>
diff --git a/res/values-sw580dp/donottranslate_config.xml b/res/values-sw580dp/donottranslate_config.xml
index cf4286e..3d0dea0 100644
--- a/res/values-sw580dp/donottranslate_config.xml
+++ b/res/values-sw580dp/donottranslate_config.xml
@@ -19,6 +19,7 @@
 
 <resources>
     <bool name="config_use_two_panes">true</bool>
+    <bool name="config_use_two_panes_in_favorites">false</bool>
     <bool name="show_home_icon">true</bool>
     <bool name="config_show_group_action_in_action_bar">false</bool>
     <bool name="config_browse_list_show_images">false</bool>
diff --git a/res/values-sw580dp/integers.xml b/res/values-sw580dp/integers.xml
index a62fa14..cdf6e4a 100644
--- a/res/values-sw580dp/integers.xml
+++ b/res/values-sw580dp/integers.xml
@@ -15,5 +15,6 @@
 -->
 <resources>
     <integer name="contact_tile_column_count">2</integer>
+    <integer name="contact_tile_column_count_in_favorites">3</integer>
     <integer name="updates_tab_snippet_max_lines">4</integer>
 </resources>
diff --git a/res/values-sw680dp-w1000dp/donottranslate_config.xml b/res/values-sw680dp-w1000dp/donottranslate_config.xml
deleted file mode 100644
index 92d2780..0000000
--- a/res/values-sw680dp-w1000dp/donottranslate_config.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2011, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<resources>
-    <bool name="config_browse_list_show_images">true</bool>
-</resources>
diff --git a/res/values-sw680dp-w1000dp/integers.xml b/res/values-sw680dp-w1000dp/integers.xml
index 5fda2ed..bc9b2b7 100644
--- a/res/values-sw680dp-w1000dp/integers.xml
+++ b/res/values-sw680dp-w1000dp/integers.xml
@@ -15,4 +15,5 @@
 -->
 <resources>
     <integer name="contact_tile_column_count">4</integer>
-</resources>
\ No newline at end of file
+    <integer name="contact_tile_column_count_in_favorites">4</integer>
+</resources>
diff --git a/res/values-sw680dp/donottranslate_config.xml b/res/values-sw680dp/donottranslate_config.xml
index 92d2780..5e5be30 100644
--- a/res/values-sw680dp/donottranslate_config.xml
+++ b/res/values-sw680dp/donottranslate_config.xml
@@ -19,4 +19,5 @@
 
 <resources>
     <bool name="config_browse_list_show_images">true</bool>
+    <bool name="config_use_two_panes_in_favorites">true</bool>
 </resources>
diff --git a/res/values-sw680dp/integers.xml b/res/values-sw680dp/integers.xml
index eaf5971..5b348a5 100644
--- a/res/values-sw680dp/integers.xml
+++ b/res/values-sw680dp/integers.xml
@@ -15,5 +15,6 @@
 -->
 <resources>
     <integer name="contact_tile_column_count">2</integer>
+    <integer name="contact_tile_column_count_in_favorites">2</integer>
     <integer name="updates_tab_snippet_max_lines">7</integer>
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 1d3cd48..0892bb4 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"ล้างบันทึกการโทร"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"บันทึกการโทรทั้งหมดของคุณจะถูกลบออก"</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"กำลังล้างบันทึกการโทร..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"ล้างผู้ที่คุณติดต่อด้วยบ่อยๆ หรือไม่"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"คุณจะล้างรายชื่อของผู้ที่ติดต่อด้วยบ่อยๆ ในแอปพลิเคชัน People และ Phone และทำให้แอปพลิเคชันอีเมลต้องเรียนรู้การกำหนดที่อยู่ของคุณใหม่ตั้งแต่ต้น"</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"กำลังล้างผู้ที่คุณติดต่อด้วยบ่อยๆ…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"ข้อความเสียง"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"ไม่พบแอปพลิเคชันสำหรับการทำงานนี้"</string>
     <string name="missing_name" msgid="8745511583852904385">"(ไม่มีชื่อ)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"บัญชี"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"ล้างผู้ที่คุณติดต่อด้วยบ่อยๆ"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"รายชื่อติดต่อที่จะแสดง"</string>
     <string name="menu_import_export" msgid="26217871113229507">"นำเข้า/ส่งออก"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"นำเข้า/ส่งออกผู้ติดต่อ"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"การตั้งค่า"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"รายชื่อติดต่อที่จะแสดง"</string>
     <string name="menu_settings" msgid="377929915873428211">"การตั้งค่า"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"ความช่วยเหลือ"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"ตัวเลือกการแสดงผล"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"ค้นหารายชื่อติดต่อ"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index fc59c12..ddf61f0 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"I-clear ang log ng tawag?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Tatanggalin ang lahat ng iyong record ng tawag."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Kini-clear ang log ng tawag…"</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"I-clear ang mga madalas tinatawagan?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Iki-clear mo ang listahan ng mga madalas na tinatawagan sa Mga Tao at Telepono na mga app, at pilitin ang mga email app na matutunan ang iyong mga kagustuhan sa pag-address mula sa umpisa."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Kini-clear ang mga madalas tinatawagan…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Walang natagpuang app na mangangasiwa sa pagkilos na ito."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Walang pangalan)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Mga Account"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"I-clear ang mga madadalas"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Mga contact na ipapakita"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Mag-import/mag-export"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Mag-import/mag-export ng mga contact"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Mga Setting"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Mga contact na ipapakita"</string>
     <string name="menu_settings" msgid="377929915873428211">"Mga Setting"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Tulong"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Mga pagpipilian sa pagpapakita"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Mghanap ng contact"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index e96fbbb..c9ade87 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Çağrı günlüğünü sil?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Tüm çağrı kayıtlarınız silinecek."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Çağrı günlüğü temizleniyor..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Sık iletişim kurulanlar silinsin mi?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Kişiler ve Telefon uygulamalarındaki sık iletişim kurulanlar listesini temizleyecek ve e-posta uygulamalarını adres tercihlerinizi en baştan öğrenmeye zorlayacaksınız."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Sık iletişim kurulanlar siliniyor…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Sesli Mesaj"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Bu işlemi gerçekleştirecek uygulama bulunamadı."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Adsız)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Hesaplar"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Sık iletişim kurulanları sil"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Görüntülenecek kişiler"</string>
     <string name="menu_import_export" msgid="26217871113229507">"İçe/Dışa Aktar"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Kişileri içe/dışa aktar"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Ayarlar"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Görüntülenecek kişiler"</string>
     <string name="menu_settings" msgid="377929915873428211">"Ayarlar"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Yardım"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Görüntüleme seçenekleri"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Kişileri bul"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 5933322..15a4c2a 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Очистити журнал викликів?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Усі записи викликів буде видалено."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Очищення журналу викликів..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Очистити список частих контактів?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Ви очистите список користувачів, з якими часто спілкувалися, у програмах \"Телефон\" і \"Люди\" та примусите програми електронної пошти заново запам’ятовувати нові адреси."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Очищення списку частих контактів…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Голос. пошта"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Не знайдено програму для обробки цієї дії."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Без імені)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Обл. записи"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Очистити часті контакти"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Контакти для показу"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Імпорт або експорт"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Імпорт/експорт контактів"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Налаштування"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Контакти для показу"</string>
     <string name="menu_settings" msgid="377929915873428211">"Налаштування"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Довідка"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Параметри відображення"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Пошук контактів"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index a24a610..4b4ed47 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Xóa nhật ký c.gọi?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Tất cả bản ghi cuộc gọi của bạn sẽ bị xóa."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Đang xóa nhật ký cuộc gọi…"</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Xóa danh sách liên hệ thường xuyên?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Bạn sẽ xóa danh sách liên hệ thường xuyên trong ứng dụng Liên hệ và điện thoại cũng như buộc các ứng dụng email phải tìm hiểu các tùy chọn gửi của bạn lại từ đầu."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Đang xóa d.sách l.hệ thường xuyên…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Thư thoại"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Không tìm thấy ứng dụng nào để xử lý tác vụ này."</string>
     <string name="missing_name" msgid="8745511583852904385">"(Không có tên)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Tài khoản"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Xóa d.sách l.hệ thường xuyên"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Danh sách liên hệ để hiển thị"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Nhập/xuất"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Nhập/xuất danh bạ"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Cài đặt"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"DS liên hệ để hiển thị"</string>
     <string name="menu_settings" msgid="377929915873428211">"Cài đặt"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Trợ giúp"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Tùy chọn hiển thị"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Tìm địa chỉ liên hệ"</string>
diff --git a/res/values-w470dp/integers.xml b/res/values-w470dp/integers.xml
index d247e46..bc9b2b7 100644
--- a/res/values-w470dp/integers.xml
+++ b/res/values-w470dp/integers.xml
@@ -15,4 +15,5 @@
 -->
 <resources>
     <integer name="contact_tile_column_count">4</integer>
+    <integer name="contact_tile_column_count_in_favorites">4</integer>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index c15dc38..db1cf96 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"要清除通话记录吗?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"系统将删除您的所有通话记录。"</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"正在清除通话记录..."</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"是否清除常用联系人?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"此操作会清除“联系人”和“拨号”应用中的常用联系人列表,并强制电子邮件应用重新获取您最常使用的联系地址。"</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"正在清除常用联系人…"</string>
     <string name="imei" msgid="3045126336951684285">"移动通信国际识别码"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"语音信箱"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"未找到可处理此操作的应用。"</string>
     <string name="missing_name" msgid="8745511583852904385">"(无姓名)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"帐户"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"清除常用联系人"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"要显示的联系人"</string>
     <string name="menu_import_export" msgid="26217871113229507">"导入/导出"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"导入/导出联系人"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"设置"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"要显示的联系人"</string>
     <string name="menu_settings" msgid="377929915873428211">"设置"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"帮助"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"显示选项"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>,<xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"查找联系人"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 61b792e..4ff5b35 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -151,12 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"確定要清除通話記錄?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"即將刪除您所有的通話記錄。"</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"正在清除通話記錄…"</string>
-    <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
-    <skip />
-    <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
-    <skip />
-    <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
-    <skip />
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"清除常用聯絡人?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"您將清除「使用者」應用程式和「電話」應用程式中的常用聯絡人清單,並強制電子郵件應用程式重新瞭解您的寄件偏好設定。"</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"正在清除常用聯絡人…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"語音留言"</string>
@@ -288,8 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"找不到可以處理這個動作的應用程式。"</string>
     <string name="missing_name" msgid="8745511583852904385">"(無姓名)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"帳戶"</string>
-    <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
-    <skip />
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"清除常用聯絡人"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"要顯示的聯絡人"</string>
     <string name="menu_import_export" msgid="26217871113229507">"匯入/匯出"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"匯入/匯出聯絡人"</string>
@@ -461,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"設定"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"要顯示的聯絡人"</string>
     <string name="menu_settings" msgid="377929915873428211">"設定"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"說明"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"顯示選項"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_1">%1$s</xliff:g> <xliff:g id="COMPANY_0">%2$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"尋找聯絡人"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 5e4d54e..366befe 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -151,9 +151,9 @@
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Sula ifayela lokungena"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Yonke imininingwane eqoshiwe iyosuswa."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Isula imininingwane yokushaya..."</string>
-    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Sula okuthintwa njalo?"</string>
-    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Uzosula uhlu oluthintwa njalo kwizinhlelo zokusebenza zaBantu kanye Nefoni, futhi iphoqelela izinhlelo zokusebenza ze-imeyli ukufunda okukhethayo kokuthintana kusuka ekuqaleni."</string>
-    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Isula okuthintwa njalo…"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Sula oxhumana nabo njalo?"</string>
+    <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Uzosula uhlu okuxhunyanwa nalo njalo kwizinhlelo zokusebenza zaBantu kanye Nefoni, futhi iphoqelela izinhlelo zokusebenza ze-imeyli ukufunda okukhethayo kokuthintana kusuka ekuqaleni."</string>
+    <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Isula oxhumana nabo njalo…"</string>
     <string name="imei" msgid="3045126336951684285">"IMEI"</string>
     <string name="meid" msgid="6210568493746275750">"I-MEID"</string>
     <string name="voicemail" msgid="3851469869202611441">"Ivoyisimeyili"</string>
@@ -285,7 +285,7 @@
     <string name="quickcontact_missing_app" msgid="358168575340921552">"Ayikho insiza etholakele ukubhekana nalengxenye."</string>
     <string name="missing_name" msgid="8745511583852904385">"(alikho igama)"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Ama-akhawunti"</string>
-    <string name="menu_clear_frequents" msgid="7688250191932838833">"Sula okuthintwa njalo"</string>
+    <string name="menu_clear_frequents" msgid="7688250191932838833">"Sula oxhumana nabo njalo"</string>
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Othintana nabo abazoboniswa"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Ngenisa/Thekelisa"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Ngenisa/Thekelisa othintana nabo"</string>
@@ -457,8 +457,7 @@
     <string name="activity_title_settings" msgid="5464130076132770781">"Izilungiselelo"</string>
     <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Othintana nabo abazoboniswa"</string>
     <string name="menu_settings" msgid="377929915873428211">"Izilungiselelo"</string>
-    <!-- no translation found for menu_help (5123887102216637725) -->
-    <skip />
+    <string name="menu_help" msgid="5123887102216637725">"Usizo"</string>
     <string name="preference_displayOptions" msgid="1341720270148252393">"Izinketho zokubonisa"</string>
     <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
     <string name="hint_findContacts" msgid="1808681193458772072">"Thola othintana nabo"</string>
diff --git a/res/values/donottranslate_config.xml b/res/values/donottranslate_config.xml
index 64a1243..dd94097 100644
--- a/res/values/donottranslate_config.xml
+++ b/res/values/donottranslate_config.xml
@@ -107,6 +107,12 @@
          shown in their own screens. This flag must be in sync with the layout definitions. -->
     <bool name="config_use_two_panes">false</bool>
 
+    <!--  If true, Contacts uses two panes in the favorites view, one for starred and one for
+          frequently contacted.  If false, only one list is shown with starred on top and frequently
+          contacted listed below. Note: This should not be true if config_use_two_panes is
+          false. -->
+    <bool name="config_use_two_panes_in_favorites">false</bool>
+
     <!-- If true, the "home" icon on the action bar will be shown. -->
     <bool name="show_home_icon">false</bool>
 
diff --git a/res/values/integers.xml b/res/values/integers.xml
index e742ba0..6d5f7c9 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -18,6 +18,9 @@
     <!-- Determines the number of columns in a ContactTileRow -->
     <integer name="contact_tile_column_count">2</integer>
 
+    <!--  Determines the number of columns in a ContactTileRow in the favorites tab -->
+    <integer name="contact_tile_column_count_in_favorites">2</integer>
+
     <!-- Max lines to display of a contact's snippet in the "updates" tab of the contact card tab carousel  -->
     <integer name="updates_tab_snippet_max_lines">3</integer>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index defd755..7404335 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -281,13 +281,7 @@
     </style>
 
     <style name="DialtactsActionBarStyle" parent="android:Widget.Holo.ActionBar">
-        <!-- For making test easier. Should use @null.
-             TODO: use @null once we're sure issue 6041917 is gone.
-             Don't forget to add android:showDividers="end" to call_log_fragment.xml
-             and phone_contact_tile_list.xml, to show horizontal divider between
-             the list and the split ActionBar.
-          -->
-        <!-- <item name="android:backgroundSplit">@null</item> -->
+        <item name="android:backgroundSplit">@null</item>
         <item name="android:backgroundStacked">@drawable/ab_stacked_opaque_dark_holo</item>
         <item name="android:displayOptions"></item>
     </style>
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index 8bd9bf9..b9401e1 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -42,11 +42,13 @@
 public class ActionBarAdapter implements OnQueryTextListener, OnCloseListener {
 
     public interface Listener {
-        public enum Action {
-            CHANGE_SEARCH_QUERY, START_SEARCH_MODE, STOP_SEARCH_MODE
+        public abstract class Action {
+            public static final int CHANGE_SEARCH_QUERY = 0;
+            public static final int START_SEARCH_MODE = 1;
+            public static final int STOP_SEARCH_MODE = 2;
         }
 
-        void onAction(Action action);
+        void onAction(int action);
 
         /**
          * Called when the user selects a tab.  The new tab can be obtained using
@@ -238,6 +240,9 @@
             } else {
                 mSearchView.setQuery(null, false);
             }
+        } else if (flag) {
+            // Everything is already set up. Still make sure the keyboard is up
+            if (mSearchView != null) setFocusOnSearchView();
         }
     }
 
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index 56c8c68..b5b0a63 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -82,10 +82,7 @@
         implements View.OnClickListener {
     private static final String TAG = "DialtactsActivity";
 
-    /**
-     * STOPSHIP: This must be turned off after issue 6127931 and 6041917 being resolved.
-     */
-    public static final boolean DEBUG = true;
+    public static final boolean DEBUG = false;
 
     /** Used to open Call Setting */
     private static final String PHONE_PACKAGE = "com.android.phone";
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index eff3294..464075a 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -48,8 +48,8 @@
 import com.android.contacts.list.DirectoryListLoader;
 import com.android.contacts.list.OnContactBrowserActionListener;
 import com.android.contacts.list.OnContactsUnavailableActionListener;
-import com.android.contacts.list.ProviderStatusLoader;
-import com.android.contacts.list.ProviderStatusLoader.ProviderStatusListener;
+import com.android.contacts.list.ProviderStatusWatcher;
+import com.android.contacts.list.ProviderStatusWatcher.ProviderStatusListener;
 import com.android.contacts.model.AccountTypeManager;
 import com.android.contacts.model.AccountWithDataSet;
 import com.android.contacts.preference.ContactsPreferenceActivity;
@@ -149,7 +149,7 @@
     private ContactListFilterController mContactListFilterController;
 
     private ContactsUnavailableFragment mContactsUnavailableFragment;
-    private ProviderStatusLoader mProviderStatusLoader;
+    private ProviderStatusWatcher mProviderStatusWatcher;
     private int mProviderStatus = -1;
 
     private boolean mOptionsMenuContactsAvailable;
@@ -207,7 +207,7 @@
     public PeopleActivity() {
         mInstanceId = sNextInstanceId.getAndIncrement();
         mIntentResolver = new ContactsIntentResolver(this);
-        mProviderStatusLoader = new ProviderStatusLoader(this);
+        mProviderStatusWatcher = ProviderStatusWatcher.getInstance(this);
     }
 
     @Override
@@ -247,7 +247,6 @@
             mContactDetailFragment = (ContactDetailFragment) fragment;
         } else if (fragment instanceof ContactsUnavailableFragment) {
             mContactsUnavailableFragment = (ContactsUnavailableFragment)fragment;
-            mContactsUnavailableFragment.setProviderStatusLoader(mProviderStatusLoader);
             mContactsUnavailableFragment.setOnContactsUnavailableActionListener(
                     new ContactsUnavailableFragmentListener());
         }
@@ -269,6 +268,8 @@
         mContactListFilterController.checkFilterValidity(false);
         mContactListFilterController.addListener(this);
 
+        mProviderStatusWatcher.addListener(this);
+
         mIsRecreatedInstance = (savedState != null);
         createViewsAndFragments(savedState);
         if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
@@ -402,11 +403,13 @@
             mGroupDetailsView = getView(R.id.group_details_view);
             mBrowserView = getView(R.id.browse_view);
 
-            // 2-pane only fragments
-            mFrequentFragment = getFragment(R.id.frequent_fragment);
-            mFrequentFragment.setListener(mFavoritesFragmentListener);
-            mFrequentFragment.setDisplayType(DisplayType.FREQUENT_ONLY);
-            mFrequentFragment.enableQuickContact(true);
+            // Only favorites tab with two panes has a separate frequent fragment
+            if (PhoneCapabilityTester.isUsingTwoPanesInFavorites(this)) {
+                mFrequentFragment = getFragment(R.id.frequent_fragment);
+                mFrequentFragment.setListener(mFavoritesFragmentListener);
+                mFrequentFragment.setDisplayType(DisplayType.FREQUENT_ONLY);
+                mFrequentFragment.enableQuickContact(true);
+            }
 
             mContactDetailLoaderFragment = getFragment(R.id.contact_detail_loader_fragment);
             mContactDetailLoaderFragment.setListener(mContactDetailLoaderFragmentListener);
@@ -430,7 +433,7 @@
         fragmentManager.executePendingTransactions();
 
         // Setting Properties after fragment is created
-        if (PhoneCapabilityTester.isUsingTwoPanes(this)) {
+        if (PhoneCapabilityTester.isUsingTwoPanesInFavorites(this)) {
             mFavoritesFragment.enableQuickContact(true);
             mFavoritesFragment.setDisplayType(DisplayType.STARRED_ONLY);
         } else {
@@ -486,14 +489,14 @@
         mOptionsMenuContactsAvailable = false;
 
         mProviderStatus = -1;
-        mProviderStatusLoader.setProviderStatusListener(null);
+        mProviderStatusWatcher.stop();
         super.onPause();
     }
 
     @Override
     protected void onResume() {
         super.onResume();
-        mProviderStatusLoader.setProviderStatusListener(this);
+        mProviderStatusWatcher.start();
         showContactsUnavailableFragmentIfNecessary();
 
         // Re-register the listener, which may have been cleared when onSaveInstanceState was
@@ -515,6 +518,8 @@
 
     @Override
     protected void onDestroy() {
+        mProviderStatusWatcher.removeListener(this);
+
         // Some of variables will be null if this Activity redirects Intent.
         // See also onCreate() or other methods called during the Activity's initialization.
         if (mActionBarAdapter != null) {
@@ -615,20 +620,20 @@
      * Handler for action bar actions.
      */
     @Override
-    public void onAction(Action action) {
+    public void onAction(int action) {
         switch (action) {
-            case START_SEARCH_MODE:
+            case ActionBarAdapter.Listener.Action.START_SEARCH_MODE:
                 // Tell the fragments that we're in the search mode
                 configureFragments(false /* from request */);
                 updateFragmentsVisibility();
                 invalidateOptionsMenu();
                 break;
-            case STOP_SEARCH_MODE:
+            case ActionBarAdapter.Listener.Action.STOP_SEARCH_MODE:
                 setQueryTextToFragment("");
                 updateFragmentsVisibility();
                 invalidateOptionsMenu();
                 break;
-            case CHANGE_SEARCH_QUERY:
+            case ActionBarAdapter.Listener.Action.CHANGE_SEARCH_QUERY:
                 setQueryTextToFragment(mActionBarAdapter.getQueryString());
                 break;
             default:
@@ -975,7 +980,7 @@
     }
 
     private void showContactsUnavailableFragmentIfNecessary() {
-        int providerStatus = mProviderStatusLoader.getProviderStatus();
+        int providerStatus = mProviderStatusWatcher.getProviderStatus();
         if (providerStatus == mProviderStatus) {
             return;
         }
@@ -1015,7 +1020,6 @@
             }
             if (mContactsUnavailableFragment == null) {
                 mContactsUnavailableFragment = new ContactsUnavailableFragment();
-                mContactsUnavailableFragment.setProviderStatusLoader(mProviderStatusLoader);
                 mContactsUnavailableFragment.setOnContactsUnavailableActionListener(
                         new ContactsUnavailableFragmentListener());
                 getFragmentManager().beginTransaction()
@@ -1448,7 +1452,7 @@
      * @return
      */
     private boolean hasFrequents() {
-        if (PhoneCapabilityTester.isUsingTwoPanes(this)) {
+        if (PhoneCapabilityTester.isUsingTwoPanesInFavorites(this)) {
             return mFrequentFragment.hasFrequents();
         } else {
             return mFavoritesFragment.hasFrequents();
diff --git a/src/com/android/contacts/detail/ContactDetailTabCarousel.java b/src/com/android/contacts/detail/ContactDetailTabCarousel.java
index 1e20689..dd0723d 100644
--- a/src/com/android/contacts/detail/ContactDetailTabCarousel.java
+++ b/src/com/android/contacts/detail/ContactDetailTabCarousel.java
@@ -21,6 +21,7 @@
 import com.android.contacts.detail.ContactDetailPhotoSetter;
 import com.android.contacts.util.MoreMath;
 import com.android.contacts.util.PhoneCapabilityTester;
+import com.android.contacts.util.SchedulingUtils;
 
 import android.content.Context;
 import android.content.res.Resources;
@@ -203,11 +204,19 @@
     @Override
     protected void onLayout(boolean changed, int l, int t, int r, int b) {
         super.onLayout(changed, l, t, r, b);
-        if (mScrollToCurrentTab) {
-            mScrollToCurrentTab = false;
-            scrollTo(mCurrentTab == TAB_INDEX_ABOUT ? 0 : mAllowedHorizontalScrollLength, 0);
-            updateAlphaLayers();
-        }
+
+        // Defer this stuff until after the layout has finished.  This is because
+        // updateAlphaLayers() ultimately results in another layout request, and
+        // the framework currently can't handle this safely.
+        if (!mScrollToCurrentTab) return;
+        mScrollToCurrentTab = false;
+        SchedulingUtils.doAfterLayout(this, new Runnable() {
+            @Override
+            public void run() {
+                scrollTo(mCurrentTab == TAB_INDEX_ABOUT ? 0 : mAllowedHorizontalScrollLength, 0);
+                updateAlphaLayers();
+            }
+        });
     }
 
     /** When clicked, selects the corresponding tab. */
diff --git a/src/com/android/contacts/editor/AggregationSuggestionEngine.java b/src/com/android/contacts/editor/AggregationSuggestionEngine.java
index 0861d92..c340f96 100644
--- a/src/com/android/contacts/editor/AggregationSuggestionEngine.java
+++ b/src/com/android/contacts/editor/AggregationSuggestionEngine.java
@@ -119,7 +119,7 @@
 
     public AggregationSuggestionEngine(Context context) {
         super("AggregationSuggestions", Process.THREAD_PRIORITY_BACKGROUND);
-        mContext = context;
+        mContext = context.getApplicationContext();
         mMainHandler = new Handler() {
             @Override
             public void handleMessage(Message msg) {
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index a18a93f..5a6a3b6 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -724,13 +724,17 @@
             if (bitmap != null) editor.setPhotoBitmap(bitmap);
 
             if (editor instanceof RawContactEditorView) {
+                final Activity activity = getActivity();
                 final RawContactEditorView rawContactEditor = (RawContactEditorView) editor;
                 EditorListener listener = new EditorListener() {
 
                     @Override
                     public void onRequest(int request) {
+                        if (activity.isFinishing()) { // Make sure activity is still running.
+                            return;
+                        }
                         if (request == EditorListener.FIELD_CHANGED && !isEditingUserProfile()) {
-                            acquireAggregationSuggestions(rawContactEditor);
+                            acquireAggregationSuggestions(activity, rawContactEditor);
                         }
                     }
 
@@ -752,7 +756,7 @@
                 rawContactEditor.setAutoAddToDefaultGroup(mAutoAddToDefaultGroup);
 
                 if (rawContactId == mAggregationSuggestionsRawContactId) {
-                    acquireAggregationSuggestions(rawContactEditor);
+                    acquireAggregationSuggestions(activity, rawContactEditor);
                 }
             }
         }
@@ -799,6 +803,7 @@
                 mode = PhotoActionPopup.Modes.READ_ONLY_ALLOW_PRIMARY;
             } else {
                 // Read-only and either no photo or the only photo ==> no options
+                editor.getPhotoEditor().setEditorListener(null);
                 return;
             }
         }
@@ -882,7 +887,7 @@
         // Remove the pressed state from the account header because the user cannot switch accounts
         // on an existing contact
         final View accountView = editor.findViewById(R.id.account);
-        accountView.setBackgroundDrawable(null);
+        accountView.setBackground(null);
         accountView.setEnabled(false);
     }
 
@@ -1350,7 +1355,8 @@
     /**
      * Triggers an asynchronous search for aggregation suggestions.
      */
-    public void acquireAggregationSuggestions(RawContactEditorView rawContactEditor) {
+    private void acquireAggregationSuggestions(Context context,
+            RawContactEditorView rawContactEditor) {
         long rawContactId = rawContactEditor.getRawContactId();
         if (mAggregationSuggestionsRawContactId != rawContactId
                 && mAggregationSuggestionView != null) {
@@ -1362,7 +1368,7 @@
         mAggregationSuggestionsRawContactId = rawContactId;
 
         if (mAggregationSuggestionEngine == null) {
-            mAggregationSuggestionEngine = new AggregationSuggestionEngine(getActivity());
+            mAggregationSuggestionEngine = new AggregationSuggestionEngine(context);
             mAggregationSuggestionEngine.setListener(this);
             mAggregationSuggestionEngine.start();
         }
diff --git a/src/com/android/contacts/editor/PhotoEditorView.java b/src/com/android/contacts/editor/PhotoEditorView.java
index 0cbe97e..955554c 100644
--- a/src/com/android/contacts/editor/PhotoEditorView.java
+++ b/src/com/android/contacts/editor/PhotoEditorView.java
@@ -16,12 +16,12 @@
 
 package com.android.contacts.editor;
 
+import com.android.contacts.ContactsUtils;
 import com.android.contacts.R;
 import com.android.contacts.model.DataKind;
 import com.android.contacts.model.EntityDelta;
 import com.android.contacts.model.EntityDelta.ValuesDelta;
 import com.android.contacts.util.ContactPhotoUtils;
-import com.android.contacts.ContactsUtils;
 
 import android.content.Context;
 import android.graphics.Bitmap;
@@ -29,19 +29,20 @@
 import android.provider.ContactsContract.CommonDataKinds.Photo;
 import android.util.AttributeSet;
 import android.view.View;
-import android.widget.FrameLayout;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
 
 /**
  * Simple editor for {@link Photo}.
  */
-public class PhotoEditorView extends FrameLayout implements Editor {
+public class PhotoEditorView extends LinearLayout implements Editor {
 
     private ImageView mPhotoImageView;
     private View mFrameView;
 
     private ValuesDelta mEntry;
     private EditorListener mListener;
+    private View mTriangleAffordance;
 
     private boolean mHasSetPhoto = false;
     private boolean mReadOnly;
@@ -70,6 +71,7 @@
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
+        mTriangleAffordance = findViewById(R.id.photo_triangle_affordance);
         mPhotoImageView = (ImageView) findViewById(R.id.photo);
         mFrameView = findViewById(R.id.frame);
         mFrameView.setOnClickListener(new OnClickListener() {
@@ -123,8 +125,6 @@
         return mHasSetPhoto;
     }
 
-
-
     /**
      * Assign the given {@link Bitmap} as the new value, updating UI and
      * readying for persisting through {@link ValuesDelta}.
@@ -176,6 +176,10 @@
     @Override
     public void setEditorListener(EditorListener listener) {
         mListener = listener;
+
+        final boolean isPushable = listener != null;
+        mTriangleAffordance.setVisibility(isPushable ? View.VISIBLE : View.INVISIBLE);
+        mFrameView.setVisibility(isPushable ? View.VISIBLE : View.INVISIBLE);
     }
 
     @Override
diff --git a/src/com/android/contacts/editor/RawContactReadOnlyEditorView.java b/src/com/android/contacts/editor/RawContactReadOnlyEditorView.java
index 2cc5d98..58474ef 100644
--- a/src/com/android/contacts/editor/RawContactReadOnlyEditorView.java
+++ b/src/com/android/contacts/editor/RawContactReadOnlyEditorView.java
@@ -55,7 +55,6 @@
         implements OnClickListener {
     private LayoutInflater mInflater;
 
-    private View mPhotoStub;
     private TextView mName;
     private Button mEditExternallyButton;
     private ViewGroup mGeneral;
@@ -96,8 +95,6 @@
         mInflater = (LayoutInflater)getContext().getSystemService(
                 Context.LAYOUT_INFLATER_SERVICE);
 
-        mPhotoStub = findViewById(R.id.stub_photo);
-
         mName = (TextView) findViewById(R.id.read_only_name);
         mEditExternallyButton = (Button) findViewById(R.id.button_edit_externally);
         mEditExternallyButton.setOnClickListener(this);
@@ -177,13 +174,6 @@
             setHasPhotoEditor(hasPhotoEditor);
             primary = state.getPrimaryEntry(Photo.CONTENT_ITEM_TYPE);
             getPhotoEditor().setValues(kind, primary, state, !type.areContactsWritable(), vig);
-            if (!hasPhotoEditor || !getPhotoEditor().hasSetPhoto()) {
-                mPhotoStub.setVisibility(View.GONE);
-            } else {
-                mPhotoStub.setVisibility(View.VISIBLE);
-            }
-        } else {
-            mPhotoStub.setVisibility(View.VISIBLE);
         }
 
         // Name
diff --git a/src/com/android/contacts/list/ContactEntryListFragment.java b/src/com/android/contacts/list/ContactEntryListFragment.java
index 5ee25a2..27fdada 100644
--- a/src/com/android/contacts/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/list/ContactEntryListFragment.java
@@ -128,7 +128,6 @@
     private ContextMenuAdapter mContextMenuAdapter;
     private ContactPhotoManager mPhotoManager;
     private ContactListEmptyView mEmptyView;
-    private ProviderStatusLoader mProviderStatusLoader;
     private ContactsPreferences mContactsPrefs;
 
     private boolean mForceLoad;
@@ -291,10 +290,6 @@
 
         mContactsPrefs.registerChangeListener(mPreferencesChangeListener);
 
-        if (mProviderStatusLoader == null) {
-            mProviderStatusLoader = new ProviderStatusLoader(mContext);
-        }
-
         mForceLoad = loadPreferences();
 
         mDirectoryListStatus = STATUS_NOT_LOADED;
diff --git a/src/com/android/contacts/list/ContactTileListFragment.java b/src/com/android/contacts/list/ContactTileListFragment.java
index 9f34c54..4ee20f5 100644
--- a/src/com/android/contacts/list/ContactTileListFragment.java
+++ b/src/com/android/contacts/list/ContactTileListFragment.java
@@ -19,6 +19,7 @@
 import com.android.contacts.ContactTileLoaderFactory;
 import com.android.contacts.R;
 import com.android.contacts.list.ContactTileAdapter.DisplayType;
+import com.android.contacts.util.PhoneCapabilityTester;
 
 import android.app.Activity;
 import android.app.Fragment;
@@ -31,6 +32,7 @@
 import android.graphics.Rect;
 import android.net.Uri;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -53,8 +55,6 @@
         void onCallNumberDirectly(String phoneNumber);
     }
 
-    private static int LOADER_CONTACTS = 1;
-
     private Listener mListener;
     private ContactTileAdapter mAdapter;
     private DisplayType mDisplayType;
@@ -68,7 +68,7 @@
         super.onAttach(activity);
 
         Resources res = getResources();
-        int columnCount = res.getInteger(R.integer.contact_tile_column_count);
+        int columnCount = res.getInteger(R.integer.contact_tile_column_count_in_favorites);
 
         mAdapter = new ContactTileAdapter(activity, mAdapterListener,
                 columnCount, mDisplayType);
@@ -97,7 +97,17 @@
     @Override
     public void onStart() {
         super.onStart();
-        getLoaderManager().initLoader(LOADER_CONTACTS, null, mContactTileLoaderListener);
+
+        // initialize the loader for this display type and destroy all others
+        final DisplayType[] loaderTypes = mDisplayType.values();
+        for (int i = 0; i < loaderTypes.length; i++) {
+            if (loaderTypes[i] == mDisplayType) {
+                getLoaderManager().initLoader(mDisplayType.ordinal(), null,
+                        mContactTileLoaderListener);
+            } else {
+                getLoaderManager().destroyLoader(loaderTypes[i].ordinal());
+            }
+        }
     }
 
     /**
diff --git a/src/com/android/contacts/list/ContactsUnavailableFragment.java b/src/com/android/contacts/list/ContactsUnavailableFragment.java
index 74a578f..becc704 100644
--- a/src/com/android/contacts/list/ContactsUnavailableFragment.java
+++ b/src/com/android/contacts/list/ContactsUnavailableFragment.java
@@ -35,7 +35,7 @@
  */
 public class ContactsUnavailableFragment extends Fragment implements OnClickListener {
 
-    private ProviderStatusLoader mProviderStatusLoader;
+    private ProviderStatusWatcher mProviderStatusWatcher;
 
     private View mView;
     private TextView mMessageView;
@@ -52,6 +52,12 @@
     private OnContactsUnavailableActionListener mListener;
 
     @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mProviderStatusWatcher = ProviderStatusWatcher.getInstance(getActivity());
+    }
+
+    @Override
     public View onCreateView(
             LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         mView = inflater.inflate(R.layout.contacts_unavailable_fragment, null);
@@ -77,12 +83,8 @@
         mListener = listener;
     }
 
-    public void setProviderStatusLoader(ProviderStatusLoader loader) {
-        mProviderStatusLoader = loader;
-    }
-
     public void update() {
-        int providerStatus = mProviderStatusLoader.getProviderStatus();
+        int providerStatus = mProviderStatusWatcher.getProviderStatus();
         switch (providerStatus) {
             case ProviderStatus.STATUS_NO_ACCOUNTS_NO_CONTACTS:
                 setMessageText(mNoContactsMsgResId, mNSecNoContactsMsgResId);
@@ -120,7 +122,7 @@
 
             case ProviderStatus.STATUS_UPGRADE_OUT_OF_MEMORY:
                 String message = getResources().getString(R.string.upgrade_out_of_memory,
-                        new Object[] { mProviderStatusLoader.getProviderStatusData() });
+                        new Object[] { mProviderStatusWatcher.getProviderStatusData() });
                 mMessageView.setText(message);
                 mMessageView.setGravity(Gravity.LEFT);
                 mMessageView.setVisibility(View.VISIBLE);
@@ -153,7 +155,7 @@
                 mListener.onFreeInternalStorageAction();
                 break;
             case R.id.import_failure_retry_button:
-                mProviderStatusLoader.retryUpgrade();
+                mProviderStatusWatcher.retryUpgrade();
                 break;
         }
     }
@@ -166,7 +168,7 @@
         mNoContactsMsgResId = resId;
         mNSecNoContactsMsgResId = secResId;
         if (mMessageView != null &&
-                mProviderStatusLoader.getProviderStatus() ==
+                mProviderStatusWatcher.getProviderStatus() ==
                     ProviderStatus.STATUS_NO_ACCOUNTS_NO_CONTACTS) {
             if (resId != -1) {
                 mMessageView.setText(mNoContactsMsgResId);
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 6e3cc05..5c79c45 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -34,7 +34,6 @@
 import android.widget.Button;
 import android.widget.FrameLayout;
 import android.widget.ListView;
-import android.widget.ProgressBar;
 import android.widget.TextView;
 
 /**
@@ -54,6 +53,8 @@
     private Button mProfileMessage;
     private FrameLayout mMessageContainer;
     private TextView mProfileTitle;
+    private View mSearchProgress;
+    private TextView mSearchProgressText;
 
     private View mPaddingView;
 
@@ -117,12 +118,21 @@
         headerContainer.addView(mSearchHeaderView);
         getListView().addHeaderView(headerContainer, null, false);
         checkHeaderViewVisibility();
+
+        mSearchProgress = getView().findViewById(R.id.search_progress);
+        mSearchProgressText = (TextView) mSearchHeaderView.findViewById(R.id.totalContactsText);
     }
 
     @Override
     protected void setSearchMode(boolean flag) {
         super.setSearchMode(flag);
         checkHeaderViewVisibility();
+        if (!flag) showSearchProgress(false);
+    }
+
+    /** Show or hide the directory-search progress spinner. */
+    private void showSearchProgress(boolean show) {
+        mSearchProgress.setVisibility(show ? View.VISIBLE : View.GONE);
     }
 
     private void checkHeaderViewVisibility() {
@@ -203,19 +213,17 @@
             // In search mode we only display the header if there is nothing found
             if (TextUtils.isEmpty(getQueryString()) || !adapter.areAllPartitionsEmpty()) {
                 mSearchHeaderView.setVisibility(View.GONE);
+                showSearchProgress(false);
             } else {
-                TextView textView = (TextView) mSearchHeaderView.findViewById(
-                        R.id.totalContactsText);
-                ProgressBar progress = (ProgressBar) mSearchHeaderView.findViewById(
-                        R.id.progress);
                 mSearchHeaderView.setVisibility(View.VISIBLE);
                 if (adapter.isLoading()) {
-                    textView.setText(R.string.search_results_searching);
-                    progress.setVisibility(View.VISIBLE);
+                    mSearchProgressText.setText(R.string.search_results_searching);
+                    showSearchProgress(true);
                 } else {
-                    textView.setText(R.string.listFoundAllContactsZero);
-                    textView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
-                    progress.setVisibility(View.GONE);
+                    mSearchProgressText.setText(R.string.listFoundAllContactsZero);
+                    mSearchProgressText.sendAccessibilityEvent(
+                            AccessibilityEvent.TYPE_VIEW_SELECTED);
+                    showSearchProgress(false);
                 }
             }
             showEmptyUserProfile(false);
diff --git a/src/com/android/contacts/list/PhoneFavoriteFragment.java b/src/com/android/contacts/list/PhoneFavoriteFragment.java
index a8eafdc..170790f 100644
--- a/src/com/android/contacts/list/PhoneFavoriteFragment.java
+++ b/src/com/android/contacts/list/PhoneFavoriteFragment.java
@@ -275,7 +275,7 @@
         // that will be available on onCreateView().
 
         mContactTileAdapter = new ContactTileAdapter(activity, mContactTileAdapterListener,
-                getResources().getInteger(R.integer.contact_tile_column_count),
+                getResources().getInteger(R.integer.contact_tile_column_count_in_favorites),
                 ContactTileAdapter.DisplayType.STREQUENT_PHONE_ONLY);
         mContactTileAdapter.setPhotoLoader(ContactPhotoManager.getInstance(activity));
 
diff --git a/src/com/android/contacts/list/ProviderStatusLoader.java b/src/com/android/contacts/list/ProviderStatusLoader.java
deleted file mode 100644
index a6afa9f..0000000
--- a/src/com/android/contacts/list/ProviderStatusLoader.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.contacts.list;
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.os.Handler;
-import android.provider.ContactsContract.ProviderStatus;
-
-/**
- * Checks provider status and configures a list adapter accordingly.
- */
-public class ProviderStatusLoader extends ContentObserver {
-
-    /**
-     * Callback interface invoked when the provider status changes.
-     */
-    public interface ProviderStatusListener {
-        public void onProviderStatusChange();
-    }
-
-    private static final String[] PROJECTION = new String[] {
-        ProviderStatus.STATUS,
-        ProviderStatus.DATA1
-    };
-
-    private static final int UNKNOWN = -1;
-
-    private final Context mContext;
-    private int mProviderStatus = UNKNOWN;
-    private String mProviderData;
-    private ProviderStatusListener mListener;
-    private Handler mHandler = new Handler();
-
-    public ProviderStatusLoader(Context context) {
-        super(null);
-        this.mContext = context;
-    }
-
-    public int getProviderStatus() {
-        if (mProviderStatus == UNKNOWN) {
-            loadProviderStatus();
-        }
-
-        return mProviderStatus;
-    }
-
-    public String getProviderStatusData() {
-        if (mProviderStatus == UNKNOWN) {
-            loadProviderStatus();
-        }
-
-        return mProviderData;
-    }
-
-    protected void loadProviderStatus() {
-
-        // Default to normal status
-        mProviderStatus = ProviderStatus.STATUS_NORMAL;
-
-        // This query can be performed on the UI thread because
-        // the API explicitly allows such use.
-        Cursor cursor = mContext.getContentResolver().query(ProviderStatus.CONTENT_URI,
-                PROJECTION, null, null, null);
-        if (cursor != null) {
-            try {
-                if (cursor.moveToFirst()) {
-                    mProviderStatus = cursor.getInt(0);
-                    mProviderData = cursor.getString(1);
-                }
-            } finally {
-                cursor.close();
-            }
-        }
-    }
-
-    public void setProviderStatusListener(ProviderStatusListener listener) {
-        mListener = listener;
-
-        ContentResolver resolver = mContext.getContentResolver();
-        if (listener != null) {
-            mProviderStatus = UNKNOWN;
-            resolver.registerContentObserver(ProviderStatus.CONTENT_URI, false, this);
-        } else {
-            resolver.unregisterContentObserver(this);
-        }
-    }
-
-    @Override
-    public void onChange(boolean selfChange) {
-        // Deliver a notification on the UI thread
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                if (mListener != null) {
-                    mProviderStatus = UNKNOWN;
-                    mListener.onProviderStatusChange();
-                }
-            }
-        });
-    }
-
-    /**
-     * Sends a provider status update, which will trigger a retry of database upgrade
-     */
-    public void retryUpgrade() {
-        ContentValues values = new ContentValues();
-        values.put(ProviderStatus.STATUS, ProviderStatus.STATUS_UPGRADING);
-        mContext.getContentResolver().update(ProviderStatus.CONTENT_URI, values, null, null);
-    }
-}
diff --git a/src/com/android/contacts/list/ProviderStatusWatcher.java b/src/com/android/contacts/list/ProviderStatusWatcher.java
new file mode 100644
index 0000000..3ce4b78
--- /dev/null
+++ b/src/com/android/contacts/list/ProviderStatusWatcher.java
@@ -0,0 +1,308 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.contacts.list;
+
+import com.google.common.collect.Lists;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Handler;
+import android.provider.ContactsContract.ProviderStatus;
+import android.util.Log;
+
+import java.util.ArrayList;
+
+/**
+ * A singleton that keeps track of the last known provider status.
+ *
+ * All methods must be called on the UI thread unless noted otherwise.
+ *
+ * All members must be set on the UI thread unless noted otherwise.
+ */
+public class ProviderStatusWatcher extends ContentObserver {
+    private static final String TAG = "ProviderStatusWatcher";
+    private static final boolean DEBUG = false;
+
+    /**
+     * Callback interface invoked when the provider status changes.
+     */
+    public interface ProviderStatusListener {
+        public void onProviderStatusChange();
+    }
+
+    private static final String[] PROJECTION = new String[] {
+        ProviderStatus.STATUS,
+        ProviderStatus.DATA1
+    };
+
+    /**
+     * We'll wait for this amount of time on the UI thread if the load hasn't finished.
+     */
+    private static final int LOAD_WAIT_TIMEOUT_MS = 1000;
+
+    private static final int STATUS_UNKNOWN = -1;
+
+    private static ProviderStatusWatcher sInstance;
+
+    private final Context mContext;
+    private final Handler mHandler = new Handler();
+
+    private final Object mSignal = new Object();
+
+    private int mStartRequestedCount;
+
+    private LoaderTask mLoaderTask;
+
+    /** Last known provider status.  This can be changed on a worker thread. */
+    private int mProviderStatus = STATUS_UNKNOWN;
+
+    /** Last known provider status data.  This can be changed on a worker thread. */
+    private String mProviderData;
+
+    private final ArrayList<ProviderStatusListener> mListeners = Lists.newArrayList();
+
+    private final Runnable mStartLoadingRunnable = new Runnable() {
+        @Override
+        public void run() {
+            startLoading();
+        }
+    };
+
+    /**
+     * Returns the singleton instance.
+     */
+    public synchronized static ProviderStatusWatcher getInstance(Context context) {
+        if (sInstance == null) {
+            sInstance = new ProviderStatusWatcher(context);
+        }
+        return sInstance;
+    }
+
+    private ProviderStatusWatcher(Context context) {
+        super(null);
+        mContext = context;
+    }
+
+    /** Add a listener. */
+    public void addListener(ProviderStatusListener listener) {
+        mListeners.add(listener);
+    }
+
+    /** Remove a listener */
+    public void removeListener(ProviderStatusListener listener) {
+        mListeners.remove(listener);
+    }
+
+    private void notifyListeners() {
+        if (DEBUG) {
+            Log.d(TAG, "notifyListeners: " + mListeners.size());
+        }
+        if (isStarted()) {
+            for (ProviderStatusListener listener : mListeners) {
+                listener.onProviderStatusChange();
+            }
+        }
+    }
+
+    private boolean isStarted() {
+        return mStartRequestedCount > 0;
+    }
+
+    /**
+     * Starts watching the provider status.  {@link #start()} and {@link #stop()} calls can be
+     * nested.
+     */
+    public void start() {
+        if (++mStartRequestedCount == 1) {
+            mContext.getContentResolver()
+                .registerContentObserver(ProviderStatus.CONTENT_URI, false, this);
+            startLoading();
+
+            if (DEBUG) {
+                Log.d(TAG, "Start observing");
+            }
+        }
+    }
+
+    /**
+     * Stops watching the provider status.
+     */
+    public void stop() {
+        if (!isStarted()) {
+            Log.e(TAG, "Already stopped");
+            return;
+        }
+        if (--mStartRequestedCount == 0) {
+
+            mHandler.removeCallbacks(mStartLoadingRunnable);
+
+            mContext.getContentResolver().unregisterContentObserver(this);
+            if (DEBUG) {
+                Log.d(TAG, "Stop observing");
+            }
+        }
+    }
+
+    /**
+     * @return last known provider status.
+     *
+     * If this method is called when we haven't started the status query or the query is still in
+     * progress, it will start a query in a worker thread if necessary, and *wait for the result*.
+     *
+     * This means this method is essentially a blocking {@link ProviderStatus#CONTENT_URI} query.
+     * This URI is not backed by the file system, so is usually fast enough to perform on the main
+     * thread, but in extreme cases (when the system takes a while to bring up the contacts
+     * provider?) this may still cause ANRs.
+     *
+     * In order to avoid that, if we can't load the status within {@link #LOAD_WAIT_TIMEOUT_MS},
+     * we'll give up and just returns {@link ProviderStatus#STATUS_UPGRADING} in order to unblock
+     * the UI thread.  The actual result will be delivered later via {@link ProviderStatusListener}.
+     * (If {@link ProviderStatus#STATUS_UPGRADING} is returned, the app (should) shows an according
+     * message, like "contacts are being updated".)
+     */
+    public int getProviderStatus() {
+        waitForLoaded();
+
+        if (mProviderStatus == STATUS_UNKNOWN) {
+            return ProviderStatus.STATUS_UPGRADING;
+        }
+
+        return mProviderStatus;
+    }
+
+    /**
+     * @return last known provider status data.  See also {@link #getProviderStatus()}.
+     */
+    public String getProviderStatusData() {
+        waitForLoaded();
+
+        if (mProviderStatus == STATUS_UNKNOWN) {
+            // STATUS_UPGRADING has no data.
+            return "";
+        }
+
+        return mProviderData;
+    }
+
+    private void waitForLoaded() {
+        if (mProviderStatus == STATUS_UNKNOWN) {
+            if (mLoaderTask == null) {
+                // For some reason the loader couldn't load the status.  Let's start it again.
+                startLoading();
+            }
+            synchronized (mSignal) {
+                try {
+                    mSignal.wait(LOAD_WAIT_TIMEOUT_MS);
+                } catch (InterruptedException ignore) {
+                }
+            }
+        }
+    }
+
+    private void startLoading() {
+        if (mLoaderTask != null) {
+            return; // Task already running.
+        }
+
+        if (DEBUG) {
+            Log.d(TAG, "Start loading");
+        }
+
+        mLoaderTask = new LoaderTask();
+        mLoaderTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+    }
+
+    private class LoaderTask extends AsyncTask<Void, Void, Boolean> {
+        @Override
+        protected Boolean doInBackground(Void... params) {
+            try {
+                Cursor cursor = mContext.getContentResolver().query(ProviderStatus.CONTENT_URI,
+                        PROJECTION, null, null, null);
+                if (cursor != null) {
+                    try {
+                        if (cursor.moveToFirst()) {
+                            mProviderStatus = cursor.getInt(0);
+                            mProviderData = cursor.getString(1);
+                            return true;
+                        }
+                    } finally {
+                        cursor.close();
+                    }
+                }
+                return false;
+            } finally {
+                synchronized (mSignal) {
+                    mSignal.notifyAll();
+                }
+            }
+        }
+
+        @Override
+        protected void onCancelled(Boolean result) {
+            cleanUp();
+        }
+
+        @Override
+        protected void onPostExecute(Boolean loaded) {
+            cleanUp();
+            if (loaded != null && loaded) {
+                notifyListeners();
+            }
+        }
+
+        private void cleanUp() {
+            mLoaderTask = null;
+        }
+    }
+
+    /**
+     * Called when provider status may has changed.
+     *
+     * This method will be called on a worker thread by the framework.
+     */
+    @Override
+    public void onChange(boolean selfChange, Uri uri) {
+        if (!ProviderStatus.CONTENT_URI.equals(uri)) return;
+
+        // Provider status change is rare, so okay to log.
+        Log.i(TAG, "Provider status changed.");
+
+        mHandler.removeCallbacks(mStartLoadingRunnable); // Remove one in the queue, if any.
+        mHandler.post(mStartLoadingRunnable);
+    }
+
+    /**
+     * Sends a provider status update, which will trigger a retry of database upgrade
+     */
+    public void retryUpgrade() {
+        Log.i(TAG, "retryUpgrade");
+        final AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
+            @Override
+            protected Void doInBackground(Void... params) {
+                ContentValues values = new ContentValues();
+                values.put(ProviderStatus.STATUS, ProviderStatus.STATUS_UPGRADING);
+                mContext.getContentResolver().update(ProviderStatus.CONTENT_URI, values,
+                        null, null);
+                return null;
+            }
+        };
+        task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+    }
+}
diff --git a/src/com/android/contacts/util/PhoneCapabilityTester.java b/src/com/android/contacts/util/PhoneCapabilityTester.java
index d3a8060..ce248bb 100644
--- a/src/com/android/contacts/util/PhoneCapabilityTester.java
+++ b/src/com/android/contacts/util/PhoneCapabilityTester.java
@@ -89,4 +89,11 @@
     public static boolean isUsingTwoPanes(Context context) {
         return context.getResources().getBoolean(R.bool.config_use_two_panes);
     }
+
+    /**
+     * True if the favorites tab should be shown in two-pane mode.  False, otherwise.
+     */
+    public static boolean isUsingTwoPanesInFavorites(Context context) {
+        return context.getResources().getBoolean(R.bool.config_use_two_panes_in_favorites);
+    }
 }
diff --git a/src/com/android/contacts/widget/SearchEditText.java b/src/com/android/contacts/widget/SearchEditText.java
deleted file mode 100644
index d8ea2be..0000000
--- a/src/com/android/contacts/widget/SearchEditText.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.widget;
-
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.util.AttributeSet;
-import android.view.KeyEvent;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.EditText;
-import android.widget.TextView;
-import android.widget.TextView.OnEditorActionListener;
-
-/**
- * A custom text editor that helps automatically dismiss the activity along with the soft
- * keyboard.
- */
-public class SearchEditText extends EditText implements OnEditorActionListener, TextWatcher {
-
-    private boolean mMaginfyingGlassEnabled = true;
-    private Drawable mMagnifyingGlass;
-    private OnFilterTextListener mListener;
-
-    private boolean mMagnifyingGlassShown;
-
-    public interface OnFilterTextListener {
-        void onFilterChange(String queryString);
-        void onCancelSearch();
-    }
-
-    public SearchEditText(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        addTextChangedListener(this);
-        setOnEditorActionListener(this);
-        mMagnifyingGlass = getCompoundDrawables()[2];
-        setCompoundDrawables(null, null, null, null);
-    }
-
-    public boolean isMaginfyingGlassEnabled() {
-        return mMaginfyingGlassEnabled;
-    }
-
-    public void setMaginfyingGlassEnabled(boolean flag) {
-        this.mMaginfyingGlassEnabled = flag;
-    }
-
-    public void setOnFilterTextListener(OnFilterTextListener listener) {
-        this.mListener = listener;
-    }
-
-    /**
-     * Conditionally shows a magnifying glass icon on the right side of the text field
-     * when the text it empty.
-     */
-    @Override
-    public boolean onPreDraw() {
-        boolean emptyText = TextUtils.isEmpty(getText());
-        if (mMagnifyingGlassShown != emptyText) {
-            mMagnifyingGlassShown = emptyText;
-            if (mMagnifyingGlassShown && mMaginfyingGlassEnabled) {
-                setCompoundDrawables(null, null, mMagnifyingGlass, null);
-            } else {
-                setCompoundDrawables(null, null, null, null);
-            }
-            return false;
-        }
-        return super.onPreDraw();
-    }
-
-    /**
-     * Dismisses the search UI along with the keyboard if the filter text is empty.
-     */
-    @Override
-    public boolean onKeyPreIme(int keyCode, KeyEvent event) {
-        if (keyCode == KeyEvent.KEYCODE_BACK && TextUtils.isEmpty(getText()) && mListener != null) {
-            mListener.onCancelSearch();
-            return true;
-        }
-        return false;
-    }
-
-    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-    }
-
-    @Override
-    public void onTextChanged(CharSequence s, int start, int before, int count) {
-    }
-
-    /**
-     * Event handler for search UI.
-     */
-    public void afterTextChanged(Editable s) {
-        if (mListener != null) {
-            mListener.onFilterChange(trim(s));
-        }
-    }
-
-    private String trim(Editable s) {
-        return s.toString().trim();
-    }
-
-    /**
-     * Event handler for search UI.
-     */
-    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-        if (actionId == EditorInfo.IME_ACTION_DONE) {
-            hideSoftKeyboard();
-            if (TextUtils.isEmpty(trim(getText())) && mListener != null) {
-                mListener.onCancelSearch();
-            }
-            return true;
-        }
-        return false;
-    }
-
-    private void hideSoftKeyboard() {
-        // Hide soft keyboard, if visible
-        InputMethodManager inputMethodManager = (InputMethodManager)
-                getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
-        inputMethodManager.hideSoftInputFromWindow(getWindowToken(), 0);
-    }
-
-}