merge in KQS81M
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 99602f6..b0d988c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -45,6 +45,10 @@
     <!-- allow broadcasting secret code intents that reboot the phone -->
     <uses-permission android:name="android.permission.REBOOT" />
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <!-- This tells the activity manager to not delay any of our activity
+     start requests, even if they happen immediately after the user
+     presses home. -->
+    <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
 
     <application
         android:name="DialerApplication"
@@ -142,6 +146,7 @@
                   android:theme="@style/CallDetailActivityTheme"
                   android:screenOrientation="portrait"
                   android:icon="@mipmap/ic_launcher_phone"
+                  android:parentActivityName="com.android.dialer.calllog.CallLogActivity"
             >
             <intent-filter>
                 <action android:name="android.intent.action.VIEW"/>
diff --git a/res/drawable-hdpi/ic_arrow.png b/res/drawable-hdpi/ic_arrow.png
new file mode 100644
index 0000000..8d0dfcd
--- /dev/null
+++ b/res/drawable-hdpi/ic_arrow.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_call_log_blue.png b/res/drawable-hdpi/ic_call_log_blue.png
new file mode 100644
index 0000000..92af15f
--- /dev/null
+++ b/res/drawable-hdpi/ic_call_log_blue.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_cancel_holo_light.png b/res/drawable-hdpi/ic_cancel_holo_light.png
new file mode 100644
index 0000000..d8cacb4
--- /dev/null
+++ b/res/drawable-hdpi/ic_cancel_holo_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_dialpad_dk.png b/res/drawable-hdpi/ic_menu_dialpad_dk.png
index 984d6fa..55f5477 100644
--- a/res/drawable-hdpi/ic_menu_dialpad_dk.png
+++ b/res/drawable-hdpi/ic_menu_dialpad_dk.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_star_marked_as_fav.png b/res/drawable-hdpi/ic_star_marked_as_fav.png
new file mode 100644
index 0000000..8a138c4
--- /dev/null
+++ b/res/drawable-hdpi/ic_star_marked_as_fav.png
Binary files differ
diff --git a/res/drawable-hdpi/no_favorites_banner.png b/res/drawable-hdpi/no_favorites_banner.png
new file mode 100644
index 0000000..a4b09c0
--- /dev/null
+++ b/res/drawable-hdpi/no_favorites_banner.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_arrow.png b/res/drawable-mdpi/ic_arrow.png
new file mode 100644
index 0000000..96440a2
--- /dev/null
+++ b/res/drawable-mdpi/ic_arrow.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_call_log_blue.png b/res/drawable-mdpi/ic_call_log_blue.png
new file mode 100644
index 0000000..b9209ad
--- /dev/null
+++ b/res/drawable-mdpi/ic_call_log_blue.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_cancel_holo_light.png b/res/drawable-mdpi/ic_cancel_holo_light.png
new file mode 100644
index 0000000..56705c3
--- /dev/null
+++ b/res/drawable-mdpi/ic_cancel_holo_light.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_dialpad_dk.png b/res/drawable-mdpi/ic_menu_dialpad_dk.png
index c55571a..a7dcd24 100644
--- a/res/drawable-mdpi/ic_menu_dialpad_dk.png
+++ b/res/drawable-mdpi/ic_menu_dialpad_dk.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_star_marked_as_fav.png b/res/drawable-mdpi/ic_star_marked_as_fav.png
new file mode 100644
index 0000000..ee1b5ec
--- /dev/null
+++ b/res/drawable-mdpi/ic_star_marked_as_fav.png
Binary files differ
diff --git a/res/drawable-mdpi/no_favorites_banner.png b/res/drawable-mdpi/no_favorites_banner.png
new file mode 100644
index 0000000..ac080b9
--- /dev/null
+++ b/res/drawable-mdpi/no_favorites_banner.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_arrow.png b/res/drawable-xhdpi/ic_arrow.png
new file mode 100644
index 0000000..889c33f
--- /dev/null
+++ b/res/drawable-xhdpi/ic_arrow.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_call_log_blue.png b/res/drawable-xhdpi/ic_call_log_blue.png
new file mode 100644
index 0000000..9d92573
--- /dev/null
+++ b/res/drawable-xhdpi/ic_call_log_blue.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_cancel_holo_light.png b/res/drawable-xhdpi/ic_cancel_holo_light.png
new file mode 100644
index 0000000..630f3fd
--- /dev/null
+++ b/res/drawable-xhdpi/ic_cancel_holo_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_dialpad_dk.png b/res/drawable-xhdpi/ic_menu_dialpad_dk.png
index 74a7032..bd80859 100644
--- a/res/drawable-xhdpi/ic_menu_dialpad_dk.png
+++ b/res/drawable-xhdpi/ic_menu_dialpad_dk.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_star_marked_as_fav.png b/res/drawable-xhdpi/ic_star_marked_as_fav.png
new file mode 100644
index 0000000..372747a
--- /dev/null
+++ b/res/drawable-xhdpi/ic_star_marked_as_fav.png
Binary files differ
diff --git a/res/drawable-xhdpi/no_favorites_banner.png b/res/drawable-xhdpi/no_favorites_banner.png
new file mode 100644
index 0000000..bae4e99
--- /dev/null
+++ b/res/drawable-xhdpi/no_favorites_banner.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_arrow.png b/res/drawable-xxhdpi/ic_arrow.png
new file mode 100644
index 0000000..f8e7731
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_arrow.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_call_log_blue.png b/res/drawable-xxhdpi/ic_call_log_blue.png
new file mode 100644
index 0000000..0a55a75
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_call_log_blue.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_cancel_holo_light.png b/res/drawable-xxhdpi/ic_cancel_holo_light.png
new file mode 100644
index 0000000..c2f5b5e
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_cancel_holo_light.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_fav_undo_dk.png b/res/drawable-xxhdpi/ic_fav_undo_dk.png
index a37d2bd..4b7dfc4 100644
--- a/res/drawable-xxhdpi/ic_fav_undo_dk.png
+++ b/res/drawable-xxhdpi/ic_fav_undo_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_dialpad_dk.png b/res/drawable-xxhdpi/ic_menu_dialpad_dk.png
index de9387d..09cc2f8 100644
--- a/res/drawable-xxhdpi/ic_menu_dialpad_dk.png
+++ b/res/drawable-xxhdpi/ic_menu_dialpad_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_star_marked_as_fav.png b/res/drawable-xxhdpi/ic_star_marked_as_fav.png
new file mode 100644
index 0000000..3eeff4c
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_star_marked_as_fav.png
Binary files differ
diff --git a/res/drawable-xxhdpi/no_favorites_banner.png b/res/drawable-xxhdpi/no_favorites_banner.png
new file mode 100644
index 0000000..0e2a4fa
--- /dev/null
+++ b/res/drawable-xxhdpi/no_favorites_banner.png
Binary files differ
diff --git a/res/layout/call_log_list_item.xml b/res/layout/call_log_list_item.xml
index c49b4b0..1bd448c 100644
--- a/res/layout/call_log_list_item.xml
+++ b/res/layout/call_log_list_item.xml
@@ -140,4 +140,10 @@
         android:paddingTop="@dimen/call_log_inner_margin"
         android:paddingBottom="@dimen/call_log_inner_margin" />
 
+    <!-- Displays the extra link section -->
+    <ViewStub android:id="@+id/link_stub"
+              android:layout="@layout/call_log_list_item_extra"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"/>
+
 </view>
diff --git a/res/layout/call_log_list_item_extra.xml b/res/layout/call_log_list_item_extra.xml
new file mode 100644
index 0000000..fbf71f6
--- /dev/null
+++ b/res/layout/call_log_list_item_extra.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2013 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<!-- Can't use merge here because this is referenced via a ViewStub -->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+             android:id="@+id/badge_container">
+
+    <View android:layout_width="match_parent"
+          android:layout_height="1px"
+          android:layout_marginStart="@dimen/call_log_outer_margin"
+          android:layout_marginEnd="@dimen/call_log_outer_margin"
+          android:background="@color/favorite_contacts_separator_color"/>
+
+    <LinearLayout android:id="@+id/badge_link_container"
+                  android:layout_width="match_parent"
+                  android:layout_height="wrap_content"
+                  android:paddingStart="@dimen/call_log_outer_margin"
+                  android:paddingEnd="@dimen/call_log_outer_margin"
+                  android:paddingTop="0dip"
+                  android:paddingBottom="0dip"
+                  android:background="?android:attr/selectableItemBackground"
+                  android:clickable="true">
+        <ImageView android:layout_width="wrap_content"
+                   android:layout_height="wrap_content"
+                   android:id="@+id/badge_image"
+                   android:padding="@dimen/call_log_outer_margin"/>
+        <TextView android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:id="@+id/badge_text"
+                  android:textColor="@color/dialpad_primary_text_color"
+                  android:layout_gravity="center_vertical"
+                  android:layout_weight="1"/>
+        <ImageView android:id="@+id/dismiss_button"
+                   android:layout_width="wrap_content"
+                   android:layout_height="wrap_content"
+                   android:paddingTop="8dip"
+                   android:src="@drawable/ic_close_dk"
+                   android:background="?android:attr/selectableItemBackground"
+                   android:visibility="gone"
+                   android:contentDescription="@string/description_dismiss"/>
+    </LinearLayout>
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/dialpad.xml b/res/layout/dialpad.xml
index ec850c9..bc910db 100644
--- a/res/layout/dialpad.xml
+++ b/res/layout/dialpad.xml
@@ -36,7 +36,8 @@
             xmlns:android="http://schemas.android.com/apk/res/android"
             android:id="@+id/one"
             style="@style/DialtactsDialpadButtonStyle"
-            android:clickable="true" >
+            android:clickable="true"
+            android:focusable="true" >
             <LinearLayout
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
@@ -85,7 +86,8 @@
             xmlns:android="http://schemas.android.com/apk/res/android"
             android:id="@+id/star"
             style="@style/DialtactsDialpadButtonStyle"
-            android:clickable="true" >
+            android:clickable="true"
+            android:focusable="true" >
             <TextView
                 android:id="@id/dialpad_key_number"
                 android:layout_width="wrap_content"
@@ -101,7 +103,8 @@
             xmlns:android="http://schemas.android.com/apk/res/android"
             android:id="@+id/pound"
             style="@style/DialtactsDialpadButtonStyle"
-            android:clickable="true" >
+            android:clickable="true"
+            android:focusable="true" >
             <TextView
                 android:id="@id/dialpad_key_number"
                 android:layout_width="wrap_content"
diff --git a/res/layout/dialpad_fragment.xml b/res/layout/dialpad_fragment.xml
index dc28352..32b1d60 100644
--- a/res/layout/dialpad_fragment.xml
+++ b/res/layout/dialpad_fragment.xml
@@ -41,7 +41,7 @@
             android:id="@+id/digits_container"
             android:layout_width="match_parent"
             android:layout_height="0px"
-            android:layout_weight="@integer/dialpad_layout_weight_digits_new"
+            android:layout_weight="@integer/dialpad_layout_weight_digits"
             android:layout_marginTop="@dimen/dialpad_vertical_margin"
             android:gravity="center" >
 
@@ -81,8 +81,7 @@
         <LinearLayout
             android:id="@+id/dialButtonContainer"
             android:layout_width="match_parent"
-            android:layout_height="0px"
-            android:layout_weight="@integer/dialpad_layout_weight_additional_buttons"
+            android:layout_height="@dimen/fake_action_bar_height"
             android:layout_gravity="center_horizontal"
             android:background="@color/dialpad_primary_text_color"
             android:layoutDirection="locale">
diff --git a/res/layout/dialpad_key.xml b/res/layout/dialpad_key.xml
index 074e023..e87fde0 100644
--- a/res/layout/dialpad_key.xml
+++ b/res/layout/dialpad_key.xml
@@ -18,7 +18,8 @@
 <com.android.dialer.dialpad.DialpadKeyButton
     xmlns:android="http://schemas.android.com/apk/res/android"
     style="@style/DialtactsDialpadButtonStyle"
-    android:clickable="true" >
+    android:clickable="true"
+    android:focusable="true" >
     <LinearLayout
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
diff --git a/res/layout/dialtacts_activity.xml b/res/layout/dialtacts_activity.xml
index 9d63514..e0eb41b 100644
--- a/res/layout/dialtacts_activity.xml
+++ b/res/layout/dialtacts_activity.xml
@@ -31,37 +31,48 @@
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:paddingLeft="16dp"
-            android:paddingRight="23dp"
             android:id="@+id/search_view_container"
-            android:background="@color/searchbox_background_color"
-            android:orientation="horizontal"
-            android:gravity="center_vertical">
-            <EditText
-                android:id="@+id/search_view"
-                android:layout_width="0dp"
-                android:layout_height="56dp"
-                android:layout_weight="1"
-                android:textSize="@dimen/search_text_size"
-                android:inputType="textFilter"/>
-            <ImageView
-                android:id="@+id/search_close_button"
-                android:layout_height="40dp"
-                android:layout_width="40dp"
-                android:padding="6dp"
-                android:src="@drawable/ic_close_dk"
-                android:clickable="true"
-                android:background="?android:attr/selectableItemBackground"
-                android:visibility="gone" />
-            <ImageView
-                android:id="@+id/voice_search_button"
-                android:layout_height="40dp"
-                android:layout_width="40dp"
-                android:padding="6dp"
-                android:src="@drawable/ic_voice_search"
-                android:clickable="true"
-                android:contentDescription="@string/description_start_voice_search"
-                android:background="?android:attr/selectableItemBackground" />
+            android:orientation="vertical"
+            >
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="horizontal"
+                android:paddingLeft="16dp"
+                android:paddingRight="23dp"
+                android:background="@color/searchbox_background_color"
+                android:gravity="center_vertical">
+                <EditText
+                    android:id="@+id/search_view"
+                    android:layout_width="0dp"
+                    android:layout_height="56dp"
+                    android:layout_weight="1"
+                    android:textSize="@dimen/search_text_size"
+                    android:inputType="textFilter"/>
+                <ImageView
+                    android:id="@+id/search_close_button"
+                    android:layout_height="40dp"
+                    android:layout_width="40dp"
+                    android:padding="6dp"
+                    android:src="@drawable/ic_close_dk"
+                    android:clickable="true"
+                    android:background="?android:attr/selectableItemBackground"
+                    android:visibility="gone" />
+                <ImageView
+                    android:id="@+id/voice_search_button"
+                    android:layout_height="40dp"
+                    android:layout_width="40dp"
+                    android:padding="6dp"
+                    android:src="@drawable/ic_voice_search"
+                    android:clickable="true"
+                    android:contentDescription="@string/description_start_voice_search"
+                    android:background="?android:attr/selectableItemBackground" />
+            </LinearLayout>
+            <View
+                android:id="@+id/searchbox_divider"
+                android:layout_height="1dp"
+                android:layout_width="match_parent"
+                android:background="@color/background_dialer_light" />
         </LinearLayout>
         <FrameLayout
             android:layout_height="0dp"
diff --git a/res/layout/phone_favorite_regular_row_view.xml b/res/layout/phone_favorite_regular_row_view.xml
index bf63642..a90117f 100644
--- a/res/layout/phone_favorite_regular_row_view.xml
+++ b/res/layout/phone_favorite_regular_row_view.xml
@@ -24,8 +24,7 @@
         android:id="@+id/contact_favorite_card"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:focusable="true"
-        android:background="?android:attr/selectableItemBackground" >
+        android:focusable="true">
 
         <com.android.contacts.common.widget.LayoutSuppressingQuickContactBadge
             android:id="@+id/contact_tile_quick"
@@ -37,21 +36,46 @@
             android:scaleType="centerCrop"
             android:focusable="true" />
 
-        <TextView
-            android:id="@id/contact_tile_name"
+        <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginLeft="8dip"
             android:layout_marginStart="8dip"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:layout_marginTop="8dip"
             android:layout_toRightOf="@id/contact_tile_quick"
             android:layout_toEndOf="@id/contact_tile_quick"
-            android:singleLine="true"
-            android:fadingEdge="horizontal"
-            android:fadingEdgeLength="3dip"
-            android:ellipsize="marquee"
-            android:textAlignment="viewStart" />
+            android:layout_centerVertical="true"
+            android:orientation="vertical">
+            <TextView
+                android:id="@id/contact_tile_name"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:singleLine="true"
+                android:fadingEdge="horizontal"
+                android:fadingEdgeLength="3dip"
+                android:ellipsize="marquee"
+                android:textAlignment="viewStart" />
+            <TextView
+                android:id="@+id/contact_tile_phone_type"
+                android:layout_height="wrap_content"
+                android:layout_width="wrap_content"
+                android:textSize="12sp"
+                android:ellipsize="marquee"
+                android:singleLine="true"
+                android:textColor="@color/dialtacts_secondary_text_color" />
+        </LinearLayout>
+        <ImageView
+            android:id="@+id/contact_favorite_star"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignRight="@id/contact_tile_quick"
+            android:layout_alignEnd="@id/contact_tile_quick"
+            android:layout_alignBottom="@id/contact_tile_quick"
+            android:layout_marginRight="7dip"
+            android:layout_marginEnd="7dip"
+            android:layout_marginBottom="7dip"
+            android:src="@drawable/ic_star_marked_as_fav"
+            android:visibility="gone" />
 
     </RelativeLayout>
 
diff --git a/res/layout/phone_favorite_tile_view.xml b/res/layout/phone_favorite_tile_view.xml
index 1117bdc..fce25ea 100644
--- a/res/layout/phone_favorite_tile_view.xml
+++ b/res/layout/phone_favorite_tile_view.xml
@@ -39,25 +39,44 @@
             android:layout_height="match_parent"
             android:background="@drawable/shadow_contact_photo"/>
 
-        <TextView
-            android:id="@+id/contact_tile_name"
+        <LinearLayout
             android:layout_width="match_parent"
-            android:layout_height="@dimen/contact_tile_info_button_height_and_width"
-            android:gravity="center_vertical"
-            android:textColor="@color/contact_tile_name_color"
-            android:fontFamily="sans-serif-light"
-            android:singleLine="true"
-            android:textSize="16sp"
-            android:fadingEdge="horizontal"
-            android:fadingEdgeLength="3dip"
-            android:ellipsize="marquee"
-            android:layout_alignParentBottom="true"
+            android:layout_height="wrap_content"
             android:paddingLeft="8dp"
             android:paddingRight="@dimen/contact_tile_info_button_height_and_width"
             android:paddingStart="8dp"
             android:paddingEnd="@dimen/contact_tile_info_button_height_and_width"
-            android:textAlignment="viewStart" />
-
+            android:paddingBottom="4dp"
+            android:layout_alignParentBottom="true"
+            android:orientation="vertical" >
+            <TextView
+                android:id="@+id/contact_tile_name"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center_vertical"
+                android:textColor="@color/contact_tile_name_color"
+                android:fontFamily="sans-serif-light"
+                android:singleLine="true"
+                android:textSize="16sp"
+                android:fadingEdge="horizontal"
+                android:fadingEdgeLength="3dip"
+                android:ellipsize="marquee"
+                android:textAlignment="viewStart" />
+            <TextView
+                android:id="@+id/contact_tile_phone_type"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center_vertical"
+                android:textColor="@color/contact_tile_name_color"
+                android:fontFamily="sans-serif-light"
+                android:singleLine="true"
+                android:textSize="12sp"
+                android:paddingBottom="2dp"
+                android:fadingEdge="horizontal"
+                android:fadingEdgeLength="3dip"
+                android:ellipsize="marquee"
+                android:textAlignment="viewStart" />
+        </LinearLayout>
         <View
             android:id="@+id/contact_tile_push_state"
             android:layout_width="match_parent"
@@ -66,6 +85,25 @@
             android:nextFocusRight="@+id/contact_tile_secondary_button"
             android:background="?android:attr/selectableItemBackground" />
 
+        <ImageView
+            android:id="@+id/contact_favorite_star"
+            android:background="?android:attr/selectableItemBackground"
+            android:layout_height="@dimen/contact_tile_info_button_height_and_width"
+            android:layout_width="@dimen/contact_tile_info_button_height_and_width"
+            android:paddingLeft="8dp"
+            android:paddingRight="8dp"
+            android:paddingStart="8dp"
+            android:paddingEnd="8dp"
+            android:paddingTop="8dp"
+            android:paddingBottom="8dp"
+            android:layout_alignParentBottom="true"
+            android:layout_alignParentRight="true"
+            android:layout_alignParentEnd="true"
+            android:src="@drawable/ic_star_marked_as_fav"
+            android:scaleType="center"
+            android:visibility="gone" />
+
+
         <ImageButton
             android:id="@id/contact_tile_secondary_button"
             android:src="@drawable/ic_contact_info"
diff --git a/res/layout/phone_favorites_fragment.xml b/res/layout/phone_favorites_fragment.xml
index 4d3abf4..363565a 100644
--- a/res/layout/phone_favorites_fragment.xml
+++ b/res/layout/phone_favorites_fragment.xml
@@ -15,19 +15,23 @@
 -->
 
 <!-- Use LinearLayout + FrameLayout, just to rely on android:divider and android:showDividers -->
-<LinearLayout
+<RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical"
     android:divider="?android:attr/dividerHorizontal"
     android:showDividers="end"
     android:clipChildren="false"
     android:background="@color/background_dialer_light">
+
     <FrameLayout
+        android:id="@+id/contact_tile_frame"
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1">
+        android:layout_height="match_parent"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true">
+
         <com.android.dialer.list.PhoneFavoriteListView
             android:id="@+id/contact_tile_list"
             android:layout_width="match_parent"
@@ -37,19 +41,22 @@
             android:fadingEdge="none"
             android:divider="@null" />
 
-        <TextView
-            android:id="@+id/contact_tile_list_empty"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:gravity="center"
-            android:layout_marginTop="@dimen/empty_message_top_margin"
-            android:textColor="?android:attr/textColorSecondary"
-            android:textAppearance="?android:attr/textAppearanceLarge"/>
-
         <ImageView
             android:id="@+id/contact_tile_drag_shadow_overlay"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:visibility="gone"/>
     </FrameLayout>
-</LinearLayout>
+
+    <include
+        android:id="@+id/phone_no_favorites_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@id/contact_tile_frame"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"
+        android:layout_alignParentBottom="true"
+        layout="@layout/phone_no_favorites"
+        android:visibility="gone"/>
+
+</RelativeLayout>
diff --git a/res/layout/phone_no_favorites.xml b/res/layout/phone_no_favorites.xml
index 9fa5d47..1a0079f 100644
--- a/res/layout/phone_no_favorites.xml
+++ b/res/layout/phone_no_favorites.xml
@@ -14,21 +14,50 @@
      limitations under the License.
 -->
 
-<FrameLayout
+<RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:orientation="vertical"
     android:minHeight="?android:attr/listPreferredItemHeight">
 
-    <TextView
-        android:id="@+id/title"
+    <include
+        android:id="@+id/show_all_contact_button_in_nofav"
+        layout="@layout/show_all_contact_button"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"/>
+
+    <LinearLayout
+        android:id="@+id/nofavorite_frame"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:layout_gravity="center"
         android:gravity="center"
-        android:text="@string/listTotalAllContactsZeroStarred"
-        android:textAppearance="?android:attr/textAppearanceLarge"
-        android:textColor="?android:attr/textColorSecondary"
-        android:layout_marginTop="8dp"
-        android:layout_marginBottom="8dp"/>
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"
+        android:layout_alignParentTop="true"
+        android:layout_above="@id/show_all_contact_button_in_nofav">
 
-</FrameLayout>
+        <ImageView
+            android:id="@+id/nofavorite_image"
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:gravity="center_horizontal"
+            android:src="@drawable/no_favorites_banner"
+            android:layout_marginBottom="14dp"/>
+
+        <TextView
+            android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_horizontal"
+            android:text="@string/no_favorites"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textColor="@color/nofavorite_text_color"/>
+    </LinearLayout>
+
+</RelativeLayout>
diff --git a/res/layout/tile_interactions_teaser_view.xml b/res/layout/tile_interactions_teaser_view.xml
new file mode 100644
index 0000000..c329dd3
--- /dev/null
+++ b/res/layout/tile_interactions_teaser_view.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2013 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<com.android.dialer.list.TileInteractionTeaserView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/actionbar_background_color"
+    android:paddingBottom="@dimen/favorites_row_bottom_padding"
+    android:paddingTop="@dimen/favorites_row_top_padding">
+
+    <LinearLayout
+        android:id="@+id/swipeable_content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="horizontal" >
+
+        <ImageView
+            android:id="@+id/arrow"
+            android:layout_width="48dp"
+            android:layout_height="match_parent"
+            android:layout_marginBottom="12dp"
+            android:layout_marginLeft="16dp"
+            android:layout_marginRight="12dp"
+            android:duplicateParentState="true"
+            android:src="@drawable/ic_arrow"
+            android:visibility="invisible" />
+
+        <TextView
+            android:id="@+id/text"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:layout_marginBottom="12dp"
+            android:layout_marginTop="12dp"
+            android:layout_weight="1"
+            android:duplicateParentState="true"
+            android:fontFamily="sans-serif-light"
+            android:text="@string/contact_tooltip"
+            android:textColor="@color/undo_dialogue_text_color"
+            android:textSize="16sp" />
+
+        <View
+            android:id="@+id/dismiss_separator"
+            android:layout_width="1dip"
+            android:layout_height="match_parent"
+            android:background="@color/undo_dialogue_text_color"
+            android:layout_marginTop="16dp"
+            android:layout_marginBottom="16dp"
+            android:layout_marginLeft="16dp"/>
+
+        <ImageButton
+            android:id="@+id/dismiss_button"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:background="?android:attr/selectableItemBackground"
+            android:clickable="true"
+            android:scaleType="center"
+            android:src="@drawable/ic_cancel_holo_light"
+            style="@style/DismissButtonStyle"
+            android:contentDescription="@string/description_dismiss"/>
+
+    </LinearLayout>
+
+</com.android.dialer.list.TileInteractionTeaserView>
diff --git a/res/mipmap-xxxhdpi/ic_launcher_phone.png b/res/mipmap-xxxhdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..8c92ac1
--- /dev/null
+++ b/res/mipmap-xxxhdpi/ic_launcher_phone.png
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index b474a48..bd32fe2 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Stuur teksboodskap aan <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ongeluisterde stemboodskap"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Begin stemsoektog"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Onbekend"</string>
     <string name="voicemail" msgid="3851469869202611441">"Stemboodskap"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Ontdoen"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Voeg by kontakte"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nuwe gemiste oproepe"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Gunstelinge en kontakte \nwat jy gereeld bel, sal hier wys.\nSo, begin bel."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Tik prent om alle getalle te sien of druk en hou om te herorganiseer"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 34f26de..2685b5d 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"የፅሁፍ መልዕክት ወደ <xliff:g id="NAME">%1$s</xliff:g> ላክ"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ያልተሰማ የድምፅመልዕክት"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"በድምፅ ፍለጋ ይጀምሩ"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"ደውል<xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"ያልታወቀ"</string>
     <string name="voicemail" msgid="3851469869202611441">"የድምፅ መልዕክት"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"ቀልብስ"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"ለ<xliff:g id="NUMBER">%s</xliff:g> ደውል"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"ወደ ዕውቂያዎች አክል"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> አዲስ ያልተመለሱ ጥሪዎች"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"ተወዳጆች እና አብዛኛውን ጊዜ\nየሚደውሉላቸው እውቂያዎች እዚህ ይታያሉ።\nስለዚህ መደወል ይጀምሩ።"</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"ሁሉንም ቁጥሮች ለማየት ምስሉን መታ ያድርጉ ወይም ቅደም ተከተላቸውን ለማስተካከል ተጭነው ይያዙ"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index f36b9c3..b6fb941 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -89,7 +89,7 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"عرض الفائت فقط"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"إظهار رسائل البريد الصوتي فقط"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"عرض جميع المكالمات"</string>
-    <string name="add_2sec_pause" msgid="9214012315201040129">"إضافة فترة إيقاف مؤقت مدتها ثانيتان"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"إضافة ثانيتين إيقاف مؤقت"</string>
     <string name="add_wait" msgid="3360818652790319634">"إضافة انتظار"</string>
     <string name="call_settings" msgid="7666474782093693667">"الإعدادات"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"جهة اتصال جديدة"</string>
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"إرسال رسالة نصية إلى <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"البريد الصوتي غير المسموع"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"بدء البحث الصوتي"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"الاتصال بالرقم <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"غير معروف"</string>
     <string name="voicemail" msgid="3851469869202611441">"البريد الصوتي"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"تراجع"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"الاتصال بالرقم <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"إضافة إلى جهات الاتصال"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> من المكالمات الجديدة الفائتة"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"جهات الاتصال المفضلة وجهات الاتصال التي\nتتصل غالبًا بها ستظهر هنا.\nلذا عليك البدء في الاتصال."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"انقر على الصورة للاطلاع على كل الأرقام أو اضغط مع الاستمرار لإعادة الترتيب"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 0f69397..d659839 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -119,7 +119,8 @@
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непраслуханая галасавая пошта"</string>
     <!-- no translation found for description_start_voice_search (520539488194946012) -->
     <skip />
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <!-- no translation found for call_log_empty_gecode (2019639420045039861) -->
+    <skip />
     <string name="menu_callNumber" msgid="997146291983360266">"Выклікаць <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Невядомы"</string>
     <string name="voicemail" msgid="3851469869202611441">"Галасавая пошта"</string>
@@ -185,4 +186,12 @@
     <skip />
     <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
     <skip />
+    <!-- no translation found for num_missed_calls (8081736535604293886) -->
+    <skip />
+    <!-- no translation found for no_favorites (5212485868783382971) -->
+    <skip />
+    <!-- no translation found for contact_tooltip (7817483485692282287) -->
+    <skip />
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index a2daf9c..447578d 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Изпращане на SMS до <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослушана гласова поща"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Стартиране на гласово търсене"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"–"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Обаждане на <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Неизвестен"</string>
     <string name="voicemail" msgid="3851469869202611441">"Гласова поща"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Отмяна"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Обаждане на <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Добавяне в контактите"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> нови пропуснати обаждания"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Любимите и контактите, на\nкоито се обаждате често, ще се показват тук.\nЗапочнете да извършвате обаждания."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Докоснете изображението, за да видите всички номера, или натиснете и задръжте, за да пренаредите"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 9e2c12f..4db372d 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Envia un missatge de text a <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Missatge de veu no escoltat"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Inicia la cerca per veu"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Truca al <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Desconegut"</string>
     <string name="voicemail" msgid="3851469869202611441">"Correu de veu"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfés"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Truca al <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Afegeix als contactes"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> trucades perdudes noves"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Aquí es mostraran els preferits i els contactes\nals quals truques sovint.\nJa pots començar a trucar."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Toca la imatge per veure tots els números o bé mantén-la premuda per reorganitzar"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index bb1d1de..2afaa4e 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -89,7 +89,7 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Zobrazit pouze zmeškané"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Zobrazit pouze hlas. schránku"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Zobrazit všechny hovory"</string>
-    <string name="add_2sec_pause" msgid="9214012315201040129">"Přidat 2s pauzu"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Přidat pauzu 2 s"</string>
     <string name="add_wait" msgid="3360818652790319634">"Přidat čekání"</string>
     <string name="call_settings" msgid="7666474782093693667">"Nastavení"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nový kontakt"</string>
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Odeslat textovou zprávu kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nevyslechnutá hlasová zpráva"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Spustit hlasové vyhledávání"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"–"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Zavolat na číslo <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Neznámé"</string>
     <string name="voicemail" msgid="3851469869202611441">"Hlasová schránka"</string>
@@ -136,7 +136,7 @@
     <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Zadejte jméno nebo tel. číslo"</string>
     <string name="call_log_all_title" msgid="3566738938889333307">"Všechny"</string>
     <string name="call_log_missed_title" msgid="4541142293870638971">"Zmeškané"</string>
-    <string name="recentMissed_empty" msgid="5427113551557296665">"Nemáte žádné nedávné zmeškané hovory."</string>
+    <string name="recentMissed_empty" msgid="5427113551557296665">"Nemáte žádné nedávno zmeškané hovory."</string>
     <string name="recentVoicemails_empty" msgid="5163114119598014048">"Nemáte žádné nedávné hlasové zprávy."</string>
     <string name="show_all_contacts" msgid="1732256558071778056">"Zobrazit všechny kontakty"</string>
     <string name="show_favorites_only" msgid="5520072531022614595">"Zobrazit pouze oblíbené"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Vrátit zpět"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Zavolat na číslo <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Přidat do kontaktů"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Nové zmeškané hovory: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Zde se bude zobrazovat oblíbený obsah\na kontakty, kterým často voláte.\nStačí jen začít volat."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Klepnutím na fotku zobrazíte všechna čísla a přidržením je můžete seřadit"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index ab547e7..7438a3c 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -75,7 +75,7 @@
     <string name="description_image_button_star" msgid="3365919907520767866">"stjernemarker"</string>
     <string name="description_image_button_zero" msgid="4133108949401820710">"nul"</string>
     <string name="description_image_button_pound" msgid="3039765597595889230">"pund"</string>
-    <string name="description_voicemail_button" msgid="3402506823655455591">"voicemail"</string>
+    <string name="description_voicemail_button" msgid="3402506823655455591">"telefonsvarer"</string>
     <string name="description_search_button" msgid="3660807558587384889">"søg"</string>
     <string name="description_dial_button" msgid="1274091017188142646">"ring op"</string>
     <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
@@ -92,7 +92,7 @@
     <string name="add_2sec_pause" msgid="9214012315201040129">"Tilføj pause på 2 sek."</string>
     <string name="add_wait" msgid="3360818652790319634">"Tilføj Vent"</string>
     <string name="call_settings" msgid="7666474782093693667">"Indstillinger"</string>
-    <string name="menu_newContact" msgid="1209922412763274638">"Ny kontakt"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Ny kontaktperson"</string>
     <string name="menu_allContacts" msgid="6948308384034051670">"Alle kontaktpersoner"</string>
     <string name="callDetailTitle" msgid="5340227785196217938">"Opkaldsdetaljer"</string>
     <string name="toast_call_detail_error" msgid="7200975244804730096">"Detaljerne for det anmodede opkald kunne ikke læses."</string>
@@ -115,10 +115,10 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Send sms til <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Uaflyttet besked på telefonsvareren"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Start stemmesøgning"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Ring til <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Ukendte"</string>
-    <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Telefonsvarer"</string>
     <string name="private_num" msgid="6374339738119166953">"Privat nummer"</string>
     <string name="payphone" msgid="4864313342828942922">"Betalingstelefon"</string>
     <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Brug tastatur til at ringe op"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Fortryd"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring til <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Føj til kontaktpersoner"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nye ubesvarede opkald"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Dine foretrukne og de kontaktpersoner, du\noftest ringer til, vises her.\nSå gå du bare i gang med at ringe."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Tryk på billedet for at se alle telefonnumre, eller tryk på billedet, og hold det nede, for at omarrangere"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index ab79452..7f604db 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"SMS an <xliff:g id="NAME">%1$s</xliff:g> senden"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nicht abgehörte Mailbox-Nachricht"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Sprachsuche starten"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> wählen"</string>
     <string name="unknown" msgid="740067747858270469">"Unbekannt"</string>
     <string name="voicemail" msgid="3851469869202611441">"Mailbox"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Rückgängig machen"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> wählen"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Zu Kontakten hinzufügen"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> neue verpasste Anrufe"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Sobald Sie Anrufe getätigt haben,\nwerden hier Favoriten und Kontakte angezeigt,\ndie Sie häufig anrufen."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Auf Bild tippen, um alle Nummern zu sehen, oder berühren und halten, um Anordnung zu ändern"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 5fa35e3..31ad7c7 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Αποστολή μηνύματος κειμένου στον χρήστη <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Μηνύματα αυτόματου τηλεφωνητή που δεν έχετε ακούσει"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Έναρξη φωνητικής αναζήτησης"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Κλήση του αριθμού <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Άγνωστος"</string>
     <string name="voicemail" msgid="3851469869202611441">"Αυτόματος τηλεφωνητής"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Αναίρεση"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Κλήση του αριθμού <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Προσθήκη στις επαφές"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> νέες αναπάντητες κλήσεις"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Οι αγαπημένες και οι επαφές που\nκαλείτε συχνά θα εμφανίζονται εδώ.\nΞεκινήστε τις κλήσεις."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Πατήστε την εικόνα για να δείτε όλους τους αριθμούς ή πατήστε παρατεταμένα για αναδιάταξη"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index a2e9478..628992a 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Send text message to <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Unheard voicemail"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Start voice search"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Unknown"</string>
     <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Undo"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Add to contacts"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Favourites &amp; contacts that you\ncall often will show here.\nSo, start calling."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Tap image to see all numbers or press and hold to reorder"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index a2e9478..628992a 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Send text message to <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Unheard voicemail"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Start voice search"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Unknown"</string>
     <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Undo"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Add to contacts"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Favourites &amp; contacts that you\ncall often will show here.\nSo, start calling."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Tap image to see all numbers or press and hold to reorder"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index ebb9618..92d2958 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensaje de texto a <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Buzón de voz no escuchado"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Iniciar búsqueda por voz"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Llamar al <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Desconocido"</string>
     <string name="voicemail" msgid="3851469869202611441">"Correo de voz"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Deshacer"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Llamar al <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Agregar a contactos"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> llamadas perdidas nuevas"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Aquí se mostrarán los favoritos y los contactos\na los que llamas con frecuencia.\nYa puedes empezar a llamar."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Presiona la imagen para ver todos los números o mantenla presionada para cambiar el orden."</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 2ce33fe..1c8de05 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensaje de texto a <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mensaje de voz sin oír"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Iniciar búsqueda por voz"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Llamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Desconocidos"</string>
     <string name="voicemail" msgid="3851469869202611441">"Buzón de voz"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Deshacer"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Llamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Añadir a contactos"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> llamadas perdidas nuevas"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Los favoritos y contactos a los que\nllamas con frecuencia se mostrarán aquí.\nYa puedes llamar."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Toca la imagen para ver todos los números o mantenla pulsada para cambiar el orden"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 93ee532..741af8e 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Saada tekstsõnum kontaktile <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Kuulamata kõnepostisõnum"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Häälotsingu alustamine"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Helistage: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Tundmatu"</string>
     <string name="voicemail" msgid="3851469869202611441">"Kõnepost"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Võta tagasi"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Helista <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Lisa kontaktidesse"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> uus/uut vastamata kõne(t)"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Siin kuvatakse lemmikud ja kontaktid,\nkellele sageli helistate.\nVõite hakata helistama."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Puudutage kujutist, et näha kõiki numbreid, või vajutage ja hoidke all ümberkorraldamiseks"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 5ad212a..ee5cbdb 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"ارسال پیام متنی به <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"پست صوتی شنیده نشده"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"شروع جستجوی صوتی"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"تماس با <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"ناشناس"</string>
     <string name="voicemail" msgid="3851469869202611441">"پست صوتی"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"لغو"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"تماس با <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"افزودن به مخاطبین"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> تماس‌ بی‌پاسخ جدید"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"موارد دلخواه و مخاطبینی که اغلب با\nآنها تماس می‌گیرید اینجا نشان داده می‌شوند.\nبنابراین شروع به تماس گرفتن کنید."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"برای مشاهده همه شماره‌ها روی تصویر ضربه بزنید یا برای مرتب‌سازی مجدد فشار دهید و نگه‌دارید"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 4164c5a..7e7ee2c 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Lähetä tekstiviesti: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Kuuntelematon vastaajaviesti"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Aloita puhehaku"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Soita <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Tuntematon"</string>
     <string name="voicemail" msgid="3851469869202611441">"Vastaaja"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Kumoa"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Soita <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Lisää yhteystietoihin"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> uutta vastaamatonta puhelua"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Suosikit ja yhteyshenkilöt, joille\nsoitat usein, näkyvät tässä.\nAla siis soitella."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Napauta kuvaa nähdäksesi kaikki numerot tai järjestä uudelleen painamalla pitkään"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 8e18d87..7ddb1d0 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Envoyer un SMS à <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nouveau message vocal"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Démarrer la recherche vocale"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Inconnu"</string>
     <string name="voicemail" msgid="3851469869202611441">"Messagerie vocale"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Ajouter aux contacts"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nouveaux appels manqués"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Vos favoris et les contacts\nque vous appelez souvent sont\naffichés ici. Pourquoi ne pas les appeler?"</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Touchez l\'image pour afficher tous les numéros, ou maintenez votre doigt sur l\'une d\'elles pour les réorganiser"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index b5a2655..e71cede 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -29,7 +29,7 @@
     <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Effacer tous les appels"</string>
     <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Supprimer le message vocal"</string>
     <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Partager le message vocal"</string>
-    <string name="recentCalls_empty" msgid="247053222448663107">"Aucun appel."</string>
+    <string name="recentCalls_empty" msgid="247053222448663107">"Aucun appel"</string>
     <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Effacer les appels ?"</string>
     <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Votre journal d\'appels va être supprimé."</string>
     <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Effacement des appels…"</string>
@@ -90,7 +90,7 @@
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Messages vocaux uniquement"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Afficher tous les appels"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Ajouter une pause de 2 s"</string>
-    <string name="add_wait" msgid="3360818652790319634">"Ajouter Attendre"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Ajouter Attente"</string>
     <string name="call_settings" msgid="7666474782093693667">"Paramètres"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nouveau contact"</string>
     <string name="menu_allContacts" msgid="6948308384034051670">"Tous les contacts"</string>
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Envoyer un SMS à <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nouveau message vocal"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Démarrer la recherche vocale"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Inconnu"</string>
     <string name="voicemail" msgid="3851469869202611441">"Messagerie vocale"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Ajouter aux contacts"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nouveaux appels manqués"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Les favoris et les contacts que\nvous appelez souvent s\'affichent ici.\nCommencez donc par passer des appels !"</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Appuyer sur l\'image pour afficher tous les numéros ou appuyer de manière prolongée pour les réorganiser"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 49f1c8f..8f70946 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g> को पाठ संदेश भेजें"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"नहीं सुना गया ध्वनिमेल"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"बोलकर खोजें शुरु करें"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> पर कॉल करें"</string>
     <string name="unknown" msgid="740067747858270469">"अज्ञात"</string>
     <string name="voicemail" msgid="3851469869202611441">"ध्वनिमेल"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"पूर्ववत करें"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> पर कॉल करें"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"संपर्कों में जोड़ें"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>  छूटे हुए नए कॉल"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"पसंदीदा &amp; आपके द्वारा अक्सर कॉल किए जाने वाले पसंदीदा और संपर्क\nयहां दिखाए जाएंगे.\nतो, कॉल करना प्रारंभ करें."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"सभी नंबर देखने के लिए चित्र को टैप करें या पुनः क्रमित करने के लिए दबाए रखें"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 22bc510..80e8e82 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Slanje tekstualne poruke: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nepreslušana govorna pošta"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Pokretanje glasovnog pretraživanja"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Nazovite <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Nepoznato"</string>
     <string name="voicemail" msgid="3851469869202611441">"Govorna pošta"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Poništi"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Nazovi <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Dodaj u kontakte"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Broj novih propuštenih poziva: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Ovdje će se prikazivati favoriti\ni kontakti koje često zovete.\nZato počnite zvati."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Dodirnite sliku da biste vidjeli sve brojeve ili pritisnite i zadržite da biste promijenili poredak"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index a067873..25fdfbc 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"SMS küldése neki: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nem lejátszott hangüzenet"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Hangalapú keresés indítása"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Hívás: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Ismeretlen"</string>
     <string name="voicemail" msgid="3851469869202611441">"Hangposta"</string>
@@ -135,7 +135,7 @@
     <string name="add_contact_not_available" msgid="1419207765446461366">"A funkció használatához aktiválja újra a Személyek alkalmazást."</string>
     <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Név vagy telefonszám megadása"</string>
     <string name="call_log_all_title" msgid="3566738938889333307">"Összes"</string>
-    <string name="call_log_missed_title" msgid="4541142293870638971">"Nem fog."</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Nem fogadott"</string>
     <string name="recentMissed_empty" msgid="5427113551557296665">"Nincsenek újabb elmulasztott hívások."</string>
     <string name="recentVoicemails_empty" msgid="5163114119598014048">"Nincsenek újabb hangpostaüzenetek."</string>
     <string name="show_all_contacts" msgid="1732256558071778056">"Az összes névjegy megjelenítése"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Visszavonás"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Hívás: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Hozzáadás a névjegyekhez"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> új nem fogadott hívás"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Itt a kedvencek és a gyakran hívott\nismerősök fognak megjelenni.\nEhhez előbb hívásokat kell indítania."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Koppintson a képre az összes szám megtekintéséhez, vagy tartsa lenyomva az átrendezéshez"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 3754353..70e7f03 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Ուղարկել տեքստային հաղորդագրություն <xliff:g id="NAME">%1$s</xliff:g>-ին"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Չլսված ձայնային փոստ"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Սկսկեք ձայնային որոնումը"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Զանգել <xliff:g id="NUMBER">%s</xliff:g>-ին"</string>
     <string name="unknown" msgid="740067747858270469">"Անհայտ"</string>
     <string name="voicemail" msgid="3851469869202611441">"Ձայնային փոստ"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Հետարկել"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Զանգել <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Ավելացնել կոնտակտներում"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> նոր բաց թողնված զանգ"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Հաճախ կանչվող ընտրյալներ &amp; կոնտակտները\nկցուցադրվեն այստեղ:\nԿարող եք զանգել:"</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Հպեք նկարին՝ բոլոր համարները տեսնելու, կամ հպեք ու պահեք՝ վերադասավորելու համար:"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 65f9437..293fb3e 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Kirim SMS ke <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Pesan suara yang belum didengar"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Memulai penelusuran suara"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Tidak diketahui"</string>
     <string name="voicemail" msgid="3851469869202611441">"Kotak Pesan"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Batalkan"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Telepon <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Tambahkan ke kontak"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> panggilan tidak terjawab baru"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Favorit &amp; kontak yang\nsering Anda hubungi akan muncul di sini.\nJadi, mulailah menelepon."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Ketuk gambar untuk melihat semua nomor atau tekan terus untuk mengatur ulang"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 7395f19..cea9b00 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Invia messaggio di testo a <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Messaggio vocale non ascoltato"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Avvia la ricerca vocale"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Chiama <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Sconosciuto"</string>
     <string name="voicemail" msgid="3851469869202611441">"Segreteria"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Annulla"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Chiama <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Aggiungi ai contatti"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nuove chiamate senza risposta"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Preferiti e contatti che\nchiami spesso verranno mostrati qui.\nInizia a chiamarli."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Tocca l\'immagine per visualizzare tutti i numeri o tieni premuto per cambiare l\'ordine"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 7b6310d..1a93777 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"שלח הודעת טקסט אל <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"דואר קולי שעדיין לא נשמע"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"התחל חיפוש קולי"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"התקשר אל <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"לא ידוע"</string>
     <string name="voicemail" msgid="3851469869202611441">"דואר קולי"</string>
@@ -132,7 +132,7 @@
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
     <string name="simContacts_emptyLoading" msgid="6700035985448642408">"טוען מכרטיס SIM…"</string>
     <string name="simContacts_title" msgid="27341688347689769">"אנשי קשר בכרטיס SIM"</string>
-    <string name="add_contact_not_available" msgid="1419207765446461366">"הפעל מחדש את יישום אנשי הקשר כדי להשתמש בתכונה זו."</string>
+    <string name="add_contact_not_available" msgid="1419207765446461366">"הפעל מחדש את אפליקציית אנשי הקשר כדי להשתמש בתכונה זו."</string>
     <string name="dialer_hint_find_contact" msgid="8798845521253672403">"הקלד שם או מספר טלפון"</string>
     <string name="call_log_all_title" msgid="3566738938889333307">"הכול"</string>
     <string name="call_log_missed_title" msgid="4541142293870638971">"שיחה שלא נענתה"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"בטל"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"התקשר אל <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"הוסף לאנשי הקשר"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> שיחות חדשות שלא נענו"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"מועדפים ואנשי קשר שאתה\nיוצר איתם קשר בקביעות יופיעו כאן.\nאז תתחיל להתקשר."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"הקש על תמונה כדי לראות את כל המספרים, או לחץ והחזק כדי לשנות את הסדר"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index b694b3f..ed8fde8 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g>にテキストメッセージを送信"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未再生のボイスメール"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"音声検索を開始"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g>に発信"</string>
     <string name="unknown" msgid="740067747858270469">"通知不可能"</string>
     <string name="voicemail" msgid="3851469869202611441">"ボイスメール"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"元に戻す"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>に発信"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"連絡先に追加"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>件の不在着信"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"ここにはお気に入りや\n頻繁に通話する\n連絡先が表示されます。"</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"画像をタップするとすべての番号を表示でき、押し続けると並び替えることができます"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 0d5199d..af6d083 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"ტესქტური შეტყობინების გაგზავნა <xliff:g id="NAME">%1$s</xliff:g>-ისთვის"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"მოსასმენი ხმოვანი ფოსტა"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"ხმოვანი ძიების დაწყება"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"დარეკვა <xliff:g id="NUMBER">%s</xliff:g>-ზე"</string>
     <string name="unknown" msgid="740067747858270469">"უცნობი"</string>
     <string name="voicemail" msgid="3851469869202611441">"ხმოვანი ფოსტა"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"დაბრუნება"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"დარეკვა <xliff:g id="NUMBER">%s</xliff:g>-ზე"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"კონტაქტებში დამატება"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ახალი გაცდენილი ზარი"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"რჩეულები და ხშირი კონაქტები\nაქ გამოჩნდება.\nასე რომ, დაიწყეთ რეკვა."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"შეეხეთ სურათს ყველა ნომრის სანახავად, ან შეეხეთ და დააყოვნეთ მიმდევრობის შესაცვლელად"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index ac3d485..60ea6a9 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"ផ្ញើ​រ​សារ​អត្ថបទ​ទៅ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"សារ​ជា​សំឡេង​ដែល​មិន​បាន​ឮ"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"ចាប់ផ្ដើម​ស្វែងរក​ជា​សំឡេង"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"ហៅ <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"មិន​ស្គាល់"</string>
     <string name="voicemail" msgid="3851469869202611441">"សារ​ជា​សំឡេង"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"មិនធ្វើវិញ"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"ហៅ <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"បន្ថែម​ទៅ​ទំនាក់ទំនង"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"ខកខាន​ទទួល​ថ្មី <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"ការ​និយម​ប្រើ &amp; ទំនាក់ទំនង​ដែល​អ្នក\nហៅ​ញឹកញាប់​នឹង​បង្ហាញ​នៅ​ទីនេះ។\nដូច្នេះ ចាប់ផ្ដើម​ហៅ។"</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"ប៉ះ​រូបភាព ដើម្បី​មើល​លេខ​ទាំងអស់ ឬ​ចុច និង​សង្កត់​ដើម្បី​តម្រៀប​ឡើងវិញ"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 07fe5d7..8861715 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g>님에게 문자 메시지 보내기"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"듣지 않은 음성사서함"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"음성 검색 시작"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g>에 전화"</string>
     <string name="unknown" msgid="740067747858270469">"알 수 없음"</string>
     <string name="voicemail" msgid="3851469869202611441">"음성사서함"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"실행취소"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>에 전화"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"주소록에 추가"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"새로운 부재중 전화 <xliff:g id="NUMBER">%s</xliff:g>건"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"자주 전화하는 연락처가\n여기에 표시됩니다.\n전화해 보세요."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"이미지를 탭하여 모든 번호를 확인하거나 길게 눌러 재정렬합니다."</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index efaf50b..53ca8a1 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"ສົ່ງຂໍ້ຄວາມຫາ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ຂໍ້ຄວາມສຽງທີ່ຍັງບໍ່ໄດ້ຟັງ"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"ເລີ່ມການຊອກຫາດ້ວຍສຽງ"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"ໂທ​ຫາ <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"ບໍ່ຮູ້ຈັກ"</string>
     <string name="voicemail" msgid="3851469869202611441">"ຂໍ້ຄວາມສຽງ"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"ຍົກເລີກ"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"ໂທ​ຫາ <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"ເພີ່ມໃສ່ລາຍຊື່ຕິດຕໍ່"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ສາຍທີ່ບໍ່ໄດ້ຮັບໃໝ່"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"ລາຍງານທີ່ມັກ &amp; ລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ທ່ານ\nໂທຫາເລື້ອຍໆ ຈະປາກົດຢູ່ບ່ອນນີ້.\nສະນັ້ນ, ທ່ານສາມາດເລີ່ມໂທໄດ້."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"ແຕະຮູບ​ພາບ​ເພື່ອເບິ່ງຈໍານວນຮູບພາບທັງໝົດ ຫຼືແຕະຄ້າງໄວ້ເພື່ອຈັດຮຽງໃໝ່"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index cef73ec..eda37b5 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Siųsti teksto pranešimą <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Neklausytas balso pašto pranešimas"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Pradėti paiešką balsu"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Skambinti <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Nežinomas"</string>
     <string name="voicemail" msgid="3851469869202611441">"Balso paštas"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Anuliuoti"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Skambinti numeriu <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Pridėti prie kontaktų"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Naujų praleistų skambučių: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Mėgstamiausieji ir kontaktai,\nkuriems dažnai skambinate, bus rodomi čia.\nTad pradėkite skambinti."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Palieskite vaizdą, kad pamatytumėte visus skaičius, arba paspauskite ir palaikykite, kad pakeistumėte tvarką"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 25bf814..fb88da3 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Sūtīt īsziņu šim: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nenoklausīti balss pasta ziņojumi"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Sākt meklēšanu ar balsi"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Zvaniet: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Nezināms"</string>
     <string name="voicemail" msgid="3851469869202611441">"Balss pasts"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Atsaukt"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Zvaniet: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Pievienot kontaktpersonām"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Jauni neatbildēti zvani: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Šeit tiks rādīta izlase un kontaktpersonas,\nkurām bieži zvanāt.\nVarat sākt zvanīšanu."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Pieskarieties attēlam, lai skatītu visus tālruņa numurus, vai pieskarieties un turiet, lai mainītu secību."</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 73865c2..e69a4a4 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g> руу зурвас илгээх"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Сонсоогүй дуут шуудан"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Дуун хайлтыг эхлүүлэх"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> руу залгах"</string>
     <string name="unknown" msgid="740067747858270469">"Тодорхойгүй"</string>
     <string name="voicemail" msgid="3851469869202611441">"Дуут шуудан"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Буцаах"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> руу залгах"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Харилцагчдад нэмэх"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> шинэ аваагүй дуудлага"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Таны дуртай &amp; \nбайнга залгадаг харилцагчид\nэнд харагдах болно."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Бүх тоог харахын тулд зургийг товших буюу дахин захиалахын тулд дараад барина уу"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 788a234..c9af0ef 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Hantar mesej teks kepada <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mel suara belum didengar"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Mulakan carian suara"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Tidak diketahui"</string>
     <string name="voicemail" msgid="3851469869202611441">"Mel suara"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Buat asal"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Tambahkan pada kenalan"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> panggilan terlepas baharu"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Kegemaran &amp; kenalan yang\nkerap anda hubungi akan ditunjukkan di sini.\nJadi, mulalah membuat panggilan."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Ketik imej untuk melihat semua nombor atau tekan dan tahan imej untuk menyusun semula"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index d89617d..86d6652 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Send tekstmelding til <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ikke avspilt talepost"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Start talesøk"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"–"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Ukjent"</string>
     <string name="voicemail" msgid="3851469869202611441">"Telefonsvarer"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Angre"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Legg til i kontakter"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nye tapte anrop"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Favoritter og kontakter du \nringer ofte vises her.\n Ring i vei."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Trykk på bildet for å se alle telefonnumrene, eller trykk og hold inne for å endre rekkefølgen"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 7d7071e..209e14d 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Sms verzenden naar <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Niet-beluisterde voicemail"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Gesproken zoekopdracht"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Onbekend"</string>
     <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Ongedaan maken"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Toevoegen aan contacten"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nieuwe gemiste oproepen"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Favorieten en contacten die u\nvaak belt, worden hier weergegeven.\nDus begin met bellen."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Tik op de afbeelding om alle nummers te bekijken of raak deze lang aan om de volgorde van nummers te wijzigen"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 0e522b2..ed862a3 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Wyślij SMS do: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nieodsłuchana poczta głosowa"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Wyszukiwanie głosowe"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"–"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Zadzwoń: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Nieznane"</string>
     <string name="voicemail" msgid="3851469869202611441">"Poczta głosowa"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Cofnij"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Zadzwoń: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Dodaj do kontaktów"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Nowe nieodebrane połączenia: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Tutaj będą widoczne Twoje\nulubione i najczęstsze kontakty.\nPora zacząć dzwonić."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Kliknij zdjęcie, by zobaczyć wszystkie numery, lub kliknij je i przytrzymaj, by zmienić kolejność"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 01b7e4b..30ab61851 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensagem de texto para <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mensagem de correio de voz ainda não ouvida"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Iniciar pesquisa por voz"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Telefonar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Desconhecido"</string>
     <string name="voicemail" msgid="3851469869202611441">"Correio de voz"</string>
@@ -135,7 +135,7 @@
     <string name="add_contact_not_available" msgid="1419207765446461366">"Reative a aplicação Pessoas para utilizar esta funcionalidade."</string>
     <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Introduzir nome ou n.º telef."</string>
     <string name="call_log_all_title" msgid="3566738938889333307">"Todos"</string>
-    <string name="call_log_missed_title" msgid="4541142293870638971">"Não atend."</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Não atendidas"</string>
     <string name="recentMissed_empty" msgid="5427113551557296665">"Não existem chamadas não atendidas recentes."</string>
     <string name="recentVoicemails_empty" msgid="5163114119598014048">"Não existe correio de voz recente."</string>
     <string name="show_all_contacts" msgid="1732256558071778056">"Mostrar todos os contactos"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Anular"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefonar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Adicionar aos contactos"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> chamadas não atendidas novas"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Os favoritos e os contactos para os quais\nliga frequentemente serão mostrados aqui,\n por isso, comece a ligar."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Toque na imagem para ver todos os números ou prima sem soltar para reordenar"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index c95cd57..bc621a3 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensagem de texto para <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nova mensagem de voz"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Iniciar pesquisa por voz"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Ligar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Desconhecido"</string>
     <string name="voicemail" msgid="3851469869202611441">"Correio de voz"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfazer"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ligar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Adicionar aos contatos"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> novas chamadas perdidas"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Seus favoritos e os contatos\npara os quais você liga com mais frequência aparecerão aqui.\nComece a ligar!"</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Toque na imagem para ver todos os números ou pressione e segure para reordenar"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 12d9fc6..e1b7c63 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -169,7 +169,7 @@
     <skip />
     <!-- no translation found for description_start_voice_search (520539488194946012) -->
     <skip />
-    <!-- no translation found for call_log_empty_gecode (5588904744812100846) -->
+    <!-- no translation found for call_log_empty_gecode (2019639420045039861) -->
     <skip />
     <!-- no translation found for menu_callNumber (997146291983360266) -->
     <skip />
@@ -241,4 +241,12 @@
     <skip />
     <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
     <skip />
+    <!-- no translation found for num_missed_calls (8081736535604293886) -->
+    <skip />
+    <!-- no translation found for no_favorites (5212485868783382971) -->
+    <skip />
+    <!-- no translation found for contact_tooltip (7817483485692282287) -->
+    <skip />
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 9ca4931..71a6b5a 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Trimiteţi un mesaj text către <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mesaje vocale neascultate"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Începeţi căutarea vocală"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Apelaţi <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Necunoscut"</string>
     <string name="voicemail" msgid="3851469869202611441">"Mesagerie vocală"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Anulați"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Apelați <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Adăugați în Agendă"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> (de) apeluri nepreluate noi"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Preferințele și persoanele din Agendă pe care \nle apelați frecvent vor fi afișate aici.\nÎncepeți să faceți apeluri."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Atingeți imaginea pentru a vedea toate numerele sau apăsați și țineți apăsat pentru a reordona"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 0684d78..391078d 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Отправить текстовое сообщение: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослушанные сообщения голосовой почты"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Начать голосовой поиск"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Позвонить: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Неизвестно"</string>
     <string name="voicemail" msgid="3851469869202611441">"Голосовая почта"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Отмена"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Позвонить: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Добавить в контакты"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Пропущенных вызовов: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Здесь будут отображаться избранные элементы\nи контакты, которым вы звоните чаще всего.\nОбщайтесь с удовольствием."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Нажмите на фото, чтобы посмотреть все номера. Чтобы изменить порядок номеров, нажмите и удерживайте фото."</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 66e5abf..18ce48d 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Poslať textovú správu kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nevypočutá hlasová správa"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Spustenie hlasového vyhľadávania"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Volať <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Neznáme"</string>
     <string name="voicemail" msgid="3851469869202611441">"Hlasová schránka"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Späť"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Volať na číslo <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Pridať do kontaktov"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Počet nových zmeškaných hovorov: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Obľúbení ľudia a kontakty,\nktorým často voláte, sa zobrazia tu.\nZačnite teda volať."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Klepnutím na obrázok zobrazíte všetky čísla a pridržaním ich zoradíte"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 0c509bd..c136117 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Pošlji SMS osebi <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Neodprta glasovna pošta"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Začni glasovno iskanje"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Pokliči <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Neznano"</string>
     <string name="voicemail" msgid="3851469869202611441">"Glasovna pošta"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Razveljavi"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Pokliči <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Dodaj med stike"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Št. novih zgrešenih klicev: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Priljubljeni stiki in stiki,\nki jih pogosto kličete, bodo prikazani tukaj.\nKar začnite klicati."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Dotaknite se slike, da prikažete vse številke, ali jo pritisnite in pridržite, da spremenite vrstni red"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 37daeb3..5481c91 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -40,10 +40,10 @@
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Пусти"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова говорна порука од <xliff:g id="CALLER">%1$s</xliff:g>"</string>
-    <string name="voicemail_playback_error" msgid="1811242131549854624">"Није било могуће пустити говорну пошту."</string>
+    <string name="voicemail_playback_error" msgid="1811242131549854624">"Није могуће пустити говорну пошту."</string>
     <string name="voicemail_buffering" msgid="738287747618697097">"Баферовање..."</string>
     <string name="voicemail_fetching_content" msgid="877911315738258780">"Преузимање говорне поште..."</string>
-    <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Није било могуће преузети говорну пошту."</string>
+    <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Није могуће преузети говорну пошту."</string>
     <string name="call_log_voicemail_header" msgid="3945407886667089173">"Само позиви са говорном поштом"</string>
     <string name="call_log_incoming_header" msgid="2787722299753674684">"Само долазни позиви"</string>
     <string name="call_log_outgoing_header" msgid="761009180766735769">"Само одлазни позиви"</string>
@@ -95,7 +95,7 @@
     <string name="menu_newContact" msgid="1209922412763274638">"Нови контакт"</string>
     <string name="menu_allContacts" msgid="6948308384034051670">"Сви контакти"</string>
     <string name="callDetailTitle" msgid="5340227785196217938">"Детаљи позива"</string>
-    <string name="toast_call_detail_error" msgid="7200975244804730096">"Није било могуће прочитати детаље о захтеваном позиву."</string>
+    <string name="toast_call_detail_error" msgid="7200975244804730096">"Није могуће прочитати детаље о захтеваном позиву."</string>
     <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Употребите бројчаник за тонско бирање"</string>
     <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Врати се на позив који је у току"</string>
     <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Додај позив"</string>
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Слање текстуалне поруке контакту <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непреслушана говорна пошта"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Покретање гласовне претраге"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Позови <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Непознато"</string>
     <string name="voicemail" msgid="3851469869202611441">"Говорна пошта"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Опозови"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Позови <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Додај у контакте"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Нових пропуштених позива: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Овде ће се приказати омиљени и\nчесто позивани контакти.\nПа почните са позивањем."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Додирните слику да бисте видели све бројеве или притисните и задржите да бисте променили распоред"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 8c42861..2ff896d 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Skicka SMS till <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ej hört röstmeddelande"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Starta röstsökning"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Okänd"</string>
     <string name="voicemail" msgid="3851469869202611441">"Röstbrevlåda"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Ångra"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Lägg till i Kontakter"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nya missade samtal"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Dina favoriter och kontakterna du\nofta ringer till visas här.\nSå det är bara att börja ringa."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Tryck på bilden om du vill visa alla nummer eller tryck länge om du vill flytta den"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 1e7201b..6d436b5 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Tuma ujumbe wa maandishi kwa <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Barua sauti ambayo haijasikizwa"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Anza kutafuta kwa kutamka"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Piga simu <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Haijulikani"</string>
     <string name="voicemail" msgid="3851469869202611441">"Ujumbe wa sauti"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Tendua"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Piga simu <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Ongeza kwenye anwani"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Simu <xliff:g id="NUMBER">%s</xliff:g> za karibuni ambazo hazikujibiwa"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Vipendwa na nambari \n unazopiga mara nyingi zitaonekana hapa.\nKwa hivyo, anza kupiga."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Gonga picha ili uone nambari zote au bonyeza na ushikilie ili upange upya"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 3c969ae..88ec3df 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"ส่งข้อความไปที่ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ข้อความเสียงที่ยังไม่ได้ฟัง"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"เริ่มต้นการค้นหาด้วยเสียง"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"โทร <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"ไม่ทราบ"</string>
     <string name="voicemail" msgid="3851469869202611441">"ข้อความเสียง"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"เลิกทำ"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"โทร <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"เพิ่มในสมุดติดต่อ"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"สายที่ไม่ได้รับใหม่ <xliff:g id="NUMBER">%s</xliff:g> สาย"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"รายการโปรดและรายชื่อติดต่อที่คุณ\nโทรหาบ่อยจะแสดงที่นี่\n เริ่มโทรได้"</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"แตะรูปภาพเพื่อดูหมายเลขทั้งหมด หรือกดค้างเพื่อจัดลำดับใหม่"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 9cebca0..65a98a0 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Ipadala ang text message kay <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Hindi pa naririnig na voicemail"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Simulan ang paghahanap gamit ang boses"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Tumawag sa <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Di-kilala"</string>
     <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"I-undo"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Tumawag sa <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Idagdag sa mga contact"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> (na) bagong hindi nasagot na tawag"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Lalabas dito ang mga paborito at contact na\nmadalas mong tinatawagan.\nKaya, simulan ang pagtawag."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"I-tap ang larawan upang makita ang lahat ng numero at pindutin nang matagal upang ayusing muli"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index ec9d6d8..68be5b4 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Şu kişiye kısa mesaj gönder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Dinlenilmemiş sesli mesaj"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Sesli arama başlat"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Çağrı yap: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Bilinmiyor"</string>
     <string name="voicemail" msgid="3851469869202611441">"Sesli Mesaj"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Geri al"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefon et: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Kişilere ekle"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> yeni cevapsız çağrı"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Favoriler ve sık telefon ettiğiniz\nkişiler burada görüntülenir.\nTelefon etmeye başlayın."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Tüm numaraları görmek için resme hafifçe vurun veya yeniden sıralamak için basılı tutun"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 9cccfcb..e6d8934 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Надіслати текстове повідомлення: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослухана голосова пошта"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Розпочати голосовий пошук"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"–"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Телефонувати <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Невідомий"</string>
     <string name="voicemail" msgid="3851469869202611441">"Голос. пошта"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Відмінити"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Набрати <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Додати до контактів"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Нових пропущених дзвінків: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Тут будуть відображатися вибрані контакти й контакти\n, яким ви часто телефонуєте.\nСпілкуйтеся із задоволенням."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Торкніться зображення, щоб побачити всі номери, або натисніть і утримуйте, щоб змінити порядок"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index a59892f..73486cd 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Gửi tin nhắn văn bản tới <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Thư thoại chưa nghe"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Bắt đầu tìm kiếm bằng giọng nói"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Gọi <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Không xác định"</string>
     <string name="voicemail" msgid="3851469869202611441">"Thư thoại"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Hoàn tác"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Gọi <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Thêm vào danh bạ"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> cuộc gọi nhỡ mới"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Người liên hệ yêu thích và người liên hệ bạn\nthường gọi sẽ hiển thị tại đây.\nVì vậy, hãy bắt đầu gọi."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Chạm vào hình ảnh để xem tất cả các số hoặc nhấn và giữ để sắp xếp lại"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 90ed648..4c69d25 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"向<xliff:g id="NAME">%1$s</xliff:g>发送短信"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未收听的语音邮件"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"开始语音搜索"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"拨打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"未知"</string>
     <string name="voicemail" msgid="3851469869202611441">"语音信箱"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"撤消"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"拨打<xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"添加到通讯录"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>个新的未接电话"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"您收藏的联系人和经常通话\n的联系人都会显示在这里。\n现在就开始与联系人通话吧。"</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"点按图片可查看所有号码,按住图片可重新排序"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 4f2bfb9..9d14585 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"發短訊給<xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未聽取的語音留言"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"開始語音搜尋"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"未知"</string>
     <string name="voicemail" msgid="3851469869202611441">"留言"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"復原"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"加入通訊錄"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> 個新的未接來電"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"您的最愛聯絡人和經常通話的聯絡人\n會在這裡顯示,\n致電他們吧!"</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"輕按相片可查看所有號碼,按住則可重新排序"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 3bf677a..dc01d84 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"傳送簡訊給<xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未聽取的語音留言"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"開始進行語音搜尋"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"不明"</string>
     <string name="voicemail" msgid="3851469869202611441">"語音留言"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"復原"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"新增為聯絡人"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> 通新的未接來電"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"您最愛的聯絡人和經常通話的聯絡人\n都會顯示在這裡,\n可以直接打給他們!"</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"輕按圖片即可查看所有號碼,按住圖片則可重新排序"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 10ff5e5..34bef46 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -115,7 +115,7 @@
     <string name="description_send_text_message" msgid="7803126439934046891">"Hambisa umyalezo ku <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"I-imeyli yezwi engazwakalanga"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Qalisa ukusesha ngezwi"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+    <string name="call_log_empty_gecode" msgid="2019639420045039861">" "</string>
     <string name="menu_callNumber" msgid="997146291983360266">"Shayela <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="unknown" msgid="740067747858270469">"Akwaziwa"</string>
     <string name="voicemail" msgid="3851469869202611441">"Ivoyisimeyili"</string>
@@ -157,4 +157,9 @@
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Hlehlisa"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Shayela ku-<xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Engeza koxhumana nabo"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> amakholi amasha owaphuthelwe"</string>
+    <string name="no_favorites" msgid="5212485868783382971">"Izintandokazi noxhumana nabo\nobashayela ngokuvamile bazovela lapha.\nNgakho-ke, qala ukushaya."</string>
+    <string name="contact_tooltip" msgid="7817483485692282287">"Thepha isithombe ukuze ubone zonke izinombolo noma cindezela uphinde ubambe ukuze uhlele kabusha"</string>
+    <!-- no translation found for description_dismiss (2146276780562549643) -->
+    <skip />
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index e64ea4c..439ccc2 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -67,4 +67,7 @@
 
     <!-- Undo dialogue color -->
     <color name="undo_dialogue_text_color">#4d4d4d</color>
+
+    <!-- Text color for no favorites message -->
+    <color name="nofavorite_text_color">#777777</color>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index d1052d5..e4e847c 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -47,10 +47,8 @@
     <!-- Layout weight values for dialpad screen. These layouts will be used in one
          LinearLayout (dialpad_fragment.xml), configuring dialpad screen's vertical
          ratio. -->
-    <integer name="dialpad_layout_weight_digits">20</integer>
-    <integer name="dialpad_layout_weight_digits_new">15</integer>
+    <integer name="dialpad_layout_weight_digits">15</integer>
     <integer name="dialpad_layout_weight_dialpad">65</integer>
-    <integer name="dialpad_layout_weight_additional_buttons">15</integer>
 
     <!-- Text dimensions for dialpad keys -->
     <dimen name="dialpad_key_numbers_size">40dp</dimen>
@@ -60,7 +58,7 @@
     <dimen name="dialpad_key_letters_width">41dp</dimen>
 
 
-    <dimen name="fake_action_bar_height">48dp</dimen>
+    <dimen name="fake_action_bar_height">60dp</dimen>
     <!-- Min with of fake menu buttons, which should be same as ActionBar's one -->
     <dimen name="fake_menu_button_min_width">56dp</dimen>
 
@@ -73,4 +71,8 @@
     <dimen name="favorites_row_end_padding">8dp</dimen>
     <dimen name="favorites_row_undo_text_side_padding">32dp</dimen>
     <dimen name="recent_call_log_item_padding">8dp</dimen>
+
+    <!-- Padding for the tooltip -->
+    <dimen name="dismiss_button_padding_start">20dip</dimen>
+    <dimen name="dismiss_button_padding_end">28dip</dimen>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ad16f03..55cdea4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -457,7 +457,7 @@
     <string name="description_start_voice_search">Start voice search</string>
 
     <!-- The string used to represent an unknown location for a phone number in the call log [CHAR LIMIT=3] -->
-    <string name="call_log_empty_gecode">-</string>
+    <string name="call_log_empty_gecode">\u0020</string>
 
     <!-- Menu item used to call a contact, containing the number of the contact to call -->
     <string name="menu_callNumber">Call <xliff:g id="number">%s</xliff:g></string>
@@ -620,4 +620,19 @@
 
     <!-- Shortcut item used to add a number directly from search -->
     <string name="search_shortcut_add_to_contacts">Add to contacts</string>
+
+    <!-- Number of missed calls shown on call card [CHAR LIMIT=40] -->
+    <string name="num_missed_calls"><xliff:g id="number">%s</xliff:g> new missed calls</string>
+
+    <!-- Shows when there are no favorites. -->
+    <string name="no_favorites">Favorites &amp; contacts you\ncall often will show here.\nSo, start calling.</string>
+
+    <!-- Shows up as a tooltip to provide a hint to the user that the profile pic in a contact
+         card can be tapped to bring up a list of all numbers, or long pressed to start reordering
+         [CHAR LIMIT=NONE]
+    -->
+    <string name="contact_tooltip">Tap image to see all numbers or press and hold to reorder</string>
+
+    <!-- Content description for dismiss button on badge. [CHAR LIMIT=NONE] -->
+    <string name="description_dismiss">Dismiss</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 791adf6..4e91897 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -145,4 +145,9 @@
         <item name="android:background">@null</item>
         <item name="android:textColorHint">@color/searchbox_text_color</item>
     </style>
+
+    <style name="DismissButtonStyle">
+        <item name="android:paddingLeft">@dimen/dismiss_button_padding_start</item>
+        <item name="android:paddingRight">@dimen/dismiss_button_padding_end</item>
+    </style>
 </resources>
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 7a08708..b0c8e68 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -16,7 +16,6 @@
 
 package com.android.dialer;
 
-import android.app.ActionBar;
 import android.app.Activity;
 import android.content.ContentResolver;
 import android.content.ContentUris;
@@ -281,7 +280,7 @@
         mContactPhotoManager = ContactPhotoManager.getInstance(this);
         mProximitySensorManager = new ProximitySensorManager(this, mProximitySensorListener);
         mContactInfoHelper = new ContactInfoHelper(this, GeoUtil.getCurrentCountryIso(this));
-        configureActionBar();
+        getActionBar().setDisplayHomeAsUpEnabled(true);
         optionallyHandleVoicemail();
         if (getIntent().getBooleanExtra(EXTRA_FROM_NOTIFICATION, false)) {
             closeSystemDialogs();
@@ -632,7 +631,7 @@
             // If this is not a regular number, there is no point in looking it up in the contacts.
             ContactInfo info =
                     PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation)
-                    && new PhoneNumberUtilsWrapper().isVoicemailNumber(number)
+                    && !new PhoneNumberUtilsWrapper().isVoicemailNumber(number)
                             ? mContactInfoHelper.lookupNumber(number, countryIso)
                             : null;
             if (info == null) {
@@ -796,20 +795,6 @@
         return super.onPrepareOptionsMenu(menu);
     }
 
-    @Override
-    public boolean onMenuItemSelected(int featureId, MenuItem item) {
-        switch (item.getItemId()) {
-            case android.R.id.home: {
-                onHomeSelected();
-                return true;
-            }
-
-            // All the options menu items are handled by onMenu... methods.
-            default:
-                throw new IllegalArgumentException();
-        }
-    }
-
     public void onMenuRemoveFromCallLog(MenuItem menuItem) {
         final StringBuilder callIds = new StringBuilder();
         for (Uri callUri : getCallLogEntryUris()) {
@@ -854,13 +839,6 @@
                 });
     }
 
-    private void configureActionBar() {
-        ActionBar actionBar = getActionBar();
-        if (actionBar != null) {
-            actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_HOME);
-        }
-    }
-
     /** Invoked when the user presses the home button in the action bar. */
     private void onHomeSelected() {
         Intent intent = new Intent(Intent.ACTION_VIEW, Calls.CONTENT_URI);
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 4c747c9..82d5c3f 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -139,13 +139,16 @@
     private View mMenuButton;
     private View mCallHistoryButton;
     private View mDialpadButton;
+    private PopupMenu mOverflowMenu;
 
     // Padding view used to shift the fragments up when the dialpad is shown.
     private View mBottomPaddingView;
     private View mFragmentsFrame;
+    private View mActionBar;
 
     private boolean mInDialpadSearch;
     private boolean mInRegularSearch;
+    private boolean mClearSearchOnPause;
 
     /**
      * True if the dialpad is only temporarily showing due to being in call
@@ -165,6 +168,20 @@
 
     private DialerDatabaseHelper mDialerDatabaseHelper;
 
+    private class OverflowPopupMenu extends PopupMenu {
+        public OverflowPopupMenu(Context context, View anchor) {
+            super(context, anchor);
+        }
+
+        @Override
+        public void show() {
+            final Menu menu = getMenu();
+            final MenuItem clearFrequents = menu.findItem(R.id.menu_clear_frequents);
+            clearFrequents.setVisible(mPhoneFavoriteFragment.hasFrequents());
+            super.show();
+        }
+    }
+
     /**
      * Listener used when one of phone numbers in search UI is selected. This will initiate a
      * phone call using the phone number.
@@ -177,14 +194,14 @@
                     // CallLog screen (search UI will be automatically exited).
                     PhoneNumberInteraction.startInteractionForPhoneCall(
                         DialtactsActivity.this, dataUri, getCallOrigin());
-                    hideDialpadAndSearchUi();
+                    mClearSearchOnPause = true;
                 }
 
                 @Override
                 public void onCallNumberDirectly(String phoneNumber) {
                     Intent intent = CallUtil.getCallIntent(phoneNumber, getCallOrigin());
                     startActivity(intent);
-                    hideDialpadAndSearchUi();
+                    mClearSearchOnPause = true;
                 }
 
                 @Override
@@ -286,6 +303,7 @@
 
         mBottomPaddingView = findViewById(R.id.dialtacts_bottom_padding);
         mFragmentsFrame = findViewById(R.id.dialtacts_frame);
+        mActionBar = findViewById(R.id.fake_action_bar);
         prepareSearchView();
 
         if (UI.FILTER_CONTACTS_ACTION.equals(intent.getAction())
@@ -314,6 +332,15 @@
     }
 
     @Override
+    protected void onPause() {
+        if (mClearSearchOnPause) {
+            hideDialpadAndSearchUi();
+            mClearSearchOnPause = false;
+        }
+        super.onPause();
+    }
+
+    @Override
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         outState.putString(KEY_SEARCH_QUERY, mSearchQuery);
@@ -390,13 +417,7 @@
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.overflow_menu: {
-                final PopupMenu popupMenu = new PopupMenu(DialtactsActivity.this, view);
-                final Menu menu = popupMenu.getMenu();
-                popupMenu.inflate(R.menu.dialtacts_options);
-                final MenuItem clearFrequents = menu.findItem(R.id.menu_clear_frequents);
-                clearFrequents.setVisible(mPhoneFavoriteFragment.hasFrequents());
-                popupMenu.setOnMenuItemClickListener(this);
-                popupMenu.show();
+                mOverflowMenu.show();
                 break;
             }
             case R.id.dialpad_button:
@@ -463,7 +484,7 @@
         ft.commit();
     }
 
-    private void hideDialpadFragment(boolean animate, boolean clearDialpad) {
+    public void hideDialpadFragment(boolean animate, boolean clearDialpad) {
         if (mDialpadFragment == null) return;
         if (clearDialpad) {
             mDialpadFragment.clearDialpad();
@@ -487,14 +508,6 @@
         mSearchView = (EditText) findViewById(R.id.search_view);
         mSearchView.addTextChangedListener(mPhoneSearchQueryTextListener);
         mSearchView.setHint(getString(R.string.dialer_hint_find_contact));
-        mSearchView.setOnFocusChangeListener(new OnFocusChangeListener() {
-            @Override
-            public void onFocusChange(View view, boolean hasFocus) {
-                if (hasFocus) {
-                    showInputMethod(view.findFocus());
-                }
-            }
-        });
     }
 
     final AnimatorListener mHideListener = new AnimatorListenerAdapter() {
@@ -536,11 +549,13 @@
                         @Override
                         public void onAnimationEnd(Animator animation) {
                             mBottomPaddingView.setVisibility(View.VISIBLE);
-                                mFragmentsFrame.setTranslationY(0);
+                            mFragmentsFrame.setTranslationY(0);
+                            mActionBar.setVisibility(View.INVISIBLE);
                         }
                     });
         } else {
             mSearchViewContainer.setTranslationY(-mSearchView.getHeight());
+            mActionBar.setVisibility(View.INVISIBLE);
         }
     }
 
@@ -553,6 +568,7 @@
                     @Override
                     public void onAnimationStart(Animator animation) {
                         mSearchViewContainer.setVisibility(View.VISIBLE);
+                        mActionBar.setVisibility(View.VISIBLE);
                     }
                 });
 
@@ -572,6 +588,12 @@
         mMenuButton = findViewById(R.id.overflow_menu);
         if (mMenuButton != null) {
             mMenuButton.setOnClickListener(this);
+
+            mOverflowMenu = new OverflowPopupMenu(DialtactsActivity.this, mMenuButton);
+            final Menu menu = mOverflowMenu.getMenu();
+            mOverflowMenu.inflate(R.menu.dialtacts_options);
+            mOverflowMenu.setOnMenuItemClickListener(this);
+            mMenuButton.setOnTouchListener(mOverflowMenu.getDragToOpenListener());
         }
 
         mCallHistoryButton = findViewById(R.id.call_history_button);
@@ -824,6 +846,10 @@
      * Hides the search fragment
      */
     private void exitSearchUi() {
+        // See related bug in enterSearchUI();
+        if (getFragmentManager().isDestroyed()) {
+            return;
+        }
         // Go all the way back to the favorites fragment, regardless of how many times we
         // transitioned between search fragments
         final BackStackEntry entry = getFragmentManager().getBackStackEntryAt(0);
diff --git a/src/com/android/dialer/calllog/CallLogActivity.java b/src/com/android/dialer/calllog/CallLogActivity.java
index c343a7c..42318f0 100644
--- a/src/com/android/dialer/calllog/CallLogActivity.java
+++ b/src/com/android/dialer/calllog/CallLogActivity.java
@@ -157,7 +157,7 @@
         // If onPrepareOptionsMenu is called before fragments loaded. Don't do anything.
         if (mAllCallsFragment != null && itemDeleteAll != null) {
             final CallLogAdapter adapter = mAllCallsFragment.getAdapter();
-            itemDeleteAll.setEnabled(adapter != null && !adapter.isEmpty());
+            itemDeleteAll.setVisible(adapter != null && !adapter.isEmpty());
         }
         return true;
     }
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index 8b7e27d..9392410 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -18,6 +18,7 @@
 
 import android.content.ContentValues;
 import android.content.Context;
+import android.content.Intent;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.Uri;
@@ -29,7 +30,10 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.ViewStub;
 import android.view.ViewTreeObserver;
+import android.widget.ImageView;
+import android.widget.TextView;
 
 import com.android.common.widget.GroupingListAdapter;
 import com.android.contacts.common.ContactPhotoManager;
@@ -48,6 +52,7 @@
  */
 public class CallLogAdapter extends GroupingListAdapter
         implements ViewTreeObserver.OnPreDrawListener, CallLogGroupBuilder.GroupCreator {
+
     /** Interface used to initiate a refresh of the content. */
     public interface CallFetcher {
         public void fetchCalls();
@@ -182,26 +187,35 @@
      * action should be set to call a number instead of opening the detail page. */
     private boolean mUseCallAsPrimaryAction = false;
 
-    /** Listener for the primary action in the list, opens the call details. */
-    private final View.OnClickListener mPrimaryActionListener = new View.OnClickListener() {
+    private boolean mIsCallLog = true;
+    private int mNumMissedCalls = 0;
+    private int mNumMissedCallsShown = 0;
+
+    private View mBadgeContainer;
+    private ImageView mBadgeImageView;
+    private TextView mBadgeText;
+
+    /** Listener for the primary or secondary actions in the list.
+     *  Primary opens the call details.
+     *  Secondary calls or plays.
+     **/
+    private final View.OnClickListener mActionListener = new View.OnClickListener() {
         @Override
         public void onClick(View view) {
-            IntentProvider intentProvider = (IntentProvider) view.getTag();
-            if (intentProvider != null) {
-                mContext.startActivity(intentProvider.getIntent(mContext));
-            }
+            startActivityForAction(view);
         }
     };
-    /** Listener for the secondary action in the list, either call or play. */
-    private final View.OnClickListener mSecondaryActionListener = new View.OnClickListener() {
-        @Override
-        public void onClick(View view) {
-            IntentProvider intentProvider = (IntentProvider) view.getTag();
-            if (intentProvider != null) {
-                mContext.startActivity(intentProvider.getIntent(mContext));
+
+    private void startActivityForAction(View view) {
+        final IntentProvider intentProvider = (IntentProvider) view.getTag();
+        if (intentProvider != null) {
+            final Intent intent = intentProvider.getIntent(mContext);
+            // See IntentProvider.getCallDetailIntentProvider() for why this may be null.
+            if (intent != null) {
+                mContext.startActivity(intent);
             }
         }
-    };
+    }
 
     @Override
     public boolean onPreDraw() {
@@ -232,13 +246,15 @@
     };
 
     public CallLogAdapter(Context context, CallFetcher callFetcher,
-            ContactInfoHelper contactInfoHelper, boolean useCallAsPrimaryAction) {
+            ContactInfoHelper contactInfoHelper, boolean useCallAsPrimaryAction,
+            boolean isCallLog) {
         super(context);
 
         mContext = context;
         mCallFetcher = callFetcher;
         mContactInfoHelper = contactInfoHelper;
         mUseCallAsPrimaryAction = useCallAsPrimaryAction;
+        mIsCallLog = isCallLog;
 
         mContactInfoCache = ExpirableCache.create(CONTACT_INFO_CACHE_SIZE);
         mRequests = new LinkedList<ContactInfoRequest>();
@@ -336,8 +352,7 @@
      * up the contact information (if it has not been already started). Otherwise, it will be
      * started with a delay. See {@link #START_PROCESSING_REQUESTS_DELAY_MILLIS}.
      */
-    @VisibleForTesting
-    void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
+    protected void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
             boolean immediate) {
         ContactInfoRequest request = new ContactInfoRequest(number, countryIso, callLogInfo);
         synchronized (mRequests) {
@@ -483,8 +498,8 @@
     private void findAndCacheViews(View view) {
         // Get the views to bind to.
         CallLogListItemViews views = CallLogListItemViews.fromView(view);
-        views.primaryActionView.setOnClickListener(mPrimaryActionListener);
-        views.secondaryActionView.setOnClickListener(mSecondaryActionListener);
+        views.primaryActionView.setOnClickListener(mActionListener);
+        views.secondaryActionView.setOnClickListener(mActionListener);
         view.setTag(views);
     }
 
@@ -516,9 +531,11 @@
             views.primaryActionView.setTag(
                     IntentProvider.getCallDetailIntentProvider(
                             getCursor(), c.getPosition(), c.getLong(CallLogQuery.ID), count));
-        } else {
+        } else if (PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation)) {
             // Sets the primary action to call the number.
             views.primaryActionView.setTag(IntentProvider.getReturnCallIntentProvider(number));
+        } else {
+            views.primaryActionView.setTag(null);
         }
 
         // Store away the voicemail information so we can play it directly.
@@ -615,12 +632,108 @@
             mViewTreeObserver.addOnPreDrawListener(this);
         }
 
-        postBindView(views, info, details);
+        bindBadge(view, info, details, callType);
     }
 
-    protected void postBindView(CallLogListItemViews views, ContactInfo info,
+    protected void bindBadge(View view, ContactInfo info, PhoneCallDetails details, int callType) {
+
+        // Do not show badge in call log.
+        if (!mIsCallLog) {
+            final int numMissed = getNumMissedCalls(callType);
+            final ViewStub stub = (ViewStub) view.findViewById(R.id.link_stub);
+
+            if (shouldShowBadge(numMissed, info, details)) {
+                // Do not process if the data has not changed (optimization since bind view is
+                // called multiple times due to contact lookup).
+                if (numMissed == mNumMissedCallsShown) {
+                    return;
+                }
+
+                // stub will be null if it was already inflated.
+                if (stub != null) {
+                    final View inflated = stub.inflate();
+                    inflated.setVisibility(View.VISIBLE);
+                    mBadgeContainer = inflated.findViewById(R.id.badge_link_container);
+                    mBadgeImageView = (ImageView) inflated.findViewById(R.id.badge_image);
+                    mBadgeText = (TextView) inflated.findViewById(R.id.badge_text);
+                }
+
+                mBadgeContainer.setOnClickListener(getBadgeClickListener());
+                mBadgeImageView.setImageResource(getBadgeImageResId());
+                mBadgeText.setText(getBadgeText(numMissed));
+
+                mNumMissedCallsShown = numMissed;
+            } else {
+                // Hide badge if it was previously shown.
+                if (stub == null) {
+                    final View container = view.findViewById(R.id.badge_container);
+                    if (container != null) {
+                        container.setVisibility(View.GONE);
+                    }
+                }
+            }
+        }
+    }
+
+    public void setMissedCalls(Cursor data) {
+        final int missed;
+        if (data == null) {
+            missed = 0;
+        } else {
+            missed = data.getCount();
+        }
+        // Only need to update if the number of calls changed.
+        if (missed != mNumMissedCalls) {
+            mNumMissedCalls = missed;
+            notifyDataSetChanged();
+        }
+    }
+
+    protected View.OnClickListener getBadgeClickListener() {
+        return new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                final Intent intent = new Intent(mContext, CallLogActivity.class);
+                mContext.startActivity(intent);
+            }
+        };
+    }
+
+    /**
+     * Get the resource id for the image to be shown for the badge.
+     */
+    protected int getBadgeImageResId() {
+        return R.drawable.ic_call_log_blue;
+    }
+
+    /**
+     * Get the text to be shown for the badge.
+     *
+     * @param numMissed The number of missed calls.
+     */
+    protected String getBadgeText(int numMissed) {
+        return mContext.getResources().getString(R.string.num_missed_calls, numMissed);
+    }
+
+    /**
+     * Whether to show the badge.
+     *
+     * @param numMissedCalls The number of missed calls.
+     * @param info The contact info.
+     * @param details The call detail.
+     * @return {@literal true} if badge should be shown.  {@literal false} otherwise.
+     */
+    protected boolean shouldShowBadge(int numMissedCalls, ContactInfo info,
             PhoneCallDetails details) {
-        // no-op
+        return numMissedCalls > 0;
+    }
+
+    private int getNumMissedCalls(int callType) {
+        if (callType == Calls.MISSED_TYPE) {
+            // Exclude the current missed call shown in the shortcut.
+            return mNumMissedCalls - 1;
+        }
+        return mNumMissedCalls;
     }
 
     /** Checks whether the contact info from the call log matches the one from the contacts db. */
diff --git a/src/com/android/dialer/calllog/ClearCallLogDialog.java b/src/com/android/dialer/calllog/ClearCallLogDialog.java
index 1f5b2b3..e6b4ce2 100644
--- a/src/com/android/dialer/calllog/ClearCallLogDialog.java
+++ b/src/com/android/dialer/calllog/ClearCallLogDialog.java
@@ -22,6 +22,7 @@
 import android.app.FragmentManager;
 import android.app.ProgressDialog;
 import android.content.ContentResolver;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnClickListener;
 import android.os.AsyncTask;
@@ -29,11 +30,16 @@
 import android.provider.CallLog.Calls;
 
 import com.android.dialer.R;
+import com.android.dialer.service.CachedNumberLookupService;
+import com.android.dialerbind.ObjectFactory;
 
 /**
  * Dialog that clears the call log after confirming with the user
  */
 public class ClearCallLogDialog extends DialogFragment {
+    private static final CachedNumberLookupService mCachedNumberLookupService =
+            ObjectFactory.newCachedNumberLookupService();
+
     /** Preferred way to show this dialog */
     public static void show(FragmentManager fragmentManager) {
         ClearCallLogDialog dialog = new ClearCallLogDialog();
@@ -43,6 +49,7 @@
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
         final ContentResolver resolver = getActivity().getContentResolver();
+        final Context context = getActivity().getApplicationContext();
         final OnClickListener okListener = new OnClickListener() {
             @Override
             public void onClick(DialogInterface dialog, int which) {
@@ -53,6 +60,9 @@
                     @Override
                     protected Void doInBackground(Void... params) {
                         resolver.delete(Calls.CONTENT_URI, null, null);
+                        if (mCachedNumberLookupService != null) {
+                            mCachedNumberLookupService.clearAllCacheEntries(context);
+                        }
                         return null;
                     }
                     @Override
diff --git a/src/com/android/dialer/calllog/ContactInfo.java b/src/com/android/dialer/calllog/ContactInfo.java
index 2006744..601f552 100644
--- a/src/com/android/dialer/calllog/ContactInfo.java
+++ b/src/com/android/dialer/calllog/ContactInfo.java
@@ -42,6 +42,8 @@
 
     public static String GEOCODE_AS_LABEL = "";
 
+    public int sourceType = 0;
+
     @Override
     public int hashCode() {
         // Uses only name and contactUri to determine hashcode.
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
index 64484cb..bcb98fd 100644
--- a/src/com/android/dialer/calllog/ContactInfoHelper.java
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -30,6 +30,7 @@
 import com.android.contacts.common.util.Constants;
 import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.service.CachedNumberLookupService;
+import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
 import com.android.dialerbind.ObjectFactory;
 
 import org.json.JSONException;
@@ -129,9 +130,9 @@
 
             return Contacts.CONTENT_LOOKUP_URI.buildUpon()
                     .appendPath(Constants.LOOKUP_URI_ENCODED)
-                    .appendQueryParameter(Constants.LOOKUP_URI_JSON, jsonString)
                     .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
                             String.valueOf(Long.MAX_VALUE))
+                    .encodedFragment(jsonString)
                     .build();
         } catch (JSONException e) {
             return null;
@@ -228,7 +229,9 @@
         if (info != null && info != ContactInfo.EMPTY) {
             info.formattedNumber = formatPhoneNumber(number, null, countryIso);
         } else if (mCachedNumberLookupService != null) {
-            info = mCachedNumberLookupService.lookupCachedContactFromNumber(mContext, number);
+            CachedContactInfo cacheInfo = mCachedNumberLookupService
+                .lookupCachedContactFromNumber(mContext, number);
+            info = cacheInfo != null ? cacheInfo.getContactInfo() : null;
         }
         return info;
     }
diff --git a/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java b/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
index cb3d994..14e1bed 100644
--- a/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
+++ b/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
@@ -118,12 +118,12 @@
             // Check if we already know the name associated with this number.
             String name = names.get(newCall.number);
             if (name == null) {
-                // Look it up in the database.
-                name = mNameLookupQuery.query(newCall.number);
+                name = mPhoneNumberHelper.getDisplayName(newCall.number,
+                        newCall.numberPresentation).toString();
                 // If we cannot lookup the contact, use the number instead.
-                if (name == null) {
-                    name = mPhoneNumberHelper.getDisplayNumber(newCall.number,
-                            newCall.numberPresentation, "").toString();
+                if (TextUtils.isEmpty(name)) {
+                    // Look it up in the database.
+                    name = mNameLookupQuery.query(newCall.number);
                     if (TextUtils.isEmpty(name)) {
                         name = newCall.number;
                     }
diff --git a/src/com/android/dialer/calllog/IntentProvider.java b/src/com/android/dialer/calllog/IntentProvider.java
index 01ebf2f..da0c69d 100644
--- a/src/com/android/dialer/calllog/IntentProvider.java
+++ b/src/com/android/dialer/calllog/IntentProvider.java
@@ -22,6 +22,7 @@
 import android.database.Cursor;
 import android.net.Uri;
 import android.provider.CallLog.Calls;
+import android.util.Log;
 
 import com.android.contacts.common.CallUtil;
 import com.android.dialer.CallDetailActivity;
@@ -32,6 +33,9 @@
  * The intent is constructed lazily with the given information.
  */
 public abstract class IntentProvider {
+
+    private static final String TAG = IntentProvider.class.getSimpleName();
+
     public abstract Intent getIntent(Context context);
 
     public static IntentProvider getReturnCallIntentProvider(final String number) {
@@ -66,6 +70,14 @@
         return new IntentProvider() {
             @Override
             public Intent getIntent(Context context) {
+                if (cursor.isClosed()) {
+                    // There are reported instances where the cursor is already closed.
+                    // b/10937133
+                    // When causes a crash when it's accessed here.
+                    Log.e(TAG, "getCallDetailIntentProvider() cursor is already closed.");
+                    return null;
+                }
+
                 cursor.moveToPosition(position);
 
                 Intent intent = new Intent(context, CallDetailActivity.class);
diff --git a/src/com/android/dialer/calllog/PhoneNumberHelper.java b/src/com/android/dialer/calllog/PhoneNumberHelper.java
index 9e1d816..336facb 100644
--- a/src/com/android/dialer/calllog/PhoneNumberHelper.java
+++ b/src/com/android/dialer/calllog/PhoneNumberHelper.java
@@ -33,14 +33,7 @@
         mResources = resources;
     }
 
-    /**
-     * Returns the string to display for the given phone number.
-     *
-     * @param number the number to display
-     * @param formattedNumber the formatted number if available, may be null
-     */
-    public CharSequence getDisplayNumber(CharSequence number,
-            int presentation, CharSequence formattedNumber) {
+    /* package */ CharSequence getDisplayName(CharSequence number, int presentation) {
         if (presentation == Calls.PRESENTATION_UNKNOWN) {
             return mResources.getString(R.string.unknown);
         }
@@ -50,12 +43,34 @@
         if (presentation == Calls.PRESENTATION_PAYPHONE) {
             return mResources.getString(R.string.payphone);
         }
-        if (TextUtils.isEmpty(number)) {
-            return "";
-        }
         if (new PhoneNumberUtilsWrapper().isVoicemailNumber(number)) {
             return mResources.getString(R.string.voicemail);
         }
+        if (PhoneNumberUtilsWrapper.isLegacyUnknownNumbers(number)) {
+            return mResources.getString(R.string.unknown);
+        }
+        return "";
+    }
+
+    /**
+     * Returns the string to display for the given phone number.
+     *
+     * @param number the number to display
+     * @param formattedNumber the formatted number if available, may be null
+     */
+    public CharSequence getDisplayNumber(CharSequence number,
+            int presentation, CharSequence formattedNumber) {
+
+        final CharSequence displayName = getDisplayName(number, presentation);
+
+        if (!TextUtils.isEmpty(displayName)) {
+            return displayName;
+        }
+
+        if (TextUtils.isEmpty(number)) {
+            return "";
+        }
+
         if (TextUtils.isEmpty(formattedNumber)) {
             return number;
         } else {
diff --git a/src/com/android/dialer/calllog/PhoneNumberUtilsWrapper.java b/src/com/android/dialer/calllog/PhoneNumberUtilsWrapper.java
index c397f0a..9913c20 100644
--- a/src/com/android/dialer/calllog/PhoneNumberUtilsWrapper.java
+++ b/src/com/android/dialer/calllog/PhoneNumberUtilsWrapper.java
@@ -20,15 +20,21 @@
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 
+import com.google.android.collect.Sets;
+
+import java.util.Set;
+
 /**
  *
  */
 public class PhoneNumberUtilsWrapper {
 
+    private static final Set<String> LEGACY_UNKNOWN_NUMBERS = Sets.newHashSet("-1", "-2", "-3");
+
     /** Returns true if it is possible to place a call to the given number. */
     public static boolean canPlaceCallsTo(CharSequence number, int presentation) {
         return presentation == CallLog.Calls.PRESENTATION_ALLOWED
-            && !TextUtils.isEmpty(number);
+            && !TextUtils.isEmpty(number) && !isLegacyUnknownNumbers(number);
     }
 
     /**
@@ -71,6 +77,13 @@
         if (new PhoneNumberUtilsWrapper().isVoicemailNumber(number)) {
             return false;
         }
+        if (isLegacyUnknownNumbers(number.toString())) {
+            return false;
+        }
         return true;
     }
+
+    public static boolean isLegacyUnknownNumbers(CharSequence number) {
+        return LEGACY_UNKNOWN_NUMBERS.contains(number.toString());
+    }
 }
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index 4066122..9ebf112 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -93,6 +93,8 @@
 import com.android.phone.common.HapticFeedback;
 import com.google.common.annotations.VisibleForTesting;
 
+import java.util.HashSet;
+
 /**
  * Fragment that displays a twelve-key phone dialpad.
  */
@@ -205,12 +207,9 @@
     private final Object mToneGeneratorLock = new Object();
     private View mDialpad;
     /**
-     * Remembers the number of dialpad buttons which are pressed at this moment.
-     * If it becomes 0, meaning no buttons are pressed, we'll call
-     * {@link ToneGenerator#stopTone()}; the method shouldn't be called unless the last key is
-     * released.
+     * Set of dialpad keys that are currently being pressed
      */
-    private int mDialpadPressCount;
+    private final HashSet<View> mPressedDialpadKeys = new HashSet<View>(12);
 
     private View mDialButtonContainer;
     private View mDialButton;
@@ -701,8 +700,8 @@
             }
         }
         stopWatch.lap("tg");
-        // Prevent unnecessary confusion. Reset the press count anyway.
-        mDialpadPressCount = 0;
+
+        mPressedDialpadKeys.clear();
 
         configureScreenFromIntent(getActivity());
 
@@ -758,8 +757,7 @@
 
         // Make sure we don't leave this activity with a tone still playing.
         stopTone();
-        // Just in case reset the counter too.
-        mDialpadPressCount = 0;
+        mPressedDialpadKeys.clear();
 
         synchronized (mToneGeneratorLock) {
             if (mToneGenerator != null) {
@@ -807,6 +805,9 @@
     }
 
     private void keyPressed(int keyCode) {
+        if (getView().getTranslationY() != 0) {
+            return;
+        }
         switch (keyCode) {
             case KeyEvent.KEYCODE_1:
                 playTone(ToneGenerator.TONE_DTMF_1, TONE_LENGTH_INFINITE);
@@ -936,20 +937,11 @@
                     break;
                 }
             }
-            mDialpadPressCount++;
+            mPressedDialpadKeys.add(view);
         } else {
             view.jumpDrawablesToCurrentState();
-            mDialpadPressCount--;
-            if (mDialpadPressCount < 0) {
-                // e.g.
-                // - when the user action is detected as horizontal swipe, at which only
-                //   "up" event is thrown.
-                // - when the user long-press '0' button, at which dialpad will decrease this count
-                //   while it still gets press-up event here.
-                if (DEBUG) Log.d(TAG, "mKeyPressCount become negative.");
-                stopTone();
-                mDialpadPressCount = 0;
-            } else if (mDialpadPressCount == 0) {
+            mPressedDialpadKeys.remove(view);
+            if (mPressedDialpadKeys.isEmpty()) {
                 stopTone();
             }
         }
@@ -1037,12 +1029,9 @@
                 removePreviousDigitIfPossible();
                 keyPressed(KeyEvent.KEYCODE_PLUS);
 
-                // Stop tone immediately and decrease the press count, so that possible subsequent
-                // dial button presses won't honor the 0 click any more.
-                // Note: this *will* make mDialpadPressCount negative when the 0 key is released,
-                // which should be handled appropriately.
+                // Stop tone immediately
                 stopTone();
-                if (mDialpadPressCount > 0) mDialpadPressCount--;
+                mPressedDialpadKeys.remove(view);
 
                 return true;
             }
@@ -1082,8 +1071,11 @@
 
     public void callVoicemail() {
         startActivity(getVoicemailIntent());
-        mClearDigitsOnStop = true;
-        getActivity().finish();
+        hideAndClearDialpad();
+    }
+
+    private void hideAndClearDialpad() {
+        ((DialtactsActivity) getActivity()).hideDialpadFragment(false, true);
     }
 
     public static class ErrorDialogFragment extends DialogFragment {
@@ -1179,8 +1171,7 @@
                         (getActivity() instanceof DialtactsActivity ?
                                 ((DialtactsActivity) getActivity()).getCallOrigin() : null));
                 startActivity(intent);
-                mClearDigitsOnStop = true;
-                getActivity().finish();
+                hideAndClearDialpad();
             }
         }
     }
@@ -1713,6 +1704,7 @@
             activity.showSearchBar();
         } else {
             activity.hideSearchBar();
+            mDigits.requestFocus();
         }
     }
 
diff --git a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
index e911710..4f3a4da 100644
--- a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
+++ b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
@@ -3,7 +3,6 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.telephony.PhoneNumberUtils;
-import android.text.TextUtils;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -29,9 +28,8 @@
     public final static int SHORTCUT_INVALID = -1;
     public final static int SHORTCUT_DIRECT_CALL = 0;
     public final static int SHORTCUT_ADD_NUMBER_TO_CONTACTS = 1;
-    public final static int SHORTCUT_ADD_NEW_NAMED_CONTACT = 2;
 
-    public final static int SHORTCUT_COUNT = 3;
+    public final static int SHORTCUT_COUNT = 2;
 
     private final boolean[] mShortcutEnabled = new boolean[SHORTCUT_COUNT];
 
@@ -147,10 +145,6 @@
                 text = resources.getString(R.string.search_shortcut_add_to_contacts);
                 drawableId = R.drawable.ic_add_person_dk;
                 break;
-            case SHORTCUT_ADD_NEW_NAMED_CONTACT:
-                text = resources.getString(R.string.search_shortcut_add_to_contacts);
-                drawableId = R.drawable.ic_add_person_dk;
-                break;
             default:
                 throw new IllegalArgumentException("Invalid shortcut type");
         }
@@ -169,20 +163,8 @@
 
     @Override
     public void setQueryString(String queryString) {
-        boolean containsNonDialableCharacters = false;
-        for (int i = 0; i < queryString.length(); i++) {
-            if (!PhoneNumberUtils.isDialable(queryString.charAt(i))) {
-                containsNonDialableCharacters = true;
-                break;
-            }
-        }
-
-        if (containsNonDialableCharacters) {
-            mFormattedQueryString = null;
-        } else {
-            mFormattedQueryString = PhoneNumberUtils.formatNumber(queryString, mCountryIso);
-        }
-
+        mFormattedQueryString = PhoneNumberUtils.formatNumber(
+                PhoneNumberUtils.convertAndStrip(queryString), mCountryIso);
         super.setQueryString(queryString);
     }
 }
diff --git a/src/com/android/dialer/list/PhoneFavoriteFragment.java b/src/com/android/dialer/list/PhoneFavoriteFragment.java
index 84bd4b4..73703a0 100644
--- a/src/com/android/dialer/list/PhoneFavoriteFragment.java
+++ b/src/com/android/dialer/list/PhoneFavoriteFragment.java
@@ -15,6 +15,11 @@
  */
 package com.android.dialer.list;
 
+import android.animation.Animator;
+import android.animation.AnimatorSet;
+import android.animation.ArgbEvaluator;
+import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
 import android.app.Activity;
 import android.app.Fragment;
 import android.app.LoaderManager;
@@ -23,10 +28,10 @@
 import android.content.Loader;
 import android.content.SharedPreferences;
 import android.database.Cursor;
-import android.database.MatrixCursor;
 import android.graphics.Rect;
 import android.net.Uri;
 import android.os.Bundle;
+import android.provider.CallLog;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -38,7 +43,8 @@
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.ImageView;
 import android.widget.ListView;
-import android.widget.TextView;
+import android.widget.RelativeLayout;
+import android.widget.RelativeLayout.LayoutParams;
 
 import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.common.ContactTileLoaderFactory;
@@ -69,8 +75,17 @@
         CallLogQueryHandler.Listener, CallLogAdapter.CallFetcher,
         PhoneFavoritesTileAdapter.OnDataSetChangedForAnimationListener {
 
+    /**
+     * By default, the animation code assumes that all items in a list view are of the same height
+     * when animating new list items into view (e.g. from the bottom of the screen into view).
+     * This can cause incorrect translation offsets when a item that is larger or smaller than
+     * other list item is removed from the list. This key is used to provide the actual height
+     * of the removed object so that the actual translation appears correct to the user.
+     */
+    private static final long KEY_REMOVED_ITEM_HEIGHT = Long.MAX_VALUE;
+
     private static final String TAG = PhoneFavoriteFragment.class.getSimpleName();
-    private static final boolean DEBUG = true;
+    private static final boolean DEBUG = false;
 
     private int mAnimationDuration;
 
@@ -78,6 +93,7 @@
      * Used with LoaderManager.
      */
     private static int LOADER_ID_CONTACT_TILE = 1;
+    private static int MISSED_CALL_LOADER = 2;
 
     private static final String KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE =
             "key_last_dismissed_call_shortcut_date";
@@ -91,6 +107,27 @@
         public void onCallNumberDirectly(String phoneNumber);
     }
 
+    private class MissedCallLogLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
+
+        @Override
+        public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+            final Uri uri = CallLog.Calls.CONTENT_URI;
+            final String[] projection = new String[] {CallLog.Calls.TYPE};
+            final String selection = CallLog.Calls.TYPE + " = " + CallLog.Calls.MISSED_TYPE +
+                    " AND " + CallLog.Calls.IS_READ + " = 0";
+            return new CursorLoader(getActivity(), uri, projection, selection, null, null);
+        }
+
+        @Override
+        public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor data) {
+            mCallLogAdapter.setMissedCalls(data);
+        }
+
+        @Override
+        public void onLoaderReset(Loader<Cursor> cursorLoader) {
+        }
+    }
+
     private class ContactTileLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
         @Override
         public CursorLoader onCreateLoader(int id, Bundle args) {
@@ -102,6 +139,7 @@
         public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
             if (DEBUG) Log.d(TAG, "ContactTileLoaderListener#onLoadFinished");
             mContactTileAdapter.setContactCursor(data);
+            setEmptyViewVisibility(mContactTileAdapter.getCount() == 0);
         }
 
         @Override
@@ -153,9 +191,15 @@
     private CallLogAdapter mCallLogAdapter;
     private CallLogQueryHandler mCallLogQueryHandler;
 
+    private View mParentView;
+
     private PhoneFavoriteListView mListView;
 
     private View mShowAllContactsButton;
+    private View mShowAllContactsInEmptyViewButton;
+    private View mContactTileFrame;
+
+    private TileInteractionTeaserView mTileInteractionTeaserView;
 
     private final HashMap<Long, Integer> mItemIdTopMap = new HashMap<Long, Integer>();
     private final HashMap<Long, Integer> mItemIdLeftMap = new HashMap<Long, Integer>();
@@ -227,10 +271,9 @@
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
-        final View listLayout = inflater.inflate(
-                R.layout.phone_favorites_fragment, container, false);
+        mParentView = inflater.inflate(R.layout.phone_favorites_fragment, container, false);
 
-        mListView = (PhoneFavoriteListView) listLayout.findViewById(R.id.contact_tile_list);
+        mListView = (PhoneFavoriteListView) mParentView.findViewById(R.id.contact_tile_list);
         mListView.setItemsCanFocus(true);
         mListView.setOnItemClickListener(this);
         mListView.setVerticalScrollBarEnabled(false);
@@ -240,10 +283,19 @@
         mListView.setOnDragDropListener(mContactTileAdapter);
 
         final ImageView dragShadowOverlay =
-                (ImageView) listLayout.findViewById(R.id.contact_tile_drag_shadow_overlay);
+                (ImageView) mParentView.findViewById(R.id.contact_tile_drag_shadow_overlay);
         mListView.setDragShadowOverlay(dragShadowOverlay);
 
-        mEmptyView = inflater.inflate(R.layout.phone_no_favorites, mListView, false);
+        mEmptyView = mParentView.findViewById(R.id.phone_no_favorites_view);
+
+        mShowAllContactsInEmptyViewButton = mParentView.findViewById(
+                R.id.show_all_contact_button_in_nofav);
+        mShowAllContactsInEmptyViewButton.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                showAllContacts();
+            }
+        });
 
         mShowAllContactsButton = inflater.inflate(R.layout.show_all_contact_button, mListView,
                 false);
@@ -254,9 +306,15 @@
             }
         });
 
-        mContactTileAdapter.setEmptyView(mEmptyView);
+        mContactTileFrame = mParentView.findViewById(R.id.contact_tile_frame);
+
+        mTileInteractionTeaserView = (TileInteractionTeaserView) inflater.inflate(
+                R.layout.tile_interactions_teaser_view, mListView, false);
+
         mAdapter = new PhoneFavoriteMergedAdapter(getActivity(), this, mContactTileAdapter,
-                mCallLogAdapter, mShowAllContactsButton);
+                mCallLogAdapter, mShowAllContactsButton, mTileInteractionTeaserView);
+
+        mTileInteractionTeaserView.setAdapter(mAdapter);
 
         mListView.setAdapter(mAdapter);
 
@@ -264,7 +322,7 @@
         mListView.setFastScrollEnabled(false);
         mListView.setFastScrollAlwaysVisible(false);
 
-        return listLayout;
+        return mParentView;
     }
 
     public boolean hasFrequents() {
@@ -272,6 +330,19 @@
         return mContactTileAdapter.getNumFrequents() > 0;
     }
 
+    /* package */ void setEmptyViewVisibility(final boolean visible) {
+        final int previousVisibility = mEmptyView.getVisibility();
+        final int newVisibility = visible ? View.VISIBLE : View.GONE;
+
+        if (previousVisibility != newVisibility) {
+            final RelativeLayout.LayoutParams params = (LayoutParams) mContactTileFrame
+                    .getLayoutParams();
+            params.height = visible ? LayoutParams.WRAP_CONTENT : LayoutParams.MATCH_PARENT;
+            mContactTileFrame.setLayoutParams(params);
+            mEmptyView.setVisibility(newVisibility);
+        }
+    }
+
     @Override
     public void onStart() {
         super.onStart();
@@ -296,6 +367,7 @@
         // This method call implicitly assures ContactTileLoaderListener's onLoadFinished() will
         // be called, on which we'll check if "all" contacts should be reloaded again or not.
         getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, mContactTileLoaderListener);
+        getLoaderManager().initLoader(MISSED_CALL_LOADER, null, new MissedCallLogLoaderListener());
     }
 
     /**
@@ -331,6 +403,7 @@
 
     @Override
     public void onCallsFetched(Cursor cursor) {
+        animateListView();
         mCallLogAdapter.setLoading(false);
 
         // Save the date of the most recent call log item
@@ -339,7 +412,6 @@
         }
 
         mCallLogAdapter.changeCursor(cursor);
-
         mAdapter.notifyDataSetChanged();
     }
 
@@ -352,6 +424,9 @@
     public void onPause() {
         // If there are any pending contact entries that are to be removed, remove them
         mContactTileAdapter.removePendingContactEntry();
+        // Wipe the cache to refresh the call shortcut item. This is not that expensive because
+        // it only contains one item.
+        mCallLogAdapter.invalidateCache();
         super.onPause();
     }
 
@@ -359,7 +434,7 @@
      * Saves the current view offsets into memory
      */
     @SuppressWarnings("unchecked")
-    private void saveOffsets(long... idsInPlace) {
+    private void saveOffsets(int removedItemHeight) {
         final int firstVisiblePosition = mListView.getFirstVisiblePosition();
         if (DEBUG) {
             Log.d(TAG, "Child count : " + mListView.getChildCount());
@@ -372,7 +447,7 @@
             if (itemViewType == PhoneFavoritesTileAdapter.ViewTypes.TOP) {
                 // This is a tiled row, so save horizontal offsets instead
                 saveHorizontalOffsets((ContactTileRow) child, (ArrayList<ContactEntry>)
-                        mAdapter.getItem(position), idsInPlace);
+                        mAdapter.getItem(position));
             }
             if (DEBUG) {
                 Log.d(TAG, "Saving itemId: " + itemId + " for listview child " + i + " Top: "
@@ -380,10 +455,11 @@
             }
             mItemIdTopMap.put(itemId, child.getTop());
         }
+
+        mItemIdTopMap.put(KEY_REMOVED_ITEM_HEIGHT, removedItemHeight);
     }
 
-    private void saveHorizontalOffsets(ContactTileRow row, ArrayList<ContactEntry> list,
-            long... idsInPlace) {
+    private void saveHorizontalOffsets(ContactTileRow row, ArrayList<ContactEntry> list) {
         for (int i = 0; i < list.size(); i++) {
             final View child = row.getChildAt(i);
             final ContactEntry entry = list.get(i);
@@ -404,19 +480,42 @@
         if (mItemIdLeftMap.isEmpty()) {
             return;
         }
+        final AnimatorSet animSet = new AnimatorSet();
+        final ArrayList<Animator> animators = new ArrayList<Animator>();
         for (int i = 0; i < list.size(); i++) {
             final View child = row.getChildAt(i);
             final ContactEntry entry = list.get(i);
             final long itemId = mContactTileAdapter.getAdjustedItemId(entry.id);
 
             if (containsId(idsInPlace, itemId)) {
-                child.setAlpha(0.0f);
-                child.animate().alpha(1.0f)
-                        .setDuration(mAnimationDuration)
-                        .start();
+                animators.add(ObjectAnimator.ofFloat(
+                        child, "alpha", 0.0f, 1.0f));
                 break;
+            } else {
+                Integer startLeft = mItemIdLeftMap.get(itemId);
+                int left = child.getLeft();
+                if (startLeft != null) {
+                    if (startLeft != left) {
+                        int delta = startLeft - left;
+                        if (DEBUG) {
+                            Log.d(TAG, "Found itemId: " + itemId + " for tileview child " + i +
+                                    " Left: " + left +
+                                    " Delta: " + delta);
+                        }
+                        animators.add(ObjectAnimator.ofFloat(
+                                child, "translationX", delta, 0.0f));
+                    }
+                } else {
+                    // In case the last square row is pushed up from the non-square section.
+                    animators.add(ObjectAnimator.ofFloat(
+                            child, "translationX", left, 0.0f));
+                }
             }
         }
+        if (animators.size() > 0) {
+            animSet.setDuration(mAnimationDuration).playTogether(animators);
+            animSet.start();
+        }
     }
 
     /*
@@ -430,6 +529,9 @@
             // (dragging, swiping etc) that requires an animation.
             return;
         }
+
+        final int removedItemHeight = mItemIdTopMap.get(KEY_REMOVED_ITEM_HEIGHT);
+
         final ViewTreeObserver observer = mListView.getViewTreeObserver();
         observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
             @SuppressWarnings("unchecked")
@@ -437,6 +539,8 @@
             public boolean onPreDraw() {
                 observer.removeOnPreDrawListener(this);
                 final int firstVisiblePosition = mListView.getFirstVisiblePosition();
+                final AnimatorSet animSet = new AnimatorSet();
+                final ArrayList<Animator> animators = new ArrayList<Animator>();
                 for (int i = 0; i < mListView.getChildCount(); i++) {
                     final View child = mListView.getChildAt(i);
                     int position = firstVisiblePosition + i;
@@ -450,17 +554,12 @@
                     final long itemId = mAdapter.getItemId(position);
 
                     if (containsId(idsInPlace, itemId)) {
-                        child.setAlpha(0.0f);
-                        child.animate().alpha(1.0f)
-                                .setDuration(mAnimationDuration)
-                                .start();
+                        animators.add(ObjectAnimator.ofFloat(
+                                child, "alpha", 0.0f, 1.0f));
+                        break;
                     } else {
                         Integer startTop = mItemIdTopMap.get(itemId);
                         final int top = child.getTop();
-                        if (DEBUG) {
-                            Log.d(TAG, "Found itemId: " + itemId + " for listview child " + i +
-                                    " Top: " + top);
-                        }
                         int delta = 0;
                         if (startTop != null) {
                             if (startTop != top) {
@@ -470,17 +569,39 @@
                             // Animate new views along with the others. The catch is that they did
                             // not exist in the start state, so we must calculate their starting
                             // position based on neighboring views.
-                            int childHeight = child.getHeight() + mListView.getDividerHeight();
-                            startTop = top + (i > 0 ? childHeight : -childHeight);
+
+                            final int itemHeight;
+                            if (removedItemHeight == 0) {
+                                itemHeight = child.getHeight() + mListView.getDividerHeight();
+                            } else {
+                                itemHeight = removedItemHeight;
+                            }
+                            startTop = top + (i > 0 ? itemHeight : -itemHeight);
                             delta = startTop - top;
+                        } else {
+                            // In case the first non-square row is pushed down
+                            // from the square section.
+                            animators.add(ObjectAnimator.ofFloat(
+                                    child, "alpha", 0.0f, 1.0f));
+                        }
+                        if (DEBUG) {
+                            Log.d(TAG, "Found itemId: " + itemId + " for listview child " + i +
+                                    " Top: " + top +
+                                    " Delta: " + delta);
                         }
 
                         if (delta != 0) {
-                            child.setTranslationY(delta);
-                            child.animate().setDuration(mAnimationDuration).translationY(0);
+                            animators.add(ObjectAnimator.ofFloat(
+                                    child, "translationY", delta, 0.0f));
                         }
                     }
                 }
+
+                if (animators.size() > 0) {
+                    animSet.setDuration(mAnimationDuration).playTogether(animators);
+                    animSet.start();
+                }
+
                 mItemIdTopMap.clear();
                 mItemIdLeftMap.clear();
                 return true;
@@ -505,10 +626,11 @@
 
     @Override
     public void cacheOffsetsForDatasetChange() {
-        saveOffsets();
+        saveOffsets(0);
     }
 
-    public void dismissShortcut() {
+    public void dismissShortcut(int height) {
+        saveOffsets(height);
         mLastCallShortcutDate = mCurrentCallShortcutDate;
         final SharedPreferences prefs = getActivity().getSharedPreferences(
                 DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
diff --git a/src/com/android/dialer/list/PhoneFavoriteListView.java b/src/com/android/dialer/list/PhoneFavoriteListView.java
index 04bbe6b..99979dd 100644
--- a/src/com/android/dialer/list/PhoneFavoriteListView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteListView.java
@@ -80,8 +80,6 @@
 
     private int mDragShadowLeft;
     private int mDragShadowTop;
-    private int mDragShadowWidth;
-    private int mDragShadowHeight;
 
     private final float DRAG_SHADOW_ALPHA = 0.7f;
 
@@ -105,7 +103,8 @@
 
     private final AnimatorListenerAdapter mDragShadowOverAnimatorListener =
             new AnimatorListenerAdapter() {
-        private void recycleDragShadow() {
+        @Override
+        public void onAnimationEnd(Animator animation) {
             if (mDragShadowBitmap != null) {
                 mDragShadowBitmap.recycle();
                 mDragShadowBitmap = null;
@@ -113,16 +112,6 @@
             mDragShadowOverlay.setVisibility(GONE);
             mDragShadowOverlay.setImageBitmap(null);
         }
-
-        @Override
-        public void onAnimationCancel(Animator animation) {
-            recycleDragShadow();
-        }
-
-        @Override
-        public void onAnimationEnd(Animator animation) {
-            recycleDragShadow();
-        }
     };
 
     public PhoneFavoriteListView(Context context) {
@@ -277,9 +266,8 @@
                 ensureScrollHandler();
                 mScrollHandler.removeCallbacks(mDragScroller);
                 mIsDragScrollerRunning = false;
-                // Either it's been a successful drop or it's ended with out drop.
-                if (action == DragEvent.ACTION_DROP ||
-                        (action == DragEvent.ACTION_DRAG_ENDED && !event.getResult())) {
+                // Either a successful drop or it's ended with out drop.
+                if (action == DragEvent.ACTION_DROP || action == DragEvent.ACTION_DRAG_ENDED) {
                     handleDragFinished(eX, eY);
                 }
                 break;
@@ -315,14 +303,6 @@
         }
     }
 
-    private FrameLayout.LayoutParams getDragShadowLayoutParams() {
-        final FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
-                mDragShadowWidth, mDragShadowHeight);
-        lp.leftMargin = mDragShadowLeft;
-        lp.topMargin = mDragShadowTop;
-        return lp;
-    }
-
     /**
      * @return True if the drag is started.
      */
@@ -334,6 +314,11 @@
         }
 
         final ContactTileRow tile = (ContactTileRow) child;
+
+        if (tile.getTileAdapter().hasPotentialRemoveEntryIndex()) {
+            return false;
+        }
+
         final int itemIndex = tile.getItemIndex(x, y);
         if (itemIndex != -1 && mOnDragDropListener != null) {
             final PhoneFavoriteTileView tileView =
@@ -358,14 +343,12 @@
                 mDragShadowTop = tileView.getTop() + tileView.getParentRow().getTop();
             }
 
-            mDragShadowWidth = tileView.getWidth();
-            mDragShadowHeight = tileView.getHeight();
-
             mDragShadowOverlay.setImageBitmap(mDragShadowBitmap);
             mDragShadowOverlay.setVisibility(VISIBLE);
             mDragShadowOverlay.setAlpha(DRAG_SHADOW_ALPHA);
 
-            mDragShadowOverlay.setLayoutParams(getDragShadowLayoutParams());
+            mDragShadowOverlay.setX(mDragShadowLeft);
+            mDragShadowOverlay.setY(mDragShadowTop);
 
             // x and y passed in are the coordinates of where the user has touched down, calculate
             // the offset to the top left coordinate of the dragged child.  This will be used for
@@ -383,21 +366,21 @@
     }
 
     private void handleDragHovered(int x, int y) {
+        // Update the drag shadow location.
+        mDragShadowLeft = x - mTouchOffsetToChildLeft;
+        mDragShadowTop = y - mTouchOffsetToChildTop;
+        // Draw the drag shadow at its last known location if the drag shadow exists.
+        if (mDragShadowOverlay != null) {
+            mDragShadowOverlay.setX(mDragShadowLeft);
+            mDragShadowOverlay.setY(mDragShadowTop);
+        }
+
         final View child = getViewAtPosition(x, y);
         if (!(child instanceof ContactTileRow)) {
             // Bail early.
             return;
         }
 
-        // Update the drag shadow location.
-        mDragShadowLeft = x - mTouchOffsetToChildLeft;
-        mDragShadowTop = y - mTouchOffsetToChildTop;
-
-        // Draw the drag shadow at its last known location if the drag shadow exists.
-        if (mDragShadowOverlay != null) {
-            mDragShadowOverlay.setLayoutParams(getDragShadowLayoutParams());
-        }
-
         final ContactTileRow tile = (ContactTileRow) child;
         final int itemIndex = tile.getItemIndex(x, y);
         if (itemIndex != -1 && mOnDragDropListener != null) {
diff --git a/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java b/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java
index cf2aeee..daba39e 100644
--- a/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java
@@ -49,11 +49,14 @@
 
     private static final String TAG = PhoneFavoriteMergedAdapter.class.getSimpleName();
 
+    private static final int TILE_INTERACTION_TEASER_VIEW_POSITION = 2;
+    private static final int TILE_INTERACTION_TEASER_VIEW_ID = -2;
     private static final int ALL_CONTACTS_BUTTON_ITEM_ID = -1;
     private final PhoneFavoritesTileAdapter mContactTileAdapter;
     private final CallLogAdapter mCallLogAdapter;
     private final View mShowAllContactsButton;
     private final PhoneFavoriteFragment mFragment;
+    private final TileInteractionTeaserView mTileInteractionTeaserView;
 
     private final int mCallLogPadding;
 
@@ -71,7 +74,7 @@
             mCallLogQueryHandler.markNewVoicemailsAsOld();
             CallLogNotificationsHelper.removeMissedCallNotifications();
             CallLogNotificationsHelper.updateVoicemailNotifications(mContext);
-            mFragment.dismissShortcut();
+            mFragment.dismissShortcut(((View) view.getParent()).getHeight());
         }
 
         @Override
@@ -100,7 +103,8 @@
             PhoneFavoriteFragment fragment,
             PhoneFavoritesTileAdapter contactTileAdapter,
             CallLogAdapter callLogAdapter,
-            View showAllContactsButton) {
+            View showAllContactsButton,
+            TileInteractionTeaserView tileInteractionTeaserView) {
         final Resources resources = context.getResources();
         mContext = context;
         mFragment = fragment;
@@ -111,19 +115,19 @@
         mCallLogAdapter.registerDataSetObserver(mObserver);
         mContactTileAdapter.registerDataSetObserver(mObserver);
         mShowAllContactsButton = showAllContactsButton;
+        mTileInteractionTeaserView = tileInteractionTeaserView;
         mCallLogQueryHandler = new CallLogQueryHandler(mContext.getContentResolver(),
                 mCallLogQueryHandlerListener);
     }
 
     @Override
-    public boolean isEmpty() {
-        // This adapter will always contain at least the all contacts button
-        return false;
-    }
-
-    @Override
     public int getCount() {
-        return mContactTileAdapter.getCount() + mCallLogAdapter.getCount() + 1;
+        if (mContactTileAdapter.getCount() > 0) {
+            return mContactTileAdapter.getCount() + mCallLogAdapter.getCount() + 1 +
+                    getTeaserViewCount();
+        } else {
+            return mCallLogAdapter.getCount();
+        }
     }
 
     @Override
@@ -134,9 +138,10 @@
             if (position < callLogAdapterCount) {
                 return mCallLogAdapter.getItem(position);
             }
-            // Set position to the position of the actual favorite contact in the favorites adapter
-            position = getAdjustedFavoritePosition(position, callLogAdapterCount);
         }
+        // Set position to the position of the actual favorite contact in the favorites adapter
+        position = getAdjustedFavoritePosition(position, callLogAdapterCount);
+
         return mContactTileAdapter.getItem(position);
     }
 
@@ -146,7 +151,8 @@
      *
      * These are the ranges of IDs reserved for each item type.
      *
-     * -(N + 1) to -2: CallLogAdapterItems, where N is equal to the number of call log items
+     * -(N + 1) to -3: CallLogAdapterItems, where N is equal to the number of call log items
+     * -2: Teaser
      * -1: All contacts button
      * 0 to (N -1): Rows of tiled contacts, where N is equal to the max rows of tiled contacts
      * N to infinity: Rows of regular contacts. Their item id is calculated by N + contact_id,
@@ -157,9 +163,14 @@
         final int callLogAdapterCount = mCallLogAdapter.getCount();
         if (position < callLogAdapterCount) {
             // Call log items are not animated, so reusing their position for IDs is fine.
-            return ALL_CONTACTS_BUTTON_ITEM_ID - 1 - position;
-        } else if (position < (callLogAdapterCount + mContactTileAdapter.getCount())) {
-            return mContactTileAdapter.getItemId(position - callLogAdapterCount);
+            return ALL_CONTACTS_BUTTON_ITEM_ID - 2 - position;
+        } else if (position == TILE_INTERACTION_TEASER_VIEW_POSITION + callLogAdapterCount &&
+                mTileInteractionTeaserView.getShouldDisplayInList()){
+            return TILE_INTERACTION_TEASER_VIEW_ID;
+        } else if (position < (callLogAdapterCount + mContactTileAdapter.getCount() +
+                getTeaserViewCount())) {
+            return mContactTileAdapter.getItemId(
+                    getAdjustedFavoritePosition(position, callLogAdapterCount));
         } else {
             // All contacts button
             return ALL_CONTACTS_BUTTON_ITEM_ID;
@@ -173,7 +184,10 @@
 
     @Override
     public int getViewTypeCount() {
-        return (mContactTileAdapter.getViewTypeCount() + mCallLogAdapter.getViewTypeCount() + 1);
+        return (mContactTileAdapter.getViewTypeCount() +            /* Favorite and frequent */
+                mCallLogAdapter.getViewTypeCount() +                /* Recent call log */
+                getTeaserViewCount() +                              /* Teaser */
+                1);                                                 /* Show all contacts button. */
     }
 
     @Override
@@ -184,6 +198,10 @@
             // View type of the call log adapter is the last view type of the contact tile adapter
             // + 1
             return mContactTileAdapter.getViewTypeCount();
+        } else if (position == TILE_INTERACTION_TEASER_VIEW_POSITION + callLogAdapterCount &&
+                mTileInteractionTeaserView.getShouldDisplayInList()) {
+            // View type of the teaser row is the last view type of the contact tile adapter + 3
+            return mContactTileAdapter.getViewTypeCount() + 2;
         } else if (position < getCount() - 1) {
             return mContactTileAdapter.getItemViewType(
                     getAdjustedFavoritePosition(position, callLogAdapterCount));
@@ -198,10 +216,16 @@
     public View getView(int position, View convertView, ViewGroup parent) {
         final int callLogAdapterCount = mCallLogAdapter.getCount();
 
-        if (position == getCount() - 1) {
+        if ((position == getCount() - 1) && (mContactTileAdapter.getCount() > 0)) {
             return mShowAllContactsButton;
         }
 
+        if (mTileInteractionTeaserView.getShouldDisplayInList())  {
+            if (position == TILE_INTERACTION_TEASER_VIEW_POSITION + callLogAdapterCount) {
+                return mTileInteractionTeaserView;
+            }
+        }
+
         if (callLogAdapterCount > 0) {
             if (position == 0) {
                 final SwipeableCallLogRow wrapper;
@@ -219,14 +243,19 @@
                 final View view = mCallLogAdapter.getView(position, convertView == null ?
                         null : wrapper.getChildAt(0), parent);
                 wrapper.removeAllViews();
+                final View callLogItem = view.findViewById(R.id.call_log_list_item);
+                // Reset the internal call log item view if it is being recycled
+                callLogItem.setTranslationX(0);
+                callLogItem.setAlpha(1);
                 wrapper.addView(view);
                 return wrapper;
             }
-            // Set position to the position of the actual favorite contact in the
-            // favorites adapter
-            position = getAdjustedFavoritePosition(position, callLogAdapterCount);
         }
 
+        // Set position to the position of the actual favorite contact in the
+        // favorites adapter
+        position = getAdjustedFavoritePosition(position, callLogAdapterCount);
+
         // Favorites section
         final View view = mContactTileAdapter.getView(position, convertView, parent);
         if (position >= mContactTileAdapter.getMaxTiledRows()) {
@@ -257,7 +286,17 @@
     }
 
     private int getAdjustedFavoritePosition(int position, int callLogAdapterCount) {
-        return position - callLogAdapterCount;
+        if (position - callLogAdapterCount > TILE_INTERACTION_TEASER_VIEW_POSITION &&
+                mTileInteractionTeaserView.getShouldDisplayInList()) {
+            return position - callLogAdapterCount - 1;
+        } else {
+            return position - callLogAdapterCount;
+        }
+    }
+
+    private int getTeaserViewCount() {
+        return (mContactTileAdapter.getCount() > TILE_INTERACTION_TEASER_VIEW_POSITION &&
+                mTileInteractionTeaserView.getShouldDisplayInList() ? 1 : 0);
     }
 
     /**
@@ -321,7 +360,6 @@
             if (v != null && mOnItemSwipeListener != null) {
                 mOnItemSwipeListener.onSwipe(v);
             }
-            removeAllViews();
         }
 
         @Override
diff --git a/src/com/android/dialer/list/PhoneFavoriteRegularRowView.java b/src/com/android/dialer/list/PhoneFavoriteRegularRowView.java
index b4ad784..91b09d7 100644
--- a/src/com/android/dialer/list/PhoneFavoriteRegularRowView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteRegularRowView.java
@@ -18,15 +18,11 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.util.AttributeSet;
-import android.view.GestureDetector;
 import android.view.View;
 
 import com.android.contacts.common.util.ViewUtil;
 import com.android.dialer.R;
 
-import com.android.dialer.list.PhoneFavoritesTileAdapter.ContactTileRow;
-
-
 public class PhoneFavoriteRegularRowView extends PhoneFavoriteTileView {
     private static final String TAG = PhoneFavoriteRegularRowView.class.getSimpleName();
     private static final boolean DEBUG = false;
diff --git a/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java b/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java
index e2548a3..85e7216 100644
--- a/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java
@@ -24,6 +24,7 @@
 import android.widget.ImageButton;
 
 import com.android.contacts.common.R;
+import com.android.contacts.common.list.ContactEntry;
 
 import java.util.regex.Pattern;
 
@@ -48,12 +49,6 @@
         super.onFinishInflate();
 
         mSecondaryButton = (ImageButton) findViewById(R.id.contact_tile_secondary_button);
-        mSecondaryButton.setOnClickListener(new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                launchQuickContact();
-            }
-        });
     }
 
     @Override
@@ -74,4 +69,29 @@
         if (tokens.length < 1) return name;
         return tokens[0];
     }
+
+    @Override
+    public void loadFromContact(ContactEntry entry) {
+        super.loadFromContact(entry);
+        if (entry != null) {
+            final boolean contactIsFavorite = entry.isFavorite;
+            mSecondaryButton.setVisibility(contactIsFavorite ? GONE : VISIBLE);
+
+            if (contactIsFavorite) {
+                mStarView.setOnClickListener(new OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        launchQuickContact();
+                    }
+                });
+            } else {
+                mSecondaryButton.setOnClickListener(new OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        launchQuickContact();
+                    }
+                });
+            }
+        }
+    }
 }
diff --git a/src/com/android/dialer/list/PhoneFavoriteTileView.java b/src/com/android/dialer/list/PhoneFavoriteTileView.java
index 57d258f..371c805 100644
--- a/src/com/android/dialer/list/PhoneFavoriteTileView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteTileView.java
@@ -20,6 +20,7 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
+import android.content.ClipData;
 import android.content.Context;
 import android.text.TextUtils;
 import android.util.AttributeSet;
@@ -27,6 +28,7 @@
 import android.view.GestureDetector;
 import android.view.MotionEvent;
 import android.view.View;
+import android.widget.ImageView;
 
 import com.android.contacts.common.MoreContactUtils;
 import com.android.contacts.common.list.ContactEntry;
@@ -58,6 +60,8 @@
     private View mUndoRemovalButton;
     /** The view that holds the list view row. */
     protected ContactTileRow mParentRow;
+    /** The view that indicates whether the contact is a favorate. */
+    protected ImageView mStarView;
 
     /** Users' most frequent phone number. */
     private String mPhoneNumberString;
@@ -65,6 +69,10 @@
     /** Custom gesture detector.*/
     protected GestureDetector mGestureDetector;
 
+    // Dummy clip data object that is attached to drag shadows so that text views
+    // don't crash with an NPE if the drag shadow is released in their bounds
+    private static final ClipData EMPTY_CLIP_DATA = ClipData.newPlainText("", "");
+
     public PhoneFavoriteTileView(Context context, AttributeSet attrs) {
         super(context, attrs);
         mAnimationDuration = context.getResources().getInteger(R.integer.fade_duration);
@@ -81,6 +89,7 @@
         mRemovalDialogue = findViewById(com.android.dialer.R.id.favorite_remove_dialogue);
         mUndoRemovalButton = findViewById(com.android.dialer.R.id
                 .favorite_remove_undo_button);
+        mStarView = (ImageView) findViewById(com.android.dialer.R.id.contact_favorite_star);
 
         mUndoRemovalButton.setOnClickListener(new OnClickListener() {
             @Override
@@ -92,19 +101,18 @@
         setOnLongClickListener(new OnLongClickListener() {
             @Override
             public boolean onLongClick(View v) {
-                setPressed(false);
                 final PhoneFavoriteTileView view = (PhoneFavoriteTileView) v;
                 // NOTE The drag shadow is handled in the ListView.
                 if (view instanceof PhoneFavoriteRegularRowView) {
-                    final ContactTileRow parent = (ContactTileRow) view.getParentRow();
+                    final ContactTileRow parent = view.getParentRow();
                     // If the view is regular row, start drag the row view.
                     // Drag is not available for the item exceeds the PIN_LIMIT.
                     if (parent.getRegularRowItemIndex() < PhoneFavoritesTileAdapter.PIN_LIMIT) {
-                        parent.startDrag(null, new View.DragShadowBuilder(), null, 0);
+                        parent.startDrag(EMPTY_CLIP_DATA, new View.DragShadowBuilder(), null, 0);
                     }
                 } else {
                     // If the view is a tile view, start drag the tile.
-                    view.startDrag(null, new View.DragShadowBuilder(), null, 0);
+                    view.startDrag(EMPTY_CLIP_DATA, new View.DragShadowBuilder(), null, 0);
                 }
                 return true;
             }
@@ -118,6 +126,8 @@
         if (entry != null) {
             // Grab the phone-number to call directly... see {@link onClick()}
             mPhoneNumberString = entry.phoneNumber;
+
+            mStarView.setVisibility(entry.isFavorite ? VISIBLE : GONE);
             // If this is a blank entry, don't show anything.
             // TODO krelease:Just hide the view for now. For this to truly look like an empty row
             // the entire ContactTileRow needs to be hidden.
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
index 2e18118..e28fd73 100644
--- a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
@@ -73,8 +73,6 @@
     private Context mContext;
     private Resources mResources;
 
-    private View mEmptyView;
-
     /** Contact data stored in cache. This is used to populate the associated view. */
     protected ArrayList<ContactEntry> mContactEntries = null;
     /** Back up of the temporarily removed Contact during dragging. */
@@ -106,16 +104,12 @@
     protected int mPresenceIndex;
     protected int mStatusIndex;
 
-    /**
-     * Only valid when {@link DisplayType#STREQUENT_PHONE_ONLY} is true
-     *
-     * TODO krelease: Remove entirely if not needed
-     */
     private int mPhoneNumberIndex;
     private int mPhoneNumberTypeIndex;
     private int mPhoneNumberLabelIndex;
+    private int mIsDefaultNumberIndex;
     protected int mPinnedIndex;
-    protected int mContactIdForFrequentIndex;
+    protected int mContactIdIndex;
 
     private final int mPaddingInPixels;
 
@@ -208,8 +202,9 @@
         mPhoneNumberIndex = ContactTileLoaderFactory.PHONE_NUMBER;
         mPhoneNumberTypeIndex = ContactTileLoaderFactory.PHONE_NUMBER_TYPE;
         mPhoneNumberLabelIndex = ContactTileLoaderFactory.PHONE_NUMBER_LABEL;
+        mIsDefaultNumberIndex = ContactTileLoaderFactory.IS_DEFAULT_NUMBER;
         mPinnedIndex = ContactTileLoaderFactory.PINNED;
-        mContactIdForFrequentIndex = ContactTileLoaderFactory.CONTACT_ID_FOR_FREQUENT;
+        mContactIdIndex = ContactTileLoaderFactory.CONTACT_ID_FOR_DATA;
     }
 
     /**
@@ -261,11 +256,6 @@
 
         final LongSparseArray<Object> duplicates = new LongSparseArray<Object>(cursor.getCount());
 
-        // Dummy object that we're inserting into the sparse array as a value so that we can use
-        // the sparse array as a set to check for duplicates
-
-        final Object dummy = new Object();
-
         // Track the length of {@link #mContactEntries} and compare to {@link #TILES_SOFT_LIMIT}.
         int counter = 0;
 
@@ -274,19 +264,22 @@
             final int starred = cursor.getInt(mStarredIndex);
             final long id;
 
-            if (starred > 0) {
-                id = cursor.getLong(mIdIndex);
-            } else if (counter >= TILES_SOFT_LIMIT) {
+            // We display a maximum of TILES_SOFT_LIMIT contacts, or the total number of starred
+            // whichever is greater.
+            if (starred < 1 && counter >= TILES_SOFT_LIMIT) {
                 break;
             } else {
-                // The contact id for frequent contacts is stored in the .contact_id field rather
-                // than the _id field
-                id = cursor.getLong(mContactIdForFrequentIndex);
+                id = cursor.getLong(mContactIdIndex);
             }
 
-            if (duplicates.get(id) == null) {
-                duplicates.put(id, dummy);
-            } else {
+            final ContactEntry existing = (ContactEntry) duplicates.get(id);
+            if (existing != null) {
+                // Check if the existing number is a default number. If not, clear the phone number
+                // and label fields so that the disambiguation dialog will show up.
+                if (!existing.isDefaultNumber) {
+                    existing.phoneLabel = null;
+                    existing.phoneNumber = null;
+                }
                 continue;
             }
 
@@ -294,6 +287,8 @@
             final String lookupKey = cursor.getString(mLookupIndex);
             final int pinned = cursor.getInt(mPinnedIndex);
             final String name = cursor.getString(mNameIndex);
+            final boolean isStarred = cursor.getInt(mStarredIndex) > 0;
+            final boolean isDefaultNumber = cursor.getInt(mIsDefaultNumberIndex) > 0;
 
             final ContactEntry contact = new ContactEntry();
 
@@ -303,26 +298,21 @@
             contact.photoUri = (photoUri != null ? Uri.parse(photoUri) : null);
             contact.lookupKey = ContentUris.withAppendedId(
                     Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey), id);
+            contact.isFavorite = isStarred;
+            contact.isDefaultNumber = isDefaultNumber;
 
-
-            // TODO krelease: These columns are temporarily unused for now so that
-            // the contact tiles will be treated like favorites since they don't have a phone
-            // number. Depending on how the final UX goes we will either remove or enable
-            // them again.
-
-            /*
-                // Set phone number, label and status
-                final int phoneNumberType = cursor.getInt(mPhoneNumberTypeIndex);
-                final String phoneNumberCustomLabel = cursor.getString(mPhoneNumberLabelIndex);
-                contact.phoneLabel = (String) Phone.getTypeLabel(mResources, phoneNumberType,
-                        phoneNumberCustomLabel);
-                contact.phoneNumber = cursor.getString(mPhoneNumberIndex);
-                contact.status = cursor.getString(mStatusIndex);
-            */
+            // Set phone number and label
+            final int phoneNumberType = cursor.getInt(mPhoneNumberTypeIndex);
+            final String phoneNumberCustomLabel = cursor.getString(mPhoneNumberLabelIndex);
+            contact.phoneLabel = (String) Phone.getTypeLabel(mResources, phoneNumberType,
+                    phoneNumberCustomLabel);
+            contact.phoneNumber = cursor.getString(mPhoneNumberIndex);
 
             contact.pinned = pinned;
             mContactEntries.add(contact);
 
+            duplicates.put(id, contact);
+
             counter++;
         }
 
@@ -370,15 +360,10 @@
         return mNumFrequents;
     }
 
-    private boolean isEmptyView(int position) {
-        return position == 0 && (mContactEntries == null || mContactEntries.isEmpty());
-    }
-
     @Override
     public int getCount() {
         if (mContactEntries == null || mContactEntries.isEmpty()) {
-            // empty view
-            return 1;
+            return 0;
         }
 
         int total = mContactEntries.size();
@@ -407,7 +392,7 @@
         return mColumnCount * mMaxTiledRows;
     }
 
-    protected int getRowIndex(int entryIndex) {
+    public int getRowIndex(int entryIndex) {
         if (entryIndex < mMaxTiledRows * mColumnCount) {
             return entryIndex / mColumnCount;
         } else {
@@ -460,7 +445,7 @@
             // Contacts that appear as rows
             // The actual position of the contact in the cursor is simply total the number of
             // tiled contacts + the given position
-            return maxContactsInTiles + position - 1;
+            return maxContactsInTiles + position - mMaxTiledRows;
         }
     }
 
@@ -501,7 +486,7 @@
 
     @Override
     public boolean isEnabled(int position) {
-        return !isEmptyView(position);
+        return getCount() > 0;
     }
 
     @Override
@@ -520,11 +505,11 @@
 
         int itemViewType = getItemViewType(position);
 
-        if (itemViewType == ViewTypes.EMPTY) {
-            return mEmptyView;
-        }
+        ContactTileRow contactTileRowView = null;
 
-        ContactTileRow contactTileRowView  = (ContactTileRow) convertView;
+        if (convertView instanceof  ContactTileRow) {
+            contactTileRowView  = (ContactTileRow) convertView;
+        }
 
         ArrayList<ContactEntry> contactList = getItem(position);
 
@@ -555,7 +540,6 @@
 
     @Override
     public int getItemViewType(int position) {
-        if (isEmptyView(position)) return ViewTypes.EMPTY;
         if (position < getRowCount(getMaxContactsInTiles())) {
             return ViewTypes.TOP;
         } else {
@@ -593,11 +577,14 @@
      */
     private void markDropArea(int itemIndex) {
         if (isIndexInBound(mDragEnteredEntryIndex) && isIndexInBound(itemIndex)) {
+            mDataSetChangedListener.cacheOffsetsForDatasetChange();
             // Remove the old placeholder item and place the new placeholder item.
+            final int oldIndex = mDragEnteredEntryIndex;
             mContactEntries.remove(mDragEnteredEntryIndex);
             mDragEnteredEntryIndex = itemIndex;
             mContactEntries.add(mDragEnteredEntryIndex, ContactEntry.BLANK_ENTRY);
             ContactEntry.BLANK_ENTRY.id = mDraggedEntry.id;
+            mDataSetChangedListener.onDataSetChangedForAnimation();
             notifyDataSetChanged();
         }
     }
@@ -630,8 +617,7 @@
             if (changed && mDropEntryIndex < PIN_LIMIT) {
                 final ContentValues cv = getReflowedPinnedPositions(mContactEntries, mDraggedEntry,
                         mDraggedEntryIndex, mDropEntryIndex);
-                final Uri pinUri = PinnedPositions.UPDATE_URI.buildUpon().appendQueryParameter(
-                        PinnedPositions.STAR_WHEN_PINNING, "true").build();
+                final Uri pinUri = PinnedPositions.UPDATE_URI.buildUpon().build();
                 // update the database here with the new pinned positions
                 mContext.getContentResolver().update(pinUri, cv, null, null);
             }
@@ -685,6 +671,10 @@
         mPotentialRemoveEntryIndex = -1;
     }
 
+    public boolean hasPotentialRemoveEntryIndex() {
+        return isIndexInBound(mPotentialRemoveEntryIndex);
+    }
+
     /**
      * Clears all temporary variables at a new interaction.
      */
@@ -786,7 +776,6 @@
                     setVisibility(View.VISIBLE);
                 }
             }
-            setPressed(false);
         }
 
         private void addTileFromEntry(ContactEntry entry, int childIndex, boolean isLastRow) {
@@ -821,7 +810,7 @@
                     contactTile.setPaddingRelative(0, 0,
                             childIndex >= mColumnCount - 1 ? 0 : mPaddingInPixels, 0);
                     entryIndex = getFirstContactEntryIndexForPosition(mPosition) + childIndex;
-                    SwipeHelper.setSwipeable(contactTile, true);
+                    SwipeHelper.setSwipeable(contactTile, false);
                     break;
                 case ViewTypes.FREQUENT:
                     contactTile.setHorizontalDividerVisibility(
@@ -861,7 +850,8 @@
 
                 // Note MeasuredWidth includes the padding.
                 final int childWidth = child.getMeasuredWidth();
-                child.layout(childLeft, 0, childLeft + childWidth, child.getMeasuredHeight());
+                child.layout(childLeft, getPaddingTop(), childLeft + childWidth,
+                        getPaddingTop() + child.getMeasuredHeight());
                 childLeft += childWidth;
             }
         }
@@ -1169,10 +1159,9 @@
     }
 
     protected static class ViewTypes {
-        public static final int COUNT = 3;
         public static final int FREQUENT = 0;
         public static final int TOP = 1;
-        public static final int EMPTY = 2;
+        public static final int COUNT = 2;
     }
 
     @Override
@@ -1221,8 +1210,4 @@
         setInDragging(false);
         handleDrop();
     }
-
-    public void setEmptyView(View emptyView) {
-        mEmptyView = emptyView;
-    }
 }
diff --git a/src/com/android/dialer/list/RegularSearchFragment.java b/src/com/android/dialer/list/RegularSearchFragment.java
index 2a80b3e..9f4e6be 100644
--- a/src/com/android/dialer/list/RegularSearchFragment.java
+++ b/src/com/android/dialer/list/RegularSearchFragment.java
@@ -15,7 +15,11 @@
  */
 package com.android.dialer.list;
 
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
 import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.PinnedHeaderListView;
 import com.android.dialerbind.ObjectFactory;
 import com.android.dialer.service.CachedNumberLookupService;
 
@@ -36,6 +40,11 @@
     }
 
     @Override
+    protected void onCreateView(LayoutInflater inflater, ViewGroup container) {
+        super.onCreateView(inflater, container);
+        ((PinnedHeaderListView) getListView()).setScrollToSectionOnHeaderTouch(true);
+    }
+
     protected ContactEntryListAdapter createListAdapter() {
         RegularSearchListAdapter adapter = new RegularSearchListAdapter(getActivity());
         adapter.setDisplayPhotos(true);
@@ -49,7 +58,7 @@
             final RegularSearchListAdapter adapter =
                 (RegularSearchListAdapter) getAdapter();
             mCachedNumberLookupService.addContact(getContext(),
-                    adapter.getContactInfo(position));
+                    adapter.getContactInfo(mCachedNumberLookupService, position));
         }
     }
 }
diff --git a/src/com/android/dialer/list/RegularSearchListAdapter.java b/src/com/android/dialer/list/RegularSearchListAdapter.java
index 5877912..d0617b7 100644
--- a/src/com/android/dialer/list/RegularSearchListAdapter.java
+++ b/src/com/android/dialer/list/RegularSearchListAdapter.java
@@ -23,6 +23,8 @@
 
 import com.android.contacts.common.list.DirectoryPartition;
 import com.android.contacts.common.list.PhoneNumberListAdapter;
+import com.android.dialer.calllog.ContactInfo;
+import com.android.dialer.service.CachedNumberLookupService;
 import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
 
 /**
@@ -34,8 +36,10 @@
         super(context);
     }
 
-    public CachedContactInfo getContactInfo(int position) {
-        CachedContactInfo info = new CachedContactInfo();
+    public CachedContactInfo getContactInfo(
+            CachedNumberLookupService lookupService, int position) {
+        ContactInfo info = new ContactInfo();
+        CachedContactInfo cacheInfo = lookupService.buildCachedContactInfo(info);
         final Cursor item = (Cursor) getItem(position);
         if (item != null) {
             info.name = item.getString(PhoneQuery.DISPLAY_NAME);
@@ -44,19 +48,21 @@
             info.number = item.getString(PhoneQuery.PHONE_NUMBER);
             final String photoUriStr = item.getString(PhoneQuery.PHOTO_URI);
             info.photoUri = photoUriStr == null ? null : Uri.parse(photoUriStr);
-            info.lookupKey = item.getString(PhoneQuery.LOOKUP_KEY);
+
+            cacheInfo.setLookupKey(item.getString(PhoneQuery.LOOKUP_KEY));
 
             final int partitionIndex = getPartitionForPosition(position);
             final DirectoryPartition partition =
                 (DirectoryPartition) getPartition(partitionIndex);
             final long directoryId = partition.getDirectoryId();
-            info.sourceName = partition.getLabel();
-            info.sourceType = isExtendedDirectory(directoryId) ?
-                CachedContactInfo.SOURCE_TYPE_EXTENDED :
-                CachedContactInfo.SOURCE_TYPE_DIRECTORY;
-            info.sourceId = (int) directoryId;
+            final String sourceName = partition.getLabel();
+            if (isExtendedDirectory(directoryId)) {
+                cacheInfo.setExtendedSource(sourceName, directoryId);
+            } else {
+                cacheInfo.setDirectorySource(sourceName, directoryId);
+            }
         }
-        return info;
+        return cacheInfo;
     }
 
     @Override
@@ -67,7 +73,6 @@
         // a dialable number, then clicking add to contact should add it as a number.
         // Otherwise, it should add it to a new contact as a name.
         setShortcutEnabled(SHORTCUT_ADD_NUMBER_TO_CONTACTS, showNumberShortcuts);
-        setShortcutEnabled(SHORTCUT_ADD_NEW_NAMED_CONTACT, !showNumberShortcuts);
         super.setQueryString(queryString);
     }
 }
diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java
index 0302d97..006729b 100644
--- a/src/com/android/dialer/list/SearchFragment.java
+++ b/src/com/android/dialer/list/SearchFragment.java
@@ -106,10 +106,6 @@
             final String number = adapter.getFormattedQueryString();
             final Intent intent = DialtactsActivity.getAddNumberToContactIntent(number);
             startActivityWithErrorToast(intent);
-        } else if (shortcutType == DialerPhoneNumberListAdapter.SHORTCUT_ADD_NEW_NAMED_CONTACT) {
-            final String name = adapter.getQueryString();
-            final Intent intent = DialtactsActivity.getInsertContactWithNameIntent(name);
-            startActivityWithErrorToast(intent);
         }
     }
 
diff --git a/src/com/android/dialer/list/SmartDialSearchFragment.java b/src/com/android/dialer/list/SmartDialSearchFragment.java
index 4248c85..0efe918 100644
--- a/src/com/android/dialer/list/SmartDialSearchFragment.java
+++ b/src/com/android/dialer/list/SmartDialSearchFragment.java
@@ -41,8 +41,6 @@
         // Disable the direct call shortcut for the smart dial fragment, since the call button
         // will already be showing anyway.
         adapter.setShortcutEnabled(SmartDialNumberListAdapter.SHORTCUT_DIRECT_CALL, false);
-        adapter.setShortcutEnabled(SmartDialNumberListAdapter.SHORTCUT_ADD_NEW_NAMED_CONTACT,
-                false);
         return adapter;
     }
 
diff --git a/src/com/android/dialer/list/SwipeHelper.java b/src/com/android/dialer/list/SwipeHelper.java
index ce46ec3..03300df4 100644
--- a/src/com/android/dialer/list/SwipeHelper.java
+++ b/src/com/android/dialer/list/SwipeHelper.java
@@ -337,24 +337,12 @@
                 invalidateGlobalRegion(animView);
             }
         });
-        anim.addListener(new Animator.AnimatorListener() {
-            @Override
-            public void onAnimationStart(Animator animation) {
-            }
-
+        anim.addListener(new AnimatorListenerAdapter() {
             @Override
             public void onAnimationEnd(Animator animation) {
                 animView.setAlpha(mStartAlpha);
                 mCallback.onDragCancelled(mCurrView);
             }
-
-            @Override
-            public void onAnimationCancel(Animator animation) {
-            }
-
-            @Override
-            public void onAnimationRepeat(Animator animation) {
-            }
         });
         anim.start();
     }
diff --git a/src/com/android/dialer/list/TileInteractionTeaserView.java b/src/com/android/dialer/list/TileInteractionTeaserView.java
new file mode 100644
index 0000000..6e70fd1
--- /dev/null
+++ b/src/com/android/dialer/list/TileInteractionTeaserView.java
@@ -0,0 +1,153 @@
+package com.android.dialer.list;
+
+import android.animation.Animator;
+
+import android.animation.ValueAnimator;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.res.Resources;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.view.animation.DecelerateInterpolator;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.R;
+
+/**
+ * A teaser to introduce people to the contact photo check boxes
+ */
+public class TileInteractionTeaserView extends FrameLayout {
+    private static int sShrinkAnimationDuration;
+
+    private static final String KEY_TILE_INTERACTION_TEASER_SHOWN =
+            "key_tile_interaction_teaser_shown";
+
+    private boolean mNeedLayout;
+    private int mTextTop;
+    private int mAnimatedHeight = -1;
+
+    private PhoneFavoriteMergedAdapter mAdapter;
+
+    public TileInteractionTeaserView(final Context context) {
+        this(context, null);
+    }
+
+    public TileInteractionTeaserView(final Context context, final AttributeSet attrs) {
+        super(context, attrs);
+        final Resources resources = context.getResources();
+
+        mNeedLayout = true;
+        sShrinkAnimationDuration = resources.getInteger(R.integer.escape_animation_duration);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        findViewById(R.id.dismiss_button).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                startDestroyAnimation();
+            }
+        });
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+        super.onLayout(changed, left, top, right, bottom);
+
+        final TextView text = (TextView) findViewById(R.id.text);
+        final ImageView arrow = (ImageView) findViewById(R.id.arrow);
+
+        // We post to avoid calling layout within layout
+        arrow.post(new Runnable() {
+            @Override
+            public void run() {
+
+                // The text top is changed when we move the arrow, so we need to
+                // do multiple passes
+                int textTop = text.getTop();
+                if (mNeedLayout || textTop != mTextTop) {
+                    mNeedLayout = false;
+                    mTextTop = textTop;
+
+                    final int lineHeight = text.getLineHeight();
+                    final LinearLayout.LayoutParams arrowParams = (LinearLayout.LayoutParams) arrow
+                            .getLayoutParams();
+                    arrowParams.topMargin = mTextTop + lineHeight / 2;
+                    arrow.setLayoutParams(arrowParams);
+                }
+                arrow.setVisibility(View.VISIBLE);
+            }
+        });
+    }
+
+    public boolean getShouldDisplayInList() {
+        final SharedPreferences prefs = getContext().getSharedPreferences(
+                DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
+        return prefs.getBoolean(KEY_TILE_INTERACTION_TEASER_SHOWN, true);
+    }
+
+    public void setAdapter(PhoneFavoriteMergedAdapter adapter) {
+        mAdapter = adapter;
+    }
+
+    private void startDestroyAnimation() {
+        final int start = getHeight();
+        final int end = 0;
+        mAnimatedHeight = start;
+        Log.v("Interaction", "Start from" + start);
+
+        ValueAnimator heightAnimator = ValueAnimator.ofInt(start, end);
+        heightAnimator.setDuration(sShrinkAnimationDuration);
+        heightAnimator.setInterpolator(new DecelerateInterpolator(2.0f));
+        heightAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+            public void onAnimationUpdate(ValueAnimator animation) {
+                mAnimatedHeight = (Integer) animation.getAnimatedValue();
+                requestLayout();
+            }
+        });
+        heightAnimator.addListener(new Animator.AnimatorListener() {
+            @Override
+            public void onAnimationStart(Animator animator) {
+            }
+
+            @Override
+            public void onAnimationEnd(Animator animator) {
+                setVisibility(GONE);
+                setDismissed();
+                if (mAdapter != null) {
+                    mAdapter.notifyDataSetChanged();
+                }
+            }
+
+            @Override
+            public void onAnimationCancel(Animator animator) {
+            }
+
+            @Override
+            public void onAnimationRepeat(Animator animator) {
+            }
+        });
+
+        heightAnimator.start();
+    }
+
+    private void setDismissed() {
+        final SharedPreferences prefs = getContext().getSharedPreferences(
+                DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
+        prefs.edit().putBoolean(KEY_TILE_INTERACTION_TEASER_SHOWN, false).apply();
+    }
+
+    @Override
+    protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
+        if (mAnimatedHeight == -1) {
+            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        } else {
+            setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), mAnimatedHeight);
+        }
+    }
+}
diff --git a/src/com/android/dialer/service/CachedNumberLookupService.java b/src/com/android/dialer/service/CachedNumberLookupService.java
index cba158b..5745c9d 100644
--- a/src/com/android/dialer/service/CachedNumberLookupService.java
+++ b/src/com/android/dialer/service/CachedNumberLookupService.java
@@ -7,33 +7,39 @@
 
 public interface CachedNumberLookupService {
 
-    public class CachedContactInfo extends ContactInfo {
-        public static final int SOURCE_TYPE_DIRECTORY = 1;
-        public static final int SOURCE_TYPE_EXTENDED = 2;
-        public static final int SOURCE_TYPE_PLACES = 3;
-        public static final int SOURCE_TYPE_PROFILE = 4;
+    public interface CachedContactInfo {
+        public ContactInfo getContactInfo();
 
-        public String sourceName;
-        public int    sourceType;
-        public int    sourceId;
-        public String lookupKey;
+        public void setDirectorySource(String name, long directoryId);
+        public void setExtendedSource(String name, long directoryId);
+        public void setLookupKey(String lookupKey);
     }
 
+    public CachedContactInfo buildCachedContactInfo(ContactInfo info);
+
     /**
      * Perform a lookup using the cached number lookup service to return contact
      * information stored in the cache that corresponds to the given number.
      *
      * @param context Valid context
      * @param number Phone number to lookup the cache for
-     * @return A {@link ContactInfo} containing the contact information if the phone
+     * @return A {@link CachedContactInfo} containing the contact information if the phone
      * number is found in the cache, {@link ContactInfo#EMPTY} if the phone number was
      * not found in the cache, and null if there was an error when querying the cache.
      */
-    public ContactInfo lookupCachedContactFromNumber(Context context, String number);
+    public CachedContactInfo lookupCachedContactFromNumber(Context context, String number);
 
     public void addContact(Context context, CachedContactInfo info);
 
     public boolean isCacheUri(String uri);
 
     public boolean addPhoto(Context context, String number, byte[] photo);
+
+    /**
+     * Remove all cached phone number entries from the cache, regardless of how old they
+     * are.
+     *
+     * @param context Valid context
+     */
+    public void clearAllCacheEntries(Context context);
 }
diff --git a/src/com/android/dialerbind/ObjectFactory.java b/src/com/android/dialerbind/ObjectFactory.java
index 6286c05..c43dffc 100644
--- a/src/com/android/dialerbind/ObjectFactory.java
+++ b/src/com/android/dialerbind/ObjectFactory.java
@@ -37,6 +37,7 @@
     public static CallLogAdapter newCallLogAdapter(Context context, CallFetcher callFetcher,
             ContactInfoHelper contactInfoHelper, boolean useCallAsPrimaryAction,
             boolean isCallLog) {
-        return new CallLogAdapter(context, callFetcher, contactInfoHelper, useCallAsPrimaryAction);
+        return new CallLogAdapter(context, callFetcher, contactInfoHelper, useCallAsPrimaryAction,
+                isCallLog);
     }
 }
diff --git a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
index ce862de..12cdb2b 100644
--- a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
@@ -212,11 +212,11 @@
 
         public TestCallLogAdapter(Context context, CallFetcher callFetcher,
                 ContactInfoHelper contactInfoHelper) {
-            super(context, callFetcher, contactInfoHelper, false);
+            super(context, callFetcher, contactInfoHelper, false, false);
         }
 
         @Override
-        void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
+        protected void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
                 boolean immediate) {
             requests.add(new Request(number, countryIso, callLogInfo, immediate));
         }