merge in KFS78N (no-op)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 82734b6..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"/>
@@ -271,7 +276,8 @@
</activity>
<service android:name="com.android.incallui.CallHandlerService"
- android:process="com.android.incallui">
+ android:process="com.android.incallui"
+ android:permission="android.permission.BIND_CALL_SERVICE">
<intent-filter>
<action android:name="com.android.services.telephony.common.ICallHandlerService" />
</intent-filter>
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_dialer_fork_add_call.png b/res/drawable-hdpi/ic_dialer_fork_add_call.png
index e046996..4e0d564 100755
--- a/res/drawable-hdpi/ic_dialer_fork_add_call.png
+++ b/res/drawable-hdpi/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialer_fork_current_call.png b/res/drawable-hdpi/ic_dialer_fork_current_call.png
index 6e1a395..2cf41d5 100755
--- a/res/drawable-hdpi/ic_dialer_fork_current_call.png
+++ b/res/drawable-hdpi/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png b/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png
index 6b50da1..043685f 100755
--- a/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png
+++ b/res/drawable-hdpi/ic_dialer_fork_tt_keypad.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_menu_overflow.png b/res/drawable-hdpi/ic_menu_overflow.png
deleted file mode 100644
index a12aedf..0000000
--- a/res/drawable-hdpi/ic_menu_overflow.png
+++ /dev/null
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-ldrtl-mdpi/ic_ab_dialer_holo_light.png b/res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_light.png
deleted file mode 100644
index 1bc02cc..0000000
--- a/res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_light.png b/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_light.png
deleted file mode 100644
index 8a25e70..0000000
--- a/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_light.png
+++ /dev/null
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_dialer_fork_add_call.png b/res/drawable-mdpi/ic_dialer_fork_add_call.png
index 5a1555b..56ac2a3 100644
--- a/res/drawable-mdpi/ic_dialer_fork_add_call.png
+++ b/res/drawable-mdpi/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_dialer_fork_current_call.png b/res/drawable-mdpi/ic_dialer_fork_current_call.png
index 1be783e..16a44a0 100644
--- a/res/drawable-mdpi/ic_dialer_fork_current_call.png
+++ b/res/drawable-mdpi/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_dialer_fork_tt_keypad.png b/res/drawable-mdpi/ic_dialer_fork_tt_keypad.png
index 4e3dd82..66df69e 100644
--- a/res/drawable-mdpi/ic_dialer_fork_tt_keypad.png
+++ b/res/drawable-mdpi/ic_dialer_fork_tt_keypad.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_menu_overflow.png b/res/drawable-mdpi/ic_menu_overflow.png
deleted file mode 100644
index 4a3bde3..0000000
--- a/res/drawable-mdpi/ic_menu_overflow.png
+++ /dev/null
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_dialer_fork_add_call.png b/res/drawable-xhdpi/ic_dialer_fork_add_call.png
index 2c1f817..aff140f 100644
--- a/res/drawable-xhdpi/ic_dialer_fork_add_call.png
+++ b/res/drawable-xhdpi/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialer_fork_current_call.png b/res/drawable-xhdpi/ic_dialer_fork_current_call.png
index b1c4008..8975727 100644
--- a/res/drawable-xhdpi/ic_dialer_fork_current_call.png
+++ b/res/drawable-xhdpi/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialer_fork_tt_keypad.png b/res/drawable-xhdpi/ic_dialer_fork_tt_keypad.png
index ccd8f8a..4d48ea9 100644
--- a/res/drawable-xhdpi/ic_dialer_fork_tt_keypad.png
+++ b/res/drawable-xhdpi/ic_dialer_fork_tt_keypad.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_menu_overflow.png b/res/drawable-xhdpi/ic_menu_overflow.png
deleted file mode 100644
index 715cff8..0000000
--- a/res/drawable-xhdpi/ic_menu_overflow.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_people_info.png b/res/drawable-xhdpi/ic_people_info.png
deleted file mode 100644
index b933bbc..0000000
--- a/res/drawable-xhdpi/ic_people_info.png
+++ /dev/null
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/ab_stacked_opaque_dark_holo.9.png b/res/drawable-xxhdpi/ab_stacked_opaque_dark_holo.9.png
new file mode 100644
index 0000000..59e1bae
--- /dev/null
+++ b/res/drawable-xxhdpi/ab_stacked_opaque_dark_holo.9.png
Binary files differ
diff --git a/res/drawable-xxhdpi/dialer_recent_card_bg.9.png b/res/drawable-xxhdpi/dialer_recent_card_bg.9.png
new file mode 100644
index 0000000..6142078
--- /dev/null
+++ b/res/drawable-xxhdpi/dialer_recent_card_bg.9.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_add_person_dk.png b/res/drawable-xxhdpi/ic_add_person_dk.png
new file mode 100644
index 0000000..54ca1f0
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_add_person_dk.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_incoming_holo_dark.png b/res/drawable-xxhdpi/ic_call_incoming_holo_dark.png
new file mode 100644
index 0000000..1276917
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_call_incoming_holo_dark.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_call_missed_holo_dark.png b/res/drawable-xxhdpi/ic_call_missed_holo_dark.png
new file mode 100644
index 0000000..8919fd3
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_call_missed_holo_dark.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_call_outgoing_holo_dark.png b/res/drawable-xxhdpi/ic_call_outgoing_holo_dark.png
new file mode 100644
index 0000000..192bbf6
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_call_outgoing_holo_dark.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_call_voicemail_holo_dark.png b/res/drawable-xxhdpi/ic_call_voicemail_holo_dark.png
new file mode 100644
index 0000000..ac5b83b
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_call_voicemail_holo_dark.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_close_dk.png b/res/drawable-xxhdpi/ic_close_dk.png
new file mode 100644
index 0000000..2472da8
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_close_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_contact_info.png b/res/drawable-xxhdpi/ic_contact_info.png
new file mode 100644
index 0000000..e5d2939
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_contact_info.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_dial_action_call.png b/res/drawable-xxhdpi/ic_dial_action_call.png
new file mode 100644
index 0000000..12a5c07
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_dial_action_call.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_dial_action_delete.png b/res/drawable-xxhdpi/ic_dial_action_delete.png
new file mode 100644
index 0000000..a7ff1b1
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_dial_action_delete.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_dial_action_vm.png b/res/drawable-xxhdpi/ic_dial_action_vm.png
new file mode 100644
index 0000000..acac8d8
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_dial_action_vm.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_dialer_fork_add_call.png b/res/drawable-xxhdpi/ic_dialer_fork_add_call.png
new file mode 100644
index 0000000..1657da4
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_dialer_fork_current_call.png b/res/drawable-xxhdpi/ic_dialer_fork_current_call.png
new file mode 100644
index 0000000..f25cce6
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_dialer_fork_tt_keypad.png b/res/drawable-xxhdpi/ic_dialer_fork_tt_keypad.png
new file mode 100644
index 0000000..7ac4d8b
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_dialer_fork_tt_keypad.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_fav_undo_dk.png b/res/drawable-xxhdpi/ic_fav_undo_dk.png
new file mode 100644
index 0000000..4b7dfc4
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_fav_undo_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_all_contacts_dk.png b/res/drawable-xxhdpi/ic_menu_all_contacts_dk.png
new file mode 100644
index 0000000..ae4037e
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_menu_all_contacts_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_delete_dk.png b/res/drawable-xxhdpi/ic_menu_delete_dk.png
new file mode 100644
index 0000000..88445fc
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_menu_delete_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
new file mode 100644
index 0000000..09cc2f8
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_menu_dialpad_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_history_dk.png b/res/drawable-xxhdpi/ic_menu_history_dk.png
new file mode 100644
index 0000000..3664705
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_menu_history_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_history_lt.png b/res/drawable-xxhdpi/ic_menu_history_lt.png
new file mode 100644
index 0000000..779bc06
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_menu_history_lt.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_overflow_dk.png b/res/drawable-xxhdpi/ic_menu_overflow_dk.png
new file mode 100644
index 0000000..004f26b
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_menu_overflow_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_overflow_lt.png b/res/drawable-xxhdpi/ic_menu_overflow_lt.png
new file mode 100644
index 0000000..b9f0c3d
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_menu_overflow_lt.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_phone_dk.png b/res/drawable-xxhdpi/ic_phone_dk.png
new file mode 100644
index 0000000..de9387d
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_phone_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_play_active_holo_dark.png b/res/drawable-xxhdpi/ic_play_active_holo_dark.png
new file mode 100644
index 0000000..fc34243
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_play_active_holo_dark.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_play_holo_dark.png b/res/drawable-xxhdpi/ic_play_holo_dark.png
new file mode 100644
index 0000000..3037027
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_play_holo_dark.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_play_holo_light.png b/res/drawable-xxhdpi/ic_play_holo_light.png
new file mode 100644
index 0000000..b7b425c
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_play_holo_light.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/ic_vm_bt_dk.png b/res/drawable-xxhdpi/ic_vm_bt_dk.png
new file mode 100644
index 0000000..0cb69bd
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_bt_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_minus_dis.png b/res/drawable-xxhdpi/ic_vm_minus_dis.png
new file mode 100644
index 0000000..578d409
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_minus_dis.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_minus_dk.png b/res/drawable-xxhdpi/ic_vm_minus_dk.png
new file mode 100644
index 0000000..80bc75a
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_minus_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_pause_dis.png b/res/drawable-xxhdpi/ic_vm_pause_dis.png
new file mode 100644
index 0000000..44adfde
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_pause_dis.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_pause_dk.png b/res/drawable-xxhdpi/ic_vm_pause_dk.png
new file mode 100644
index 0000000..47fb136
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_pause_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_phone_broadcast_dk.png b/res/drawable-xxhdpi/ic_vm_phone_broadcast_dk.png
new file mode 100644
index 0000000..ee12670
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_phone_broadcast_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_play_dis.png b/res/drawable-xxhdpi/ic_vm_play_dis.png
new file mode 100644
index 0000000..9ad3d68
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_play_dis.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_play_dk.png b/res/drawable-xxhdpi/ic_vm_play_dk.png
new file mode 100644
index 0000000..c47b7e0
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_play_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_plus_dis.png b/res/drawable-xxhdpi/ic_vm_plus_dis.png
new file mode 100644
index 0000000..aad67ca
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_plus_dis.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_plus_dk.png b/res/drawable-xxhdpi/ic_vm_plus_dk.png
new file mode 100644
index 0000000..b23dfab
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_plus_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_sound_off_dis.png b/res/drawable-xxhdpi/ic_vm_sound_off_dis.png
new file mode 100644
index 0000000..bab4a43
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_sound_off_dis.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_sound_off_dk.png b/res/drawable-xxhdpi/ic_vm_sound_off_dk.png
new file mode 100644
index 0000000..1c13101
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_sound_off_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_sound_on_dis.png b/res/drawable-xxhdpi/ic_vm_sound_on_dis.png
new file mode 100644
index 0000000..ed3a173
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_sound_on_dis.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_sound_on_dk.png b/res/drawable-xxhdpi/ic_vm_sound_on_dk.png
new file mode 100644
index 0000000..c04b8d1
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_sound_on_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_voice_search.png b/res/drawable-xxhdpi/ic_voice_search.png
new file mode 100644
index 0000000..4c17d2b
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_voice_search.png
Binary files differ
diff --git a/res/drawable-xxhdpi/list_item_avatar_bg.png b/res/drawable-xxhdpi/list_item_avatar_bg.png
new file mode 100644
index 0000000..8b03a65
--- /dev/null
+++ b/res/drawable-xxhdpi/list_item_avatar_bg.png
Binary files differ
diff --git a/res/drawable-xxhdpi/list_selector_disabled_holo_dark.9.png b/res/drawable-xxhdpi/list_selector_disabled_holo_dark.9.png
new file mode 100644
index 0000000..26234b1
--- /dev/null
+++ b/res/drawable-xxhdpi/list_selector_disabled_holo_dark.9.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/drawable-xxhdpi/shadow_contact_photo.png b/res/drawable-xxhdpi/shadow_contact_photo.png
new file mode 100644
index 0000000..1c60c8d
--- /dev/null
+++ b/res/drawable-xxhdpi/shadow_contact_photo.png
Binary files differ
diff --git a/res/drawable/bottom_border_background_pressed.xml b/res/drawable/bottom_border_background_pressed.xml
new file mode 100644
index 0000000..0924914
--- /dev/null
+++ b/res/drawable/bottom_border_background_pressed.xml
@@ -0,0 +1,19 @@
+<?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.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item android:drawable="@drawable/bottom_border_background" />
+ <item android:drawable="@*android:drawable/list_selector_background_transition_holo_light" />
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/contact_list_item_background.xml b/res/drawable/contact_list_item_background.xml
new file mode 100644
index 0000000..5637f4d
--- /dev/null
+++ b/res/drawable/contact_list_item_background.xml
@@ -0,0 +1,19 @@
+<?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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_pressed="true" android:drawable="@drawable/bottom_border_background_pressed" />
+ <item android:drawable="@drawable/bottom_border_background" />
+</selector>
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 6023fc8..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,13 +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 cd92ea0..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Laai tans van SIM-kaart af…"</string>
<string name="simContacts_title" msgid="27341688347689769">"SIM-kaartkontakte"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Heraktiveer die Mense-program om hierdie kenmerk te gebruik."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Tik \'n naam of foon"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Voer \'n naam of foonnommer in"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Alles"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Gemis"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Geen onlangsgemiste oproepe nie."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Alle kontakte"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Alle kontakte"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Versteek vanaf gunstelinge"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Verwyder uit gunstelinge"</string>
<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 e92fc30..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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"ስም ወይም ስልክ ይተይቡ"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"ምንም በቅርብ ጊዜ ያመለጡ ጥሪዎች የሉም።"</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"ሁሉም እውቂያዎች"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"ሁሉም እውቂያዎች"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"ከተወዳጆች ተደብቋል"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"ከተወዳጆች ውስጥ ተወግዷል።"</string>
<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 162b329..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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"اكتب اسمًا أو رقم هاتف"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"لا توجد مكالمات فائتة حديثة."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"٩"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"جميع جهات الاتصال"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"جميع جهات الاتصال"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"إخفاء من المفضلة"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"تمت إزالة جهة الاتصال من المفضلة"</string>
<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-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 27768ce..11b5bef 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -133,7 +133,8 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM kartdan yüklənir..."</string>
<string name="simContacts_title" msgid="27341688347689769">"SIM kart kontaktları"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Bu özəlliyi istifadə etmək üçün Adamlar tətbiqinə yenidən icazə verin."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Ad və ya telefon yazın"</string>
+ <!-- no translation found for dialer_hint_find_contact (8798845521253672403) -->
+ <skip />
<string name="call_log_all_title" msgid="3566738938889333307">"Bütün"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Buraxılmış"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Buraxılmış zəng yoxdur"</string>
@@ -153,7 +154,8 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Bütün kontaktlar"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Bütün kontaktlar"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Seçilmişlərdən gizlədilib"</string>
+ <!-- no translation found for favorite_hidden (5011234945140912047) -->
+ <skip />
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Geri qaytar"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> nömrəsinə zəng edin"</string>
<string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Kontaktlara əlavə edin"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 7d6f9c4..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>
@@ -137,7 +138,7 @@
<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>
- <!-- no translation found for dialer_hint_find_contact (9190419749917566623) -->
+ <!-- no translation found for dialer_hint_find_contact (8798845521253672403) -->
<skip />
<!-- no translation found for call_log_all_title (3566738938889333307) -->
<skip />
@@ -177,7 +178,7 @@
<skip />
<!-- no translation found for show_all_contacts_button_text (8057452310403090131) -->
<skip />
- <!-- no translation found for favorite_hidden (4837366417440391323) -->
+ <!-- no translation found for favorite_hidden (5011234945140912047) -->
<skip />
<!-- no translation found for favorite_hidden_undo (2508998611039406474) -->
<skip />
@@ -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 34edc7f..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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"Въведете име или телефон"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"Няма скорошни пропуснати обаждания."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Всички контакти"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Всички контакти"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Скрито от любимите"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Премахнато от любимите"</string>
<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 0e6668b..4db372d 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -30,7 +30,7 @@
<string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Suprimeix missatge de veu"</string>
<string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Comparteix la bústia de veu"</string>
<string name="recentCalls_empty" msgid="247053222448663107">"El registre de trucades és buit."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Esborrament registre"</string>
+ <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Esborrar el registre?"</string>
<string name="clearCallLogConfirmation" msgid="5043563133171583152">"Se suprimiran tots els registres de trucades."</string>
<string name="clearCallLogProgress_title" msgid="8365943000154295771">"Esborrant registre de trucades..."</string>
<plurals name="notification_voicemail_title">
@@ -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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"S\'està carregant des de la targeta SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Contactes de la targeta SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Torna a activar l\'aplicació Persones per utilitzar aquesta funció."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Escriu un nom o telèfon"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Escriu un nom o un número de telèfon"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Totes"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Perdudes"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"No hi ha cap trucada perduda recent."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Tots els contactes"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Tots els contactes"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Amagat dels preferits"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Eliminat dels preferits"</string>
<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 e09a2ca..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>
@@ -133,10 +133,10 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Načítání ze SIM karty..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Kontakty na SIM kartě"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Chcete-li použít tuto funkci, znovu povolte aplikaci Lidé."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Zadejte jméno / telefon"</string>
+ <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>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Všechny kontakty"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Všechny kontakty"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Skryto z oblíbených"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Odebráno z oblíbených"</string>
<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 2b16af9..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Indlæser fra SIM-kort ..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Kontakter på SIM-kort"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Genaktiver applikationen Personer for at bruge denne funktion."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Skriv navn eller tlf.nr."</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Skriv navn eller telefonnummer"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Alle"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Ubesvarede"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Ingen ubesvarede opkald."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Alle kontaktpersoner"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Alle kontaktpersoner"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Skjult fra favoritter"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Fjernet fra favoritter"</string>
<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 df9e46a..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Ladevorgang von SIM-Karte läuft..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Kontakte auf SIM-Karte"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Kontakte-App zur Verwendung dieser Funktion wieder aktivieren"</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Name oder Telefonnummer"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Namen/Telefonnummer eingeben"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Alle"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Entgangen"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Keine entgangenen Anrufe"</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Alle Kontakte"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Alle Kontakte"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"In Favoriten ausgeblendet"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Aus Favoriten entfernt"</string>
<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 3001aab..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Φόρτωση από κάρτα SIM…"</string>
<string name="simContacts_title" msgid="27341688347689769">"Επαφές στην κάρτα SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Ενεργοποιήστε ξανά την εφαρμογή People για να χρησιμοποιήσετε αυτήν τη λειτουργία."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Πληκτρ. όνομα ή τηλέφωνο"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"Δεν υπάρχουν πρόσφατες αναπάντητες κλήσεις."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Όλες οι επαφές"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Όλες οι επαφές"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Κρυμμένο από τα αγαπημένα"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Καταργήθηκε από τα αγαπημένα"</string>
<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 61cc818..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Loading from SIM card…"</string>
<string name="simContacts_title" msgid="27341688347689769">"SIM card contacts"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Re-enable the People application to use this feature."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Type a name or phone"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Type a name or phone number"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"All"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Missed"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"No recent missed calls."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"All contacts"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"All contacts"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Hidden from favourites"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Removed from favourites"</string>
<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 & 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 61cc818..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Loading from SIM card…"</string>
<string name="simContacts_title" msgid="27341688347689769">"SIM card contacts"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Re-enable the People application to use this feature."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Type a name or phone"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Type a name or phone number"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"All"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Missed"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"No recent missed calls."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"All contacts"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"All contacts"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Hidden from favourites"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Removed from favourites"</string>
<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 & 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 906894e..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Cargando desde tarjeta SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Contactos de tarjeta SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Vuelve a activar la aplicación Contactos para usar esta función."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Escribe nombre o tel."</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Ingresa un nombre o teléfono."</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Todo"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Perdidas"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"No hay llamadas perdidas recientes."</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Todos los contactos"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Todos los contactos"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"No se muestra en favoritos."</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Eliminado de favoritos"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Deshacer"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 51aa6fb..1c8de05 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -89,10 +89,10 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar solo llamadas perdidas"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Solo mensajes de voz"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas las llamadas"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Añadir pausa de dos segundos"</string>
+ <string name="add_2sec_pause" msgid="9214012315201040129">"Añadir pausa de 2 segundos"</string>
<string name="add_wait" msgid="3360818652790319634">"Añadir espera"</string>
<string name="call_settings" msgid="7666474782093693667">"Ajustes"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Contacto nuevo"</string>
+ <string name="menu_newContact" msgid="1209922412763274638">"Nuevo contacto"</string>
<string name="menu_allContacts" msgid="6948308384034051670">"Todos los contactos"</string>
<string name="callDetailTitle" msgid="5340227785196217938">"Detalles de la llamada"</string>
<string name="toast_call_detail_error" msgid="7200975244804730096">"No se han podido leer los detalles de la llamada solicitada."</string>
@@ -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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Cargando desde tarjeta SIM…"</string>
<string name="simContacts_title" msgid="27341688347689769">"Contactos de tarjeta SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Vuelve a habilitar la aplicación Contactos para usar esta función."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Escribe nombre o teléfono"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Escribe un nombre o teléfono"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Todo"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Perdidas"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"No hay llamadas perdidas recientes."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Todos los contactos"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Todos los contactos"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"No se muestra en favoritos"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Eliminado de favoritos"</string>
<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 160dcce..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Laadimine SIM-kaardilt ..."</string>
<string name="simContacts_title" msgid="27341688347689769">"SIM-kaardi kontaktid"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Funktsiooni kasutamiseks lubage uuesti rakendus Inimesed."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Sisestage nimi või telefoninumber"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Sisestage nimi/telefoninumber"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Kõik"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Vastamata"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Pole ühtegi hiljutist vastamata kõnet."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Kõik kontaktid"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Kõik kontaktid"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Lemmikute hulgast eemaldatud"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Eemaldatud lemmikute hulgast"</string>
<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 be844e9..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"در حال بارگیری سیم کارت..."</string>
<string name="simContacts_title" msgid="27341688347689769">"مخاطبین سیم کارت"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"برای استفاده از این ویژگی، برنامه «افراد» را دوباره فعال کنید."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"تایپ نام یا شماره تلفن"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"اخیراً هیچ تماس بیپاسخی نداشتهاید."</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"۹"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"همه مخاطبین"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"همه مخاطبین"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"پنهان از موارد دلخواه"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"از موارد دلخواه حذف شد"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"لغو"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 c8ffbeb..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Ladataan SIM-kortilta…"</string>
<string name="simContacts_title" msgid="27341688347689769">"SIM-kortin yhteystiedot"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Ota Ihmiset-sovellus uudelleen käyttöön käyttääksesi tätä ominaisuutta."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Kirjoita nimi tai numero"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Kirjoita nimi tai puh.numero"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Kaikki"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Vastaamattomat"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Ei uusia vastaamattomia puheluita."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Kaikki yhteystiedot"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Kaikki yhteystiedot"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Piilotettu suosikeista"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Poistettu suosikeista"</string>
<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 bebc193..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Chargement depuis la carte SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Contacts de carte SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Réactivez l\'application Contacts pour utiliser cette fonctionnalité."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Entrez nom/num. téléphone"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Entrez un nom/no de téléphone"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Tous"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Manqués"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Aucun appel manqué récent"</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Tous les contacts"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Tous les contacts"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Masqué des favoris"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Supprimé des favoris"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 48a526b..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Chargement depuis la carte SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Contacts de carte SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Réactivez l\'application Contacts pour utiliser cette fonctionnalité."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Saisir nom ou numéro tél."</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Saisissez nom/numéro de tél."</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Tous"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Manqués"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Aucun appel manqué récent"</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Tous les contacts"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Tous les contacts"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Favori masqué."</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Supprimé des favoris."</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 c32e18f..8f70946 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -114,8 +114,8 @@
<string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> को कॉल करें"</string>
<string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g> को पाठ संदेश भेजें"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"नहीं सुना गया ध्वनिमेल"</string>
- <string name="description_start_voice_search" msgid="520539488194946012">"ध्वनि खोज प्रारंभ करें"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
+ <string name="description_start_voice_search" msgid="520539488194946012">"बोलकर खोजें शुरु करें"</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,8 +132,8 @@
<string name="meid" msgid="6210568493746275750">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"सिम कार्ड से लोड हो रहा है…"</string>
<string name="simContacts_title" msgid="27341688347689769">"सिम कार्ड के संपर्क"</string>
- <string name="add_contact_not_available" msgid="1419207765446461366">"इस सुविधा का उपयोग करने के लिए लोग एप्लिकेशन को पुन: सक्षम करें."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"नाम या फ़ोन लिखें"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"हाल ही का कोई भी छूटा हुआ कॉल नहीं."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"सभी संपर्क"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"सभी संपर्क"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"पसंदीदा से छिपा हुआ"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"पसंदीदा से निकाल दिया गया"</string>
<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-hr/strings.xml b/res/values-hr/strings.xml
index 476daf5..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Učitavanje sa SIM kartice..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Kontakti SIM kartice"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Ponovo omogućite aplikaciju Osobe da biste upotrebljavali tu značajku."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Upišite ime ili tel."</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Upišite ime ili tel. broj"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Sve"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Propušteni"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Nema nedavnih propuštenih poziva"</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Svi kontakti"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Svi kontakti"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Uklonjeno iz favorita"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Uklonjeno iz favorita"</string>
<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 b1f04c9..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>
@@ -133,9 +133,9 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Betöltés a SIM-kártyáról..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Névjegyek a SIM-kártyán"</string>
<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="9190419749917566623">"Név vagy tel.szám beírása"</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>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Összes névjegy"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Összes névjegy"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Elrejtve a kedvencekből"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Eltávolítva a kedvencek közül"</string>
<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 154b017..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM քարտը բեռնվում է..."</string>
<string name="simContacts_title" msgid="27341688347689769">"SIM քարտի կոնտակտները"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Կրկին միացրեք Մարդիկ ծրագիրը` այս հատկությունn օգտագործելու համար:"</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Գրեք անունը կամ հեռախոսը"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"Նոր բաց թողնված զանգեր չկան:"</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Բոլոր կոնտակտները"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Բոլոր կոնտակտները"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Թաքցվեց ընտրյալներից"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Հեռացված է ընտրյալներից"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Հետարկել"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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-in/strings.xml b/res/values-in/strings.xml
index 3ab02ff..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Memuat dari kartu SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Kontak pada kartu SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Aktifkan kembali aplikasi Orang untuk menggunakan fitur ini."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Ketikkan nama atau ponsel"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Ketikkan nama/nomor ponsel"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Semua"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"TakDijawab"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Tidak ada panggilan tak terjawab terbaru."</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Semua kontak"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Semua kontak"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Disembunyikan dari favorit"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Dihapus dari favorit"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Batalkan"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 & 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 cc763f1..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Caricamento da SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Contatti SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Riattiva l\'app Persone per utilizzare questa funzione."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Digita nome o telefono"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Digita nome o numero telefono"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Tutti"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Perse"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Nessuna chiamata persa recente."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Tutti i contatti"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Tutti i contatti"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Nascosto dai preferiti"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Rimosso dai preferiti"</string>
<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 8becad2..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,8 +132,8 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"הקלד שם או מספר טלפון"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"אין שיחות אחרונות שלא נענו."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"כל אנשי הקשר"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"כל אנשי הקשר"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"מוסתר מהמועדפים"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"הוסר מהמועדפים"</string>
<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 01bfd6e..ed8fde8 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -29,8 +29,8 @@
<string name="recentCalls_deleteAll" msgid="6352364392762163704">"通話履歴を全件消去"</string>
<string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"ボイスメールを削除"</string>
<string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"ボイスメールを共有"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"通話履歴なし"</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"通話履歴を消しますか?"</string>
+ <string name="recentCalls_empty" msgid="247053222448663107">"通話履歴はありません。"</string>
+ <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"通話履歴を消去しますか?"</string>
<string name="clearCallLogConfirmation" msgid="5043563133171583152">"すべての通話記録は削除されます。"</string>
<string name="clearCallLogProgress_title" msgid="8365943000154295771">"通話履歴を消去しています..."</string>
<plurals name="notification_voicemail_title">
@@ -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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"名前か電話番号を入力"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"最近の不在着信はありません。"</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"すべての連絡先"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"すべての連絡先"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"お気に入りに表示しない"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"お気に入りから削除されました"</string>
<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 d57bd5d..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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"შეიყვანეთ სახელი, ან ტელეფონი"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"ბოლო დროის ზარები არ არის."</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"ყველა კონტაქტი"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"ყველა კონტაქტი"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"დამალულია რჩეულებიდან"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"წაიშალა რჩეულებიდან"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"დაბრუნება"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 ebd3d48..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"កំពុងផ្ទុកពីស៊ីមកាត..."</string>
<string name="simContacts_title" msgid="27341688347689769">"ទំនាក់ទំនងនៅក្នុងស៊ីមកាត"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"បើកកម្មវិធីឡើងវិញដើម្បីប្រើលក្ខណៈនេះ។"</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"សូមបញ្ចូលឈ្មោះ ឬទូរស័ព្ទ"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"មិនមានការខកខានទទួលថ្មីទេ។"</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"ទំនាក់ទំនងទាំងអស់"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"ទំនាក់ទំនងទាំងអស់"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"បានលាក់ពីការនិយម"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"បានលុបចេញពីទំនាក់ទំនងដែលនិយមប្រើ"</string>
<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-ko/strings.xml b/res/values-ko/strings.xml
index bbf0a39..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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"이름 또는 전화번호 입력"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"최근 부재중 전화가 없습니다."</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"전체 주소록"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"전체 주소록"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"즐겨찾기에서 숨김"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"즐겨찾기에서 삭제됨"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"실행취소"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 0904d6c..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"ກຳລັງໂຫລດຈາກ SIM card..."</string>
<string name="simContacts_title" msgid="27341688347689769">"ລາຍຊື່ຜູ່ຕິດຕໍ່ SIM card"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"ເປີດການນຳໃຊ້ແອັບພລິເຄຊັນ People ຄືນ ເພື່ອໃຊ້ຄຸນສົມບັດນີ້."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"ພິມຊື່ ຫຼືເບີໂທລະສັບ"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"ບໍ່ມີສາຍທີ່ບໍ່ໄດ້ຮັບຫຼ້າສຸດ."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"ຖືກເຊື່ອງຈາກລາຍການທີ່ມັກແລ້ວ"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"ລຶບອອກຈາກລາຍການທີ່ມັກແລ້ວ"</string>
<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-lt/strings.xml b/res/values-lt/strings.xml
index bca0611..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Įkeliama iš SIM kortelės..."</string>
<string name="simContacts_title" msgid="27341688347689769">"SIM kortelės adresatai"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Iš naujo įgalinti programą Žmonės, kad būtų galima naudoti šią funkciją."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Įveskite vardą arba telefono numerį"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Įveskite vardą arba tel. nr."</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Visi"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Praleisti"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Nėra neseniai praleistų skambučių."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Visi kontaktai"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Visi kontaktai"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Paslėpta adresyne"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Pašalintas iš adresyno"</string>
<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 26620e3..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Notiek ielāde no SIM kartes..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Kontaktpersonas SIM kartē"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Lai izmantotu šo funkciju, atkārtoti iespējojiet lietojumprogrammu Personas."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Ier. vārdu vai tālr. nr."</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Ierakstiet vārdu vai tālr. nr."</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Visi"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Neatb."</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Nav nesenu neatbildēto zvanu."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Visas kontaktpersonas"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Visas kontaktpersonas"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Netiek rādīts izlasē."</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Noņemts no izlases"</string>
<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 78506e4..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM картаас уншиж байна…"</string>
<string name="simContacts_title" msgid="27341688347689769">"SIM картны харилцагчид"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Тус функцийг ашиглахын тулд People аппликешнийг дахин идэвхжүүлнэ үү."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Нэр эсхүл дугаарыг бичнэ үү"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"Саяхны аваагүй дуудлага алга байна."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Бүх харилцагчид"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Бүх харилцагчид"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Дуртай харилцагчдаас нууцалсан"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Дуртай жагсаалтаас хасав"</string>
<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-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 32d8134..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Memuatkan dari kad SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Kenalan kad SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Dayakan semula aplikasi Orang untuk menggunakan ciri ini."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Taipkan nama atau telefon"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Taip nama atau nombor telefon"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Semua"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Tidak dijawab"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Tiada panggilan tidak dijawab terbaru."</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Semua kenalan"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Semua kenalan"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Disembunyikan daripada kegemaran"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Dialih keluar daripada kegemaran"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Buat asal"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 & 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 0727737..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Henter fra SIM-kort…"</string>
<string name="simContacts_title" msgid="27341688347689769">"Kontakter på SIM-kort"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Aktiver Personer-appen på nytt for å bruke denne funksjonen."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Skriv inn et navn eller telefonnummer"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Skriv inn et navn eller telefonnummer"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Alle"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Ikke besvart"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Ingen nylige ubesvarte anrop"</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Alle kontakter"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Alle kontakter"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Skjult fra favoritter"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Fjernet fra favoritter"</string>
<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-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index b6d487c..c208533 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -133,7 +133,8 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"नाम वा फोन टाइप गर्नुहोस्"</string>
+ <!-- no translation found for dialer_hint_find_contact (8798845521253672403) -->
+ <skip />
<string name="call_log_all_title" msgid="3566738938889333307">"सबै"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"छुटेको"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"हालमा छुटेका कुनै कलहरू छैनन्।"</string>
@@ -153,10 +154,9 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"९"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"सबै सम्पर्कहरू"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"सबै सम्पर्कहरू"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"मन पर्नेहरूबाट लुकाइएका"</string>
+ <!-- no translation found for favorite_hidden (5011234945140912047) -->
+ <skip />
<string name="favorite_hidden_undo" msgid="2508998611039406474">"अनडु गर्नुहोस्"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
- <skip />
+ <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>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 12ae26b..209e14d 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -29,10 +29,10 @@
<string name="recentCalls_deleteAll" msgid="6352364392762163704">"Gesprekken wissen"</string>
<string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Voicemail verwijderen"</string>
<string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Voicemail delen"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Gesprekken is leeg"</string>
+ <string name="recentCalls_empty" msgid="247053222448663107">"Gesprekkenoverzicht is leeg"</string>
<string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Oproeplog wissen?"</string>
<string name="clearCallLogConfirmation" msgid="5043563133171583152">"Al uw oproepgegevens worden verwijderd."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Oproeplogboek wissen..."</string>
+ <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Gesprekkenlijst wissen..."</string>
<plurals name="notification_voicemail_title">
<item quantity="one" msgid="1746619685488504230">"Voicemail"</item>
<item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> voicemails"</item>
@@ -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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Laden vanaf SIM-kaart..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Contacten op SIM-kaart"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Schakel de app \'Personen\' opnieuw in om deze functie te gebruiken."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Typ een naam of telefoon"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Typ een naam of telefoonnummer"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Alle"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Gemist"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Geen recente gemiste oproepen."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Alle contacten"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Alle contacten"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Verborgen in favorieten"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Verwijderd uit favorieten"</string>
<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 d396955..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Wczytywanie z karty SIM…"</string>
<string name="simContacts_title" msgid="27341688347689769">"Kontakty z karty SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Aby korzystać z tej funkcji, włącz ponownie aplikację Kontakty."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Wpisz imię lub telefon"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Wpisz nazwisko/numer telefonu"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Wszystkie"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Nieodebrane"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Brak nowych nieodebranych połączeń."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Wszystkie kontakty"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Wszystkie kontakty"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Ukryty w ulubionych"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Usunięto z ulubionych"</string>
<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 c0d1700..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>
@@ -133,9 +133,9 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"A carregar a partir do cartão SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Contactos no cartão SIM"</string>
<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="9190419749917566623">"Introduzir nome/telemóvel"</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>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Todos os contactos"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Todos os contactos"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Oculto dos favoritos"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Removido dos favoritos"</string>
<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 16051c3..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Carregando do cartão SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Contatos do cartão SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Reative o aplicativo Pessoas para usar este recurso."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Digite o número/telefone"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Digite um nome ou telefone"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Tudo"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Perdidas"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Nenhuma chamada perdida recente."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Todos os contatos"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Todos os contatos"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Oculto dos favoritos"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Removido dos favoritos"</string>
<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 a4d05e0..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 />
@@ -193,7 +193,7 @@
<string name="simContacts_title" msgid="27341688347689769">"Contacts sin la carta SIM"</string>
<!-- no translation found for add_contact_not_available (1419207765446461366) -->
<skip />
- <!-- no translation found for dialer_hint_find_contact (9190419749917566623) -->
+ <!-- no translation found for dialer_hint_find_contact (8798845521253672403) -->
<skip />
<!-- no translation found for call_log_all_title (3566738938889333307) -->
<skip />
@@ -233,7 +233,7 @@
<skip />
<!-- no translation found for show_all_contacts_button_text (8057452310403090131) -->
<skip />
- <!-- no translation found for favorite_hidden (4837366417440391323) -->
+ <!-- no translation found for favorite_hidden (5011234945140912047) -->
<skip />
<!-- no translation found for favorite_hidden_undo (2508998611039406474) -->
<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 352fbe7..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Se încarcă de pe cardul SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Persoanele din agendă de pe cardul SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Pentru a utiliza această funcție, reactivați aplicația Persoane."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Introd. nume sau nr. tel."</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Introd. nume sau nr. telefon"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Toate"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Nepreluate"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Nu există apeluri nepreluate recente."</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Toată agenda"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Toată agenda"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Nu se mai afișează în lista de preferințe"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"S-a eliminat din preferate"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Anulați"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 5224841..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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"Имя или номер телефона"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"Нет пропущенных звонков"</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Все контакты"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Все контакты"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Контакт скрыт"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Контакт удален из избранных"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Отмена"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 6ac486f..721ab62 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"නමක් හෝ දුරකථනයක් ටයිප් කරන්න"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"මෑත කාලින මග හැරුණ ඇමතුම් නැත."</string>
@@ -153,10 +153,8 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"සියලුම සම්බන්ධතා"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"සියලුම සම්බන්ධතා"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"ප්රියතමයන් වෙතින් සඟවන ලදි"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"ප්රියතමයන්ගෙන් ඉවත් කරන්න"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"අස් කරන්න"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
- <skip />
+ <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>
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 3960048..18ce48d 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -30,7 +30,7 @@
<string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Odstrániť hlasovú správu"</string>
<string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Zdieľať hlasovú správu"</string>
<string name="recentCalls_empty" msgid="247053222448663107">"Záznam hovorov je prázdny."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Vymazať záznam hov.?"</string>
+ <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Vymazať hovory?"</string>
<string name="clearCallLogConfirmation" msgid="5043563133171583152">"Všetky záznamy o hovoroch budú odstránené."</string>
<string name="clearCallLogProgress_title" msgid="8365943000154295771">"Vymazávanie denníka hovorov..."</string>
<plurals name="notification_voicemail_title">
@@ -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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Prebieha načítavanie z karty SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Kontakty na karte SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Ak chcete použiť túto funkciu, znova povoľte aplikáciu Ľudia."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Zadajte meno / tel. č."</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Zadajte meno alebo tel. číslo"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Všetky"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Zmeškané"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Žiadne nedávne zmeškané hovory."</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Všetky kontakty"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Všetky kontakty"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Skryté z obľúbených"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Odstránené z obľúbených"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Späť"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 9693609..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Nalaganje s kartice SIM ..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Stiki na kartici SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Aplikaciji Osebe znova omogočite uporabo te funkcije."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Vnesite ime telefona"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Vnesite ime ali tel. številko"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Vsa"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Neodgovorjena"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Ni nedavnih neodgovorjenih klicev."</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Vsi stiki"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Vsi stiki"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Skrito iz priljubljenih"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Odstranjeno iz priljubljenih"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Razveljavi"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 fe4e606..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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"Унесите име или број телефона"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"Нема недавно пропуштених позива."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Сви контакти"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Сви контакти"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Уклоњено из омиљених"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Уклоњено је из омиљених"</string>
<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 c190fe0..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Läser in från SIM-kort…"</string>
<string name="simContacts_title" msgid="27341688347689769">"Kontakter från SIM-kort"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Aktivera appen Personer på nytt om du vill använda den här funktionen."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Skriv namn/telefonnummer"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Ange ett namn eller telefonnummer"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Alla"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Missade"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Inga nya missade samtal."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Alla kontakter"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Alla kontakter"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Visas inte bland favoriterna"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Borttagen från favoriter"</string>
<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 d0cb34e..6d436b5 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -27,20 +27,20 @@
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Ongeza kwa anwani"</string>
<string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Toa kwa orodha ya simu zilizopigwa"</string>
<string name="recentCalls_deleteAll" msgid="6352364392762163704">"Futa rekodi ya simu"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Futa barua ya sauti"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Shiriki barua ya sauti"</string>
+ <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Futa ujumbe wa sauti"</string>
+ <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Shiriki ujumbe wa sauti"</string>
<string name="recentCalls_empty" msgid="247053222448663107">"Orodha ya kupiga simu haina chochote."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Futa rekodi ya simu?"</string>
+ <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Ungependa kufuta rekodi ya simu?"</string>
<string name="clearCallLogConfirmation" msgid="5043563133171583152">"Kumbukumbu zako zote za simu zitafutwa."</string>
<string name="clearCallLogProgress_title" msgid="8365943000154295771">"Inafuta rekodi ya simu ..."</string>
<plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Barua ya sauti"</item>
+ <item quantity="one" msgid="1746619685488504230">"Ujumbe wa sauti"</item>
<item quantity="other" msgid="5513481419205061254">"Barua za sauti <xliff:g id="COUNT">%1$d</xliff:g>"</item>
</plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Cheza"</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">"Barua mpya ya sauti kutoka <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Haikuweza kucheza barua ya sauti."</string>
+ <string name="voicemail_playback_error" msgid="1811242131549854624">"Imeshindwa kucheza ujumbe wa sauti."</string>
<string name="voicemail_buffering" msgid="738287747618697097">"Inaakibisha..."</string>
<string name="voicemail_fetching_content" msgid="877911315738258780">"Inaleta barua ya sauti…"</string>
<string name="voicemail_fetching_timout" msgid="6691792377574905201">"Haikuweza kuleta barua ya sauti."</string>
@@ -75,7 +75,7 @@
<string name="description_image_button_star" msgid="3365919907520767866">"nyota"</string>
<string name="description_image_button_zero" msgid="4133108949401820710">"sufuri"</string>
<string name="description_image_button_pound" msgid="3039765597595889230">"Pauni"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"Barua ya sauti"</string>
+ <string name="description_voicemail_button" msgid="3402506823655455591">"Ujumbe wa sauti"</string>
<string name="description_search_button" msgid="3660807558587384889">"tafuta"</string>
<string name="description_dial_button" msgid="1274091017188142646">"piga simu"</string>
<string name="description_delete_button" msgid="6263102114033407382">"futa"</string>
@@ -104,7 +104,7 @@
<string name="type_missed" msgid="2720502601640509542">"Simu isiyojibiwa"</string>
<string name="type_voicemail" msgid="5153139450668549908">"Barua za sauti"</string>
<string name="actionIncomingCall" msgid="6028930669817038600">"Simu zinazoingia"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Cheza barua ya sauti"</string>
+ <string name="description_call_log_play_button" msgid="651182125650429846">"Sikiliza ujumbe wa sauti"</string>
<string name="description_call_log_incoming_call" msgid="4485427487637250143">"Simu inayoingia"</string>
<string name="description_call_log_outgoing_call" msgid="604831756853471658">"Simu inayotoka"</string>
<string name="description_call_log_missed_call" msgid="2242805209983708825">"Simu isiyojibiwa"</string>
@@ -115,10 +115,10 @@
<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">"Barua ya sauti"</string>
+ <string name="voicemail" msgid="3851469869202611441">"Ujumbe wa sauti"</string>
<string name="private_num" msgid="6374339738119166953">" Nambari isiyojulikana"</string>
<string name="payphone" msgid="4864313342828942922">"Simu ya kulipia"</string>
<string name="dialerKeyboardHintText" msgid="5401660096579787344">"Tumia kibodi kubonyeza"</string>
@@ -133,9 +133,9 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Inapakia kutoka SIM kadi..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Anwani za SIM kadi"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Washa tena Programu ya watu ili itumie kipengele hiki."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Chapa jina au simu"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Andika jina au nambari ya simu"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Zote"</string>
- <string name="call_log_missed_title" msgid="4541142293870638971">"Hazikupokewa"</string>
+ <string name="call_log_missed_title" msgid="4541142293870638971">"Ambazo hazikupokewa"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Hakuna simu za hivi karibuni ambazo hazikupokewa."</string>
<string name="recentVoicemails_empty" msgid="5163114119598014048">"Hakuna ujumbe wa sauti wa hivi karibuni."</string>
<string name="show_all_contacts" msgid="1732256558071778056">"Onyesha anwani zote"</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Anwani zote"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Anwani zote"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Haionyeshwi kwenye vipendwa"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Imeondolowa kwenye vipendwa"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Tendua"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 f562130..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"กำลังโหลดจากซิมการ์ด…"</string>
<string name="simContacts_title" msgid="27341688347689769">"รายชื่อบนซิมการ์ด"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"เปิดใช้งานแอปพลิเคชัน People อีกครั้งเพื่อใช้คุณลักษณะนี้"</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"พิมพ์ชื่อ/หมายเลขโทรศัพท์"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"ไม่มีสายที่ไม่ได้รับล่าสุด"</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"ที่อยู่ติดต่อทั้งหมด"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"ที่อยู่ติดต่อทั้งหมด"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"ซ่อนจากรายการโปรด"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"นำออกจากรายการโปรด"</string>
<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="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 c9f48d4..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Naglo-load mula sa SIM card…"</string>
<string name="simContacts_title" msgid="27341688347689769">"Mga contact sa SIM card"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Paganahing muli ang application ng Mga Tao upang magamit ang tampok na ito."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Mag-type pangalan o phone"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"I-type pangalan o phone number"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Lahat"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Di nasagot"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Walang mga kamakailang hindi nasagot na tawag."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Lahat ng contact"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Lahat ng contact"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Nakatago sa mga paborito"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Inalis sa mga paborito"</string>
<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 2274754..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM karttan yükleniyor..."</string>
<string name="simContacts_title" msgid="27341688347689769">"SIM kart kişileri"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Bu özelliği kullanmak için Kişiler uygulamasını yeniden etkinleştirin."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Bir ad veya telefon yazın"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Ad veya telefon numarası yazın"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Tümü"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Cevapsız"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Yakın zamanda cevapsız çağrı yok."</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Tüm kişiler"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Tüm kişiler"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Favorilerde gösterme"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Favorilerden kaldırıldı"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Geri al"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 5289fbd..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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"Введіть ім’я або телефон"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"Немає нещодавніх пропущених викликів."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Усі контакти"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Усі контакти"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Вилучено з вибраних"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Вилучено з вибраного"</string>
<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_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 df5eef7..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Đang tải từ thẻ SIM…"</string>
<string name="simContacts_title" msgid="27341688347689769">"Danh bạ trên thẻ SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Bật lại ứng dụng Liên hệ để sử dụng tính năng này."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Nhập tên hoặc điện thoại"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Nhập tên hoặc số điện thoại"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Tất cả"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Bị nhỡ"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Không có cuộc gọi nhỡ gần đây nào."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Tất cả liên hệ"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Tất cả liên hệ"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Bị ẩn khỏi liên hệ yêu thích"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Đã xóa khỏi mục yêu thích"</string>
<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 ea499a0..4c69d25 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -24,12 +24,12 @@
<string name="menu_sendTextMessage" msgid="6937343460284499306">"发送短信"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"呼叫<xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"呼叫之前编辑号码"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"添加到“联系人”"</string>
+ <string name="recentCalls_addToContact" msgid="1429899535546487008">"添加到通讯录"</string>
<string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"从通话记录中删除"</string>
<string name="recentCalls_deleteAll" msgid="6352364392762163704">"清除通话记录"</string>
<string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"删除语音邮件"</string>
<string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"分享语音邮件"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"通话记录为空。"</string>
+ <string name="recentCalls_empty" msgid="247053222448663107">"没有通话记录。"</string>
<string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"要清除通话记录吗?"</string>
<string name="clearCallLogConfirmation" msgid="5043563133171583152">"系统将删除您的所有通话记录。"</string>
<string name="clearCallLogProgress_title" msgid="8365943000154295771">"正在清除通话记录..."</string>
@@ -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">"暂停时间延长 2 秒"</string>
+ <string name="add_2sec_pause" msgid="9214012315201040129">"暂停时间延长2秒"</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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"请输入姓名或电话号码"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"最近没有未接来电。"</string>
@@ -153,10 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"所有联系人"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"所有联系人"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"已从“常用联系人”中隐藏"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"已从“常用联系人”中删除"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"撤消"</string>
- <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
- <skip />
- <!-- no translation found for search_shortcut_add_to_contacts (1853716708655789069) -->
+ <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 a5c9cea..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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"輸入姓名或電話"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"最近沒有未接來電。"</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"所有聯絡人"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"所有聯絡人"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"在我的最愛中隱藏"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"已從「我的最愛」中移除"</string>
<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="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 0076dfb..dc01d84 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -89,8 +89,8 @@
<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">"新增 2 秒暫停功能"</string>
- <string name="add_wait" msgid="3360818652790319634">"新增插播功能"</string>
+ <string name="add_2sec_pause" msgid="9214012315201040129">"暫停時間延長 2 秒"</string>
+ <string name="add_wait" msgid="3360818652790319634">"延長等待時間"</string>
<string name="call_settings" msgid="7666474782093693667">"設定"</string>
<string name="menu_newContact" msgid="1209922412763274638">"新增聯絡人"</string>
<string name="menu_allContacts" msgid="6948308384034051670">"所有聯絡人"</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>
@@ -133,7 +133,7 @@
<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="dialer_hint_find_contact" msgid="9190419749917566623">"輸入姓名或電話"</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>
<string name="recentMissed_empty" msgid="5427113551557296665">"最近沒有未接來電。"</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"所有聯絡人"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"所有聯絡人"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"從我的收藏中移除"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"已從最愛的聯絡人移除"</string>
<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 85c023e..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>
@@ -133,7 +133,7 @@
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Ilayisha kusuka ekhadini le-SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Othintana nabo bekhadi le-SIM"</string>
<string name="add_contact_not_available" msgid="1419207765446461366">"Phinda unike amandla uhlelo lokusebenza lwabantu ukuze basebenzise lesi sici."</string>
- <string name="dialer_hint_find_contact" msgid="9190419749917566623">"Thayipha igama noma ifoni"</string>
+ <string name="dialer_hint_find_contact" msgid="8798845521253672403">"Thayipha igama noma inombolo yefoni"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Konke"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Phuthelwe"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Awekho amakholi wakamuva aphuthelwe."</string>
@@ -153,8 +153,13 @@
<string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
<string name="show_all_contacts_title" msgid="8395378484578221791">"Bonke oxhumana nabo"</string>
<string name="show_all_contacts_button_text" msgid="8057452310403090131">"Bonke oxhumana nabo"</string>
- <string name="favorite_hidden" msgid="4837366417440391323">"Kufihliwe kusukela kuzintandokazi"</string>
+ <string name="favorite_hidden" msgid="5011234945140912047">"Kukhishiwe kusuka kuzintandokazi"</string>
<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/animation_constants.xml b/res/values/animation_constants.xml
index 77b7627..b41b316 100644
--- a/res/values/animation_constants.xml
+++ b/res/values/animation_constants.xml
@@ -15,7 +15,7 @@
~ limitations under the License
-->
<resources>
- <integer name="fade_duration">250</integer>
+ <integer name="fade_duration">300</integer>
<!-- Swipe constants -->
<integer name="swipe_escape_velocity">100</integer>
@@ -27,4 +27,4 @@
<dimen name="min_swipe">5dip</dimen>
<dimen name="min_vert">10dip</dimen>
<dimen name="min_lock">20dip</dimen>
-</resources>
\ No newline at end of file
+</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 & 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 9b99244..4e91897 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -42,8 +42,8 @@
<item name="list_item_profile_photo_size">70dip</item>
<item name="list_item_prefix_highlight_color">@color/people_app_theme_color</item>
<item name="list_item_header_text_indent">8dip</item>
- <item name="list_item_header_text_color">@color/dialtacts_secondary_text_color</item>
- <item name="list_item_header_text_size">20sp</item>
+ <item name="list_item_header_text_color">@color/people_app_theme_color</item>
+ <item name="list_item_header_text_size">25sp</item>
<item name="list_item_header_height">48dip</item>
<item name="list_item_header_underline_height">2dip</item>
<item name="list_item_header_underline_color">@color/favorite_contacts_separator_color</item>
@@ -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 e26d2f0..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;
@@ -55,7 +54,6 @@
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.ClipboardUtils;
import com.android.contacts.common.GeoUtil;
-import com.android.contacts.common.util.Constants;
import com.android.contacts.common.util.UriUtils;
import com.android.dialer.BackScrollManager.ScrollableHeader;
import com.android.dialer.calllog.CallDetailHistoryAdapter;
@@ -63,6 +61,7 @@
import com.android.dialer.calllog.ContactInfo;
import com.android.dialer.calllog.ContactInfoHelper;
import com.android.dialer.calllog.PhoneNumberHelper;
+import com.android.dialer.calllog.PhoneNumberUtilsWrapper;
import com.android.dialer.util.AsyncTaskExecutor;
import com.android.dialer.util.AsyncTaskExecutors;
import com.android.dialer.voicemail.VoicemailPlaybackFragment;
@@ -266,7 +265,7 @@
mCallTypeHelper = new CallTypeHelper(getResources());
mPhoneNumberHelper = new PhoneNumberHelper(mResources);
mPhoneCallDetailsHelper = new PhoneCallDetailsHelper(mResources, mCallTypeHelper,
- mPhoneNumberHelper);
+ new PhoneNumberUtilsWrapper());
mVoicemailStatusHelper = new VoicemailStatusHelperImpl();
mAsyncQueryHandler = new CallDetailActivityQueryHandler(this);
mHeaderTextView = (TextView) findViewById(R.id.header_text);
@@ -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();
@@ -435,9 +434,10 @@
// Cache the details about the phone number.
final boolean canPlaceCallsTo =
- PhoneNumberHelper.canPlaceCallsTo(mNumber, numberPresentation);
- final boolean isVoicemailNumber = mPhoneNumberHelper.isVoicemailNumber(mNumber);
- final boolean isSipNumber = mPhoneNumberHelper.isSipNumber(mNumber);
+ PhoneNumberUtilsWrapper.canPlaceCallsTo(mNumber, numberPresentation);
+ final PhoneNumberUtilsWrapper phoneUtils = new PhoneNumberUtilsWrapper();
+ final boolean isVoicemailNumber = phoneUtils.isVoicemailNumber(mNumber);
+ final boolean isSipNumber = phoneUtils.isSipNumber(mNumber);
// Let user view contact details if they exist, otherwise add option to create new
// contact from this number.
@@ -536,7 +536,7 @@
// The secondary action allows to send an SMS to the number that placed the
// call.
- if (mPhoneNumberHelper.canSendSmsTo(mNumber, numberPresentation)) {
+ if (phoneUtils.canSendSmsTo(mNumber, numberPresentation)) {
entry.setSecondaryAction(
R.drawable.ic_text_holo_light,
new Intent(Intent.ACTION_SENDTO,
@@ -630,8 +630,8 @@
final Uri lookupUri;
// If this is not a regular number, there is no point in looking it up in the contacts.
ContactInfo info =
- PhoneNumberHelper.canPlaceCallsTo(number, numberPresentation)
- && !mPhoneNumberHelper.isVoicemailNumber(number)
+ PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation)
+ && !new PhoneNumberUtilsWrapper().isVoicemailNumber(number)
? mContactInfoHelper.lookupNumber(number, countryIso)
: null;
if (info == null) {
@@ -795,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()) {
@@ -853,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 4680038..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);
@@ -639,12 +661,15 @@
return;
}
- if (mDialpadFragment != null && (phoneIsInUse() || isDialIntent(intent))) {
- mDialpadFragment.setStartedFromNewIntent(true);
- if (!mDialpadFragment.isVisible()) {
- mInCallDialpadUp = true;
+ if (mDialpadFragment != null) {
+ final boolean phoneIsInUse = phoneIsInUse();
+ if (phoneIsInUse || isDialIntent(intent)) {
+ mDialpadFragment.setStartedFromNewIntent(true);
+ if (phoneIsInUse && !mDialpadFragment.isVisible()) {
+ mInCallDialpadUp = true;
+ }
+ showDialpadFragment(false);
}
- showDialpadFragment(false);
}
}
@@ -821,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/PhoneCallDetailsHelper.java b/src/com/android/dialer/PhoneCallDetailsHelper.java
index be9cb66..340168e 100644
--- a/src/com/android/dialer/PhoneCallDetailsHelper.java
+++ b/src/com/android/dialer/PhoneCallDetailsHelper.java
@@ -34,6 +34,7 @@
import com.android.dialer.calllog.CallTypeHelper;
import com.android.dialer.calllog.ContactInfo;
import com.android.dialer.calllog.PhoneNumberHelper;
+import com.android.dialer.calllog.PhoneNumberUtilsWrapper;
/**
* Helper class to fill in the views in {@link PhoneCallDetailsViews}.
@@ -48,6 +49,7 @@
// Helper classes.
private final CallTypeHelper mCallTypeHelper;
private final PhoneNumberHelper mPhoneNumberHelper;
+ private final PhoneNumberUtilsWrapper mPhoneNumberUtilsWrapper;
/**
* Creates a new instance of the helper.
@@ -57,10 +59,11 @@
* @param resources used to look up strings
*/
public PhoneCallDetailsHelper(Resources resources, CallTypeHelper callTypeHelper,
- PhoneNumberHelper phoneNumberHelper) {
+ PhoneNumberUtilsWrapper phoneUtils) {
mResources = resources;
mCallTypeHelper = callTypeHelper;
- mPhoneNumberHelper = phoneNumberHelper;
+ mPhoneNumberHelper = new PhoneNumberHelper(resources);
+ mPhoneNumberUtilsWrapper = phoneUtils;
}
/** Fills the call details views with content. */
@@ -117,7 +120,7 @@
if (TextUtils.isEmpty(details.name)) {
nameText = displayNumber;
if (TextUtils.isEmpty(details.geocode)
- || mPhoneNumberHelper.isVoicemailNumber(details.number)) {
+ || mPhoneNumberUtilsWrapper.isVoicemailNumber(details.number)) {
numberText = mResources.getString(R.string.call_log_empty_gecode);
} else {
numberText = details.geocode;
diff --git a/src/com/android/dialer/calllog/CallLogActivity.java b/src/com/android/dialer/calllog/CallLogActivity.java
index 662614f..42318f0 100644
--- a/src/com/android/dialer/calllog/CallLogActivity.java
+++ b/src/com/android/dialer/calllog/CallLogActivity.java
@@ -122,11 +122,6 @@
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowTitleEnabled(true);
- final SpannableString s = new SpannableString(getString(R.string.call_log_activity_title));
- s.setSpan(new TypefaceSpan(getString(R.string.call_log_activity_title_font_family)), 0,
- s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- actionBar.setTitle(s);
-
final Tab allTab = actionBar.newTab();
final String allTitle = getString(R.string.call_log_all_title);
allTab.setContentDescription(allTitle);
@@ -162,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 c0054ba..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>();
@@ -249,7 +265,7 @@
mContactPhotoManager = ContactPhotoManager.getInstance(mContext);
mPhoneNumberHelper = new PhoneNumberHelper(resources);
PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(
- resources, callTypeHelper, mPhoneNumberHelper);
+ resources, callTypeHelper, new PhoneNumberUtilsWrapper());
mCallLogViewsHelper =
new CallLogListItemHelper(
phoneCallDetailsHelper, mPhoneNumberHelper, resources);
@@ -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.
@@ -541,8 +558,8 @@
ExpirableCache.CachedValue<ContactInfo> cachedInfo =
mContactInfoCache.getCachedValue(numberCountryIso);
ContactInfo info = cachedInfo == null ? null : cachedInfo.getValue();
- if (!PhoneNumberHelper.canPlaceCallsTo(number, numberPresentation)
- || mPhoneNumberHelper.isVoicemailNumber(number)) {
+ if (!PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation)
+ || new PhoneNumberUtilsWrapper().isVoicemailNumber(number)) {
// If this is a number that cannot be dialed, there is no point in looking up a contact
// for it.
info = ContactInfo.EMPTY;
@@ -615,11 +632,108 @@
mViewTreeObserver.addOnPreDrawListener(this);
}
- postBindView(views, info);
+ bindBadge(view, info, details, callType);
}
- protected void postBindView(CallLogListItemViews views, ContactInfo info) {
- // no-op
+ 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) {
+ 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/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java
index d0d34d8..c8e2613 100644
--- a/src/com/android/dialer/calllog/CallLogFragment.java
+++ b/src/com/android/dialer/calllog/CallLogFragment.java
@@ -31,7 +31,6 @@
import android.provider.ContactsContract;
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -132,8 +131,8 @@
this, mLogLimit);
mKeyguardManager =
(KeyguardManager) getActivity().getSystemService(Context.KEYGUARD_SERVICE);
- getActivity().getContentResolver().registerContentObserver(
- CallLog.CONTENT_URI, true, mCallLogObserver);
+ getActivity().getContentResolver().registerContentObserver(CallLog.CONTENT_URI, true,
+ mCallLogObserver);
getActivity().getContentResolver().registerContentObserver(
ContactsContract.Contacts.CONTENT_URI, true, mContactsObserver);
setHasOptionsMenu(true);
@@ -363,7 +362,7 @@
if (cursor != null) {
String number = cursor.getString(CallLogQuery.NUMBER);
int numberPresentation = cursor.getInt(CallLogQuery.NUMBER_PRESENTATION);
- if (!PhoneNumberHelper.canPlaceCallsTo(number, numberPresentation)) {
+ if (!PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation)) {
// This number can't be called, do nothing
return;
}
@@ -433,8 +432,7 @@
updateOnTransition(true);
}
- // TODO krelease: Figure out if we still need this. If so, it should be probably be moved to
- // the call log activity instead, or done only in a single call log fragment.
+ // TODO: Move to CallLogActivity
private void updateOnTransition(boolean onEntry) {
// We don't want to update any call data when keyguard is on because the user has likely not
// seen the new calls yet.
@@ -442,6 +440,7 @@
if (mKeyguardManager != null && !mKeyguardManager.inKeyguardRestrictedInputMode()) {
// On either of the transitions we update the missed call and voicemail notifications.
// While exiting we additionally consume all missed calls (by marking them as read).
+ mCallLogQueryHandler.markNewCallsAsOld();
if (!onEntry) {
mCallLogQueryHandler.markMissedCallsAsRead();
}
diff --git a/src/com/android/dialer/calllog/CallLogListItemHelper.java b/src/com/android/dialer/calllog/CallLogListItemHelper.java
index fc26e85..576a432 100644
--- a/src/com/android/dialer/calllog/CallLogListItemHelper.java
+++ b/src/com/android/dialer/calllog/CallLogListItemHelper.java
@@ -60,8 +60,8 @@
boolean isHighlighted, boolean useCallAsPrimaryAction) {
mPhoneCallDetailsHelper.setPhoneCallDetails(views.phoneCallDetailsViews, details,
isHighlighted);
- boolean canCall = PhoneNumberHelper.canPlaceCallsTo(details.number,
- details.numberPresentation);
+ boolean canCall = PhoneNumberUtilsWrapper.canPlaceCallsTo(details.number,
+ details.numberPresentation);
boolean canPlay = details.callTypes[0] == Calls.VOICEMAIL_TYPE;
if (canPlay) {
@@ -80,7 +80,7 @@
private void configureCallSecondaryAction(CallLogListItemViews views,
PhoneCallDetails details) {
views.secondaryActionView.setVisibility(View.VISIBLE);
- views.secondaryActionView.setImageResource(R.drawable.ic_ab_dialer_holo_light);
+ views.secondaryActionView.setImageResource(R.drawable.ic_phone_dk);
views.secondaryActionView.setContentDescription(getCallActionDescription(details));
}
diff --git a/src/com/android/dialer/calllog/CallLogQueryHandler.java b/src/com/android/dialer/calllog/CallLogQueryHandler.java
index 987dedf..def3c97 100644
--- a/src/com/android/dialer/calllog/CallLogQueryHandler.java
+++ b/src/com/android/dialer/calllog/CallLogQueryHandler.java
@@ -138,22 +138,14 @@
* <p>
* It will asynchronously update the content of the list view when the fetch completes.
*/
- public void fetchCalls(int callType) {
+ public void fetchCalls(int callType, long newerThan) {
cancelFetch();
int requestId = newCallsRequest();
- fetchCalls(QUERY_CALLLOG_TOKEN, requestId, callType , false /* newOnly */);
+ fetchCalls(QUERY_CALLLOG_TOKEN, requestId, callType, false /* newOnly */, newerThan);
}
- /**
- * Fetches the list of calls from the call log for a given type.
- * This call fetches only the new (i.e. NEW = 1) ones.
- * <p>
- * It will asynchronously update the content of the list view when the fetch completes.
- */
- public void fetchNewCalls(int callType) {
- cancelFetch();
- int requestId = newCallsRequest();
- fetchCalls(QUERY_CALLLOG_TOKEN, requestId, callType , true /* newOnly */);
+ public void fetchCalls(int callType) {
+ fetchCalls(callType, 0);
}
public void fetchVoicemailStatus() {
@@ -162,7 +154,8 @@
}
/** Fetches the list of calls in the call log. */
- private void fetchCalls(int token, int requestId, int callType, boolean newOnly) {
+ private void fetchCalls(int token, int requestId, int callType, boolean newOnly,
+ long newerThan) {
// We need to check for NULL explicitly otherwise entries with where READ is NULL
// may not match either the query or its negation.
// We consider the calls that are not yet consumed (i.e. IS_READ = 0) as "new".
@@ -180,8 +173,18 @@
}
// Add a clause to fetch only items of type voicemail.
where.append(String.format("(%s = ?)", Calls.TYPE));
+ // Add a clause to fetch only items newer than the requested date
selectionArgs.add(Integer.toString(callType));
}
+
+ if (newerThan > 0) {
+ if (where.length() > 0) {
+ where.append(" AND ");
+ }
+ where.append(String.format("(%s > ?)", Calls.DATE));
+ selectionArgs.add(Long.toString(newerThan));
+ }
+
final int limit = (mLogLimit == -1) ? NUM_LOGS_TO_DISPLAY : mLogLimit;
final String selection = where.length() > 0 ? where.toString() : null;
Uri uri = Calls.CONTENT_URI_WITH_VOICEMAIL.buildUpon()
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 ac858df..601f552 100644
--- a/src/com/android/dialer/calllog/ContactInfo.java
+++ b/src/com/android/dialer/calllog/ContactInfo.java
@@ -20,6 +20,7 @@
import android.text.TextUtils;
import com.android.contacts.common.util.UriUtils;
+import com.google.common.base.Objects;
/**
* Information for a contact as needed by the Call Log.
@@ -41,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.
@@ -70,4 +73,12 @@
if (!UriUtils.areEqual(photoUri, other.photoUri)) return false;
return true;
}
+
+ @Override
+ public String toString() {
+ return Objects.toStringHelper(this).add("lookupUri", lookupUri).add("name", name).add(
+ "type", type).add("label", label).add("number", number).add("formattedNumber",
+ formattedNumber).add("normalizedNumber", normalizedNumber).add("photoId", photoId)
+ .add("photoUri", photoUri).toString();
+ }
}
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 8bac657..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;
}
@@ -241,8 +241,7 @@
*/
private static final class DefaultNewCallsQuery implements NewCallsQuery {
private static final String[] PROJECTION = {
- Calls._ID, Calls.NUMBER, Calls.NUMBER_PRESENTATION,
- Calls.VOICEMAIL_URI
+ Calls._ID, Calls.NUMBER, Calls.VOICEMAIL_URI, Calls.NUMBER_PRESENTATION
};
private static final int ID_COLUMN_INDEX = 0;
private static final int NUMBER_COLUMN_INDEX = 1;
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 7d46f40..336facb 100644
--- a/src/com/android/dialer/calllog/PhoneNumberHelper.java
+++ b/src/com/android/dialer/calllog/PhoneNumberHelper.java
@@ -33,16 +33,23 @@
mResources = resources;
}
- /** Returns true if it is possible to place a call to the given number. */
- public static boolean canPlaceCallsTo(CharSequence number, int presentation) {
- return presentation == Calls.PRESENTATION_ALLOWED
- && !TextUtils.isEmpty(number);
- }
-
- /** Returns true if it is possible to send an SMS to the given number. */
- public boolean canSendSmsTo(CharSequence number, int presentation) {
- return canPlaceCallsTo(number, presentation)
- && !isVoicemailNumber(number) && !isSipNumber(number);
+ /* package */ CharSequence getDisplayName(CharSequence number, int presentation) {
+ if (presentation == Calls.PRESENTATION_UNKNOWN) {
+ return mResources.getString(R.string.unknown);
+ }
+ if (presentation == Calls.PRESENTATION_RESTRICTED) {
+ return mResources.getString(R.string.private_num);
+ }
+ if (presentation == Calls.PRESENTATION_PAYPHONE) {
+ return mResources.getString(R.string.payphone);
+ }
+ if (new PhoneNumberUtilsWrapper().isVoicemailNumber(number)) {
+ return mResources.getString(R.string.voicemail);
+ }
+ if (PhoneNumberUtilsWrapper.isLegacyUnknownNumbers(number)) {
+ return mResources.getString(R.string.unknown);
+ }
+ return "";
}
/**
@@ -53,41 +60,21 @@
*/
public CharSequence getDisplayNumber(CharSequence number,
int presentation, CharSequence formattedNumber) {
- if (presentation == Calls.PRESENTATION_UNKNOWN) {
- return mResources.getString(R.string.unknown);
+
+ final CharSequence displayName = getDisplayName(number, presentation);
+
+ if (!TextUtils.isEmpty(displayName)) {
+ return displayName;
}
- if (presentation == Calls.PRESENTATION_RESTRICTED) {
- return mResources.getString(R.string.private_num);
- }
- if (presentation == Calls.PRESENTATION_PAYPHONE) {
- return mResources.getString(R.string.payphone);
- }
+
if (TextUtils.isEmpty(number)) {
return "";
}
- if (isVoicemailNumber(number)) {
- return mResources.getString(R.string.voicemail);
- }
+
if (TextUtils.isEmpty(formattedNumber)) {
return number;
} else {
return formattedNumber;
}
}
-
- /**
- * Returns true if the given number is the number of the configured voicemail.
- * To be able to mock-out this, it is not a static method.
- */
- public boolean isVoicemailNumber(CharSequence number) {
- return PhoneNumberUtils.isVoiceMailNumber(number.toString());
- }
-
- /**
- * Returns true if the given number is a SIP address.
- * To be able to mock-out this, it is not a static method.
- */
- public boolean isSipNumber(CharSequence number) {
- return PhoneNumberUtils.isUriNumber(number.toString());
- }
}
diff --git a/src/com/android/dialer/calllog/PhoneNumberUtilsWrapper.java b/src/com/android/dialer/calllog/PhoneNumberUtilsWrapper.java
new file mode 100644
index 0000000..9913c20
--- /dev/null
+++ b/src/com/android/dialer/calllog/PhoneNumberUtilsWrapper.java
@@ -0,0 +1,89 @@
+/*
+ * 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
+ */
+
+package com.android.dialer.calllog;
+
+import android.provider.CallLog;
+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) && !isLegacyUnknownNumbers(number);
+ }
+
+ /**
+ * Returns true if it is possible to send an SMS to the given number.
+ */
+ public boolean canSendSmsTo(CharSequence number, int presentation) {
+ return canPlaceCallsTo(number, presentation) && !isVoicemailNumber(number) && !isSipNumber(
+ number);
+ }
+
+ /**
+ * Returns true if the given number is the number of the configured voicemail. To be able to
+ * mock-out this, it is not a static method.
+ */
+ public boolean isVoicemailNumber(CharSequence number) {
+ return PhoneNumberUtils.isVoiceMailNumber(number.toString());
+ }
+
+ /**
+ * Returns true if the given number is a SIP address. To be able to mock-out this, it is not a
+ * static method.
+ */
+ public boolean isSipNumber(CharSequence number) {
+ return PhoneNumberUtils.isUriNumber(number.toString());
+ }
+
+ public static boolean isUnknownNumberThatCanBeLookedUp(CharSequence number, int presentation) {
+ if (presentation == CallLog.Calls.PRESENTATION_UNKNOWN) {
+ return false;
+ }
+ if (presentation == CallLog.Calls.PRESENTATION_RESTRICTED) {
+ return false;
+ }
+ if (presentation == CallLog.Calls.PRESENTATION_PAYPHONE) {
+ return false;
+ }
+ if (TextUtils.isEmpty(number)) {
+ return false;
+ }
+ 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/AllContactsActivity.java b/src/com/android/dialer/list/AllContactsActivity.java
index c46702f..f5d739d 100644
--- a/src/com/android/dialer/list/AllContactsActivity.java
+++ b/src/com/android/dialer/list/AllContactsActivity.java
@@ -81,11 +81,6 @@
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowTitleEnabled(true);
- final SpannableString s = new SpannableString(getString(R.string.show_all_contacts_title));
- s.setSpan(new TypefaceSpan(getString(R.string.show_all_contacts_title_font_family)), 0,
- s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- actionBar.setTitle(s);
-
setContentView(R.layout.all_contacts_activity);
}
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/PhoneFavoriteDragAndDropListeners.java b/src/com/android/dialer/list/PhoneFavoriteDragAndDropListeners.java
deleted file mode 100644
index a976ead..0000000
--- a/src/com/android/dialer/list/PhoneFavoriteDragAndDropListeners.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * 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.
- */
-package com.android.dialer.list;
-
-import android.graphics.Rect;
-import android.util.Log;
-import android.view.DragEvent;
-import android.view.View;
-import android.view.View.OnDragListener;
-
-import com.android.dialer.list.PhoneFavoritesTileAdapter.ContactTileRow;
-
-/**
- * Implements the OnLongClickListener and OnDragListener for phone's favorite tiles and rows.
- */
-public class PhoneFavoriteDragAndDropListeners {
-
- private static final String TAG = PhoneFavoriteDragAndDropListeners.class.getSimpleName();
- private static final boolean DEBUG = false;
-
- /**
- * Implements the OnDragListener to handle drag events.
- */
- public static class PhoneFavoriteDragListener implements OnDragListener {
- /** Location of the drag event. */
- private float mX = 0;
- private float mY = 0;
- private final ContactTileRow mContactTileRow;
- private final PhoneFavoritesTileAdapter mTileAdapter;
-
- public PhoneFavoriteDragListener(ContactTileRow contactTileRow,
- PhoneFavoritesTileAdapter tileAdapter) {
- super();
- mContactTileRow = contactTileRow;
- mTileAdapter = tileAdapter;
- }
-
- @Override
- public boolean onDrag(View v, DragEvent event) {
- if (DEBUG) {
- Log.v(TAG, event.toString());
- }
- // Handles drag events.
- switch (event.getAction()) {
- case DragEvent.ACTION_DRAG_STARTED:
- if (mTileAdapter != null && mContactTileRow != null
- && !mTileAdapter.getInDragging()) {
- mX = event.getX();
- mY = event.getY();
- if (DEBUG) {
- Log.v(TAG, String.valueOf(mX) + "; " + String.valueOf(mY));
- }
-
- final int[] rowLocation = new int[2];
- mContactTileRow.getLocationOnScreen(rowLocation);
-
- final Rect locationRect = new Rect(rowLocation[0], rowLocation[1],
- rowLocation[0] + mContactTileRow.getWidth(),
- rowLocation[1] + mContactTileRow.getHeight());
-
- if (locationRect.contains((int) mX, (int) mY)) {
- // Finds out which item is being dragged.
- // Computes relative coordinates as we get absolute coordinates.
- final int dragIndex = mContactTileRow.getItemIndex(
- mX - rowLocation[0], mY - rowLocation[1]);
- if (DEBUG) {
- Log.v(TAG, "Start dragging " + String.valueOf(dragIndex));
- }
- // Indicates a drag has started.
- mTileAdapter.setInDragging(true);
-
- // Temporarily pops out the Contact entry.
- mTileAdapter.popContactEntry(dragIndex);
- }
- }
- break;
- case DragEvent.ACTION_DRAG_ENTERED:
- break;
- case DragEvent.ACTION_DRAG_EXITED:
- break;
- case DragEvent.ACTION_DROP:
- mX = event.getX();
- mY = event.getY();
- if (DEBUG) {
- Log.v(TAG, String.valueOf(mX) + "; " + String.valueOf(mY));
- }
-
- // Indicates a drag has finished.
- if (mTileAdapter != null && mContactTileRow != null) {
- mTileAdapter.setInDragging(false);
-
- // Finds out at which position of the list the Contact is being dropped.
- final int dropIndex = mContactTileRow.getItemIndex(mX, mY);
- if (DEBUG) {
- Log.v(TAG, "Stop dragging " + String.valueOf(dropIndex));
- }
-
- // Adds the dragged contact to the drop position.
- mTileAdapter.dropContactEntry(dropIndex);
- }
- break;
- case DragEvent.ACTION_DRAG_ENDED:
- if (mTileAdapter.getInDragging()) {
- // If the drag and drop ends when the drop happens outside of any rows,
- // we will end the drag here and put the item back to where it was dragged
- // from before.
- mTileAdapter.setInDragging(false);
- mTileAdapter.dropToUnsupportedView();
- }
- break;
- case DragEvent.ACTION_DRAG_LOCATION:
- break;
- default:
- break;
- }
- return true;
- }
- }
-}
diff --git a/src/com/android/dialer/list/PhoneFavoriteFragment.java b/src/com/android/dialer/list/PhoneFavoriteFragment.java
index c2a1b03..73703a0 100644
--- a/src/com/android/dialer/list/PhoneFavoriteFragment.java
+++ b/src/com/android/dialer/list/PhoneFavoriteFragment.java
@@ -15,15 +15,23 @@
*/
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;
+import android.content.Context;
import android.content.CursorLoader;
import android.content.Loader;
+import android.content.SharedPreferences;
import android.database.Cursor;
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;
@@ -33,15 +41,19 @@
import android.widget.AbsListView;
import android.widget.AdapterView;
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;
import com.android.contacts.common.GeoUtil;
import com.android.contacts.common.list.ContactEntry;
import com.android.contacts.common.list.ContactTileView;
+import com.android.dialer.DialtactsActivity;
import com.android.dialer.R;
+import com.android.dialer.calllog.CallLogQuery;
import com.android.dialer.calllog.ContactInfoHelper;
import com.android.dialer.calllog.CallLogAdapter;
import com.android.dialer.calllog.CallLogQueryHandler;
@@ -63,15 +75,28 @@
CallLogQueryHandler.Listener, CallLogAdapter.CallFetcher,
PhoneFavoritesTileAdapter.OnDataSetChangedForAnimationListener {
- private static final String TAG = PhoneFavoriteFragment.class.getSimpleName();
- private static final boolean DEBUG = true;
+ /**
+ * 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 int ANIMATION_DURATION = 300;
+ private static final String TAG = PhoneFavoriteFragment.class.getSimpleName();
+ private static final boolean DEBUG = false;
+
+ private int mAnimationDuration;
/**
* 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";
public interface OnShowAllContactsListener {
public void onShowAllContacts();
@@ -82,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) {
@@ -93,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
@@ -144,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>();
@@ -156,6 +209,17 @@
*/
private View mEmptyView;
+ /**
+ * Call shortcuts older than this date (persisted in shared preferences) will not show up in
+ * at the top of the screen
+ */
+ private long mLastCallShortcutDate = 0;
+
+ /**
+ * The date of the current call shortcut that is showing on screen.
+ */
+ private long mCurrentCallShortcutDate = 0;
+
private final ContactTileView.Listener mContactTileAdapterListener =
new ContactTileAdapterListener();
private final LoaderManager.LoaderCallbacks<Cursor> mContactTileLoaderListener =
@@ -182,6 +246,7 @@
if (DEBUG) Log.d(TAG, "onCreate()");
super.onCreate(savedState);
+ mAnimationDuration = getResources().getInteger(R.integer.fade_duration);
mCallLogQueryHandler = new CallLogQueryHandler(getActivity().getContentResolver(),
this, 1);
final String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
@@ -193,7 +258,12 @@
@Override
public void onResume() {
super.onResume();
- mCallLogQueryHandler.fetchNewCalls(CallLogQueryHandler.CALL_TYPE_ALL);
+ final SharedPreferences prefs = getActivity().getSharedPreferences(
+ DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
+
+ mLastCallShortcutDate = prefs.getLong(KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE, 0);
+
+ fetchCalls();
mCallLogAdapter.setLoading(true);
getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE).forceLoad();
}
@@ -201,18 +271,31 @@
@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);
mListView.setVerticalScrollbarPosition(View.SCROLLBAR_POSITION_RIGHT);
mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
mListView.setOnItemSwipeListener(mContactTileAdapter);
+ mListView.setOnDragDropListener(mContactTileAdapter);
- mEmptyView = inflater.inflate(R.layout.phone_no_favorites, mListView, false);
+ final ImageView dragShadowOverlay =
+ (ImageView) mParentView.findViewById(R.id.contact_tile_drag_shadow_overlay);
+ mListView.setDragShadowOverlay(dragShadowOverlay);
+
+ 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);
@@ -223,9 +306,15 @@
}
});
- mContactTileAdapter.setEmptyView(mEmptyView);
- mAdapter = new PhoneFavoriteMergedAdapter(getActivity(), mContactTileAdapter,
- mCallLogAdapter, mShowAllContactsButton);
+ 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, mTileInteractionTeaserView);
+
+ mTileInteractionTeaserView.setAdapter(mAdapter);
mListView.setAdapter(mAdapter);
@@ -233,7 +322,7 @@
mListView.setFastScrollEnabled(false);
mListView.setFastScrollAlwaysVisible(false);
- return listLayout;
+ return mParentView;
}
public boolean hasFrequents() {
@@ -241,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();
@@ -265,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());
}
/**
@@ -293,27 +396,37 @@
mListener = listener;
}
- // TODO krelease: Implement this
@Override
public void onVoicemailStatusFetched(Cursor statusCursor) {
+ // no-op
}
@Override
public void onCallsFetched(Cursor cursor) {
+ animateListView();
mCallLogAdapter.setLoading(false);
+
+ // Save the date of the most recent call log item
+ if (cursor != null && cursor.moveToFirst()) {
+ mCurrentCallShortcutDate = cursor.getLong(CallLogQuery.DATE);
+ }
+
mCallLogAdapter.changeCursor(cursor);
mAdapter.notifyDataSetChanged();
}
- // TODO krelease: Implement this
@Override
public void fetchCalls() {
+ mCallLogQueryHandler.fetchCalls(CallLogQueryHandler.CALL_TYPE_ALL, mLastCallShortcutDate);
}
@Override
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();
}
@@ -321,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());
@@ -334,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: "
@@ -342,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);
@@ -366,30 +480,41 @@
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);
- // Skip animation for this view if the caller specified that it should be
- // kept in place
- if (containsId(idsInPlace, itemId)) continue;
-
- Integer startLeft = mItemIdLeftMap.get(itemId);
- int left = child.getLeft();
- if (DEBUG) {
- Log.d(TAG, "Found itemId: " + itemId + " for tileview child " + i +
- " Left: " + left);
- }
- if (startLeft != null) {
- if (startLeft != left) {
- int delta = startLeft - left;
- child.setTranslationX(delta);
- child.animate().setDuration(ANIMATION_DURATION).translationX(0);
+ if (containsId(idsInPlace, itemId)) {
+ 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));
}
}
- // No need to worry about horizontal offsets of new views that come into view since
- // there is no horizontal scrolling involved.
+ }
+ if (animators.size() > 0) {
+ animSet.setDuration(mAnimationDuration).playTogether(animators);
+ animSet.start();
}
}
@@ -404,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")
@@ -411,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;
@@ -423,35 +553,55 @@
final long itemId = mAdapter.getItemId(position);
- // Skip animation for this view if the caller specified that it should be
- // kept in place
- if (containsId(idsInPlace, itemId)) continue;
+ if (containsId(idsInPlace, itemId)) {
+ animators.add(ObjectAnimator.ofFloat(
+ child, "alpha", 0.0f, 1.0f));
+ break;
+ } else {
+ Integer startTop = mItemIdTopMap.get(itemId);
+ final int top = child.getTop();
+ int delta = 0;
+ if (startTop != null) {
+ if (startTop != top) {
+ delta = startTop - top;
+ }
+ } else if (!mItemIdLeftMap.containsKey(itemId)) {
+ // 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.
- 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) {
+ 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));
}
- } else if (!mItemIdLeftMap.containsKey(itemId)) {
- // 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);
- delta = startTop - top;
- }
+ 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(ANIMATION_DURATION).translationY(0);
+ if (delta != 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;
@@ -476,6 +626,16 @@
@Override
public void cacheOffsetsForDatasetChange() {
- saveOffsets();
+ saveOffsets(0);
+ }
+
+ public void dismissShortcut(int height) {
+ saveOffsets(height);
+ mLastCallShortcutDate = mCurrentCallShortcutDate;
+ final SharedPreferences prefs = getActivity().getSharedPreferences(
+ DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
+ prefs.edit().putLong(KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE, mLastCallShortcutDate)
+ .apply();
+ fetchCalls();
}
}
diff --git a/src/com/android/dialer/list/PhoneFavoriteListView.java b/src/com/android/dialer/list/PhoneFavoriteListView.java
index b5da054..99979dd 100644
--- a/src/com/android/dialer/list/PhoneFavoriteListView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteListView.java
@@ -17,16 +17,20 @@
package com.android.dialer.list;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
import android.content.Context;
import android.content.res.Configuration;
+import android.graphics.Bitmap;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.Log;
import android.view.DragEvent;
import android.view.MotionEvent;
import android.view.View;
-import android.view.View.OnDragListener;
import android.view.ViewConfiguration;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
import android.widget.ListView;
import com.android.dialer.R;
@@ -40,8 +44,7 @@
* - Swiping, which is borrowed from packages/apps/UnifiedEmail (com.android.mail.ui.Swipeable)
* - Drag and drop
*/
-public class PhoneFavoriteListView extends ListView implements
- SwipeHelperCallback, OnDragListener {
+public class PhoneFavoriteListView extends ListView implements SwipeHelperCallback {
public static final String LOG_TAG = PhoneFavoriteListView.class.getSimpleName();
@@ -49,6 +52,7 @@
private boolean mEnableSwipe = true;
private OnItemGestureListener mOnItemGestureListener;
+ private OnDragDropListener mOnDragDropListener;
private float mDensityScale;
private float mTouchSlop;
@@ -61,6 +65,24 @@
private final long SCROLL_HANDLER_DELAY_MILLIS = 5;
private final int DRAG_SCROLL_PX_UNIT = 10;
+ private boolean mIsDragScrollerRunning = false;
+ private int mTouchDownForDragStartX;
+ private int mTouchDownForDragStartY;
+
+ private Bitmap mDragShadowBitmap;
+ private ImageView mDragShadowOverlay;
+ private int mAnimationDuration;
+
+ // X and Y offsets inside the item from where the user grabbed to the
+ // child's left coordinate. This is used to aid in the drawing of the drag shadow.
+ private int mTouchOffsetToChildLeft;
+ private int mTouchOffsetToChildTop;
+
+ private int mDragShadowLeft;
+ private int mDragShadowTop;
+
+ private final float DRAG_SHADOW_ALPHA = 0.7f;
+
/**
* {@link #mTopScrollBound} and {@link mBottomScrollBound} will be
* offseted to the top / bottom by {@link #getHeight} * {@link #BOUND_GAP_RATIO} pixels.
@@ -79,6 +101,19 @@
}
};
+ private final AnimatorListenerAdapter mDragShadowOverAnimatorListener =
+ new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (mDragShadowBitmap != null) {
+ mDragShadowBitmap.recycle();
+ mDragShadowBitmap = null;
+ }
+ mDragShadowOverlay.setVisibility(GONE);
+ mDragShadowOverlay.setImageBitmap(null);
+ }
+ };
+
public PhoneFavoriteListView(Context context) {
this(context, null);
}
@@ -89,12 +124,12 @@
public PhoneFavoriteListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
+ mAnimationDuration = context.getResources().getInteger(R.integer.fade_duration);
mDensityScale = getResources().getDisplayMetrics().density;
mTouchSlop = ViewConfiguration.get(context).getScaledPagingTouchSlop();
mSwipeHelper = new SwipeHelper(context, SwipeHelper.X, this,
mDensityScale, mTouchSlop);
setItemsCanFocus(true);
- setOnDragListener(this);
}
@Override
@@ -121,8 +156,16 @@
mOnItemGestureListener = listener;
}
+ public void setOnDragDropListener(OnDragDropListener listener) {
+ mOnDragDropListener = listener;
+ }
+
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
+ if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+ mTouchDownForDragStartX = (int) ev.getX();
+ mTouchDownForDragStartY = (int) ev.getY();
+ }
if (isSwipeEnabled()) {
return mSwipeHelper.onInterceptTouchEvent(ev) || super.onInterceptTouchEvent(ev);
} else {
@@ -144,24 +187,13 @@
@Override
public View getChildAtPosition(MotionEvent ev) {
- // find the view under the pointer, accounting for GONE views
- final int count = getChildCount();
- final int touchY = (int) ev.getY();
- View slidingChild;
- for (int childIdx = 0; childIdx < count; childIdx++) {
- slidingChild = getChildAt(childIdx);
- if (slidingChild.getVisibility() == GONE) {
- continue;
- }
- if (touchY >= slidingChild.getTop() && touchY <= slidingChild.getBottom()) {
- if (SwipeHelper.isSwipeable(slidingChild)) {
- // If this view is swipable in this listview, then return it. Otherwise
- // return a null view, which will simply be ignored by the swipe helper.
- return slidingChild;
- } else {
- return null;
- }
- }
+ final View view = getViewAtPosition((int) ev.getX(), (int) ev.getY());
+ if (view != null &&
+ SwipeHelper.isSwipeable(view) &&
+ view.getVisibility() != GONE) {
+ // If this view is swipable in this listview, then return it. Otherwise
+ // return a null view, which will simply be ignored by the swipe helper.
+ return view;
}
return null;
}
@@ -189,8 +221,7 @@
}
@Override
- public void onDragCancelled(View v) {
- }
+ public void onDragCancelled(View v) {}
@Override
public void onBeginDrag(View v) {
@@ -203,13 +234,26 @@
@Override
public boolean dispatchDragEvent(DragEvent event) {
- switch (event.getAction()) {
+ final int action = event.getAction();
+ final int eX = (int) event.getX();
+ final int eY = (int) event.getY();
+ switch (action) {
+ case DragEvent.ACTION_DRAG_STARTED:
+ if (!handleDragStarted(mTouchDownForDragStartX, mTouchDownForDragStartY)) {
+ return false;
+ };
+ break;
case DragEvent.ACTION_DRAG_LOCATION:
- if (mScrollHandler == null) {
- mScrollHandler = getHandler();
+ mLastDragY = eY;
+ handleDragHovered(eX, eY);
+ // Kick off {@link #mScrollHandler} if it's not started yet.
+ if (!mIsDragScrollerRunning &&
+ // And if the distance traveled while dragging exceeds the touch slop
+ (Math.abs(mLastDragY - mTouchDownForDragStartY) >= 4 * mTouchSlop)) {
+ mIsDragScrollerRunning = true;
+ ensureScrollHandler();
+ mScrollHandler.postDelayed(mDragScroller, SCROLL_HANDLER_DELAY_MILLIS);
}
- mLastDragY = (int) event.getY();
- mScrollHandler.postDelayed(mDragScroller, SCROLL_HANDLER_DELAY_MILLIS);
break;
case DragEvent.ACTION_DRAG_ENTERED:
final int boundGap = (int) (getHeight() * BOUND_GAP_RATIO);
@@ -218,20 +262,173 @@
break;
case DragEvent.ACTION_DRAG_EXITED:
case DragEvent.ACTION_DRAG_ENDED:
- mScrollHandler.removeCallbacks(mDragScroller);
- break;
- case DragEvent.ACTION_DRAG_STARTED:
- // Not a receiver
case DragEvent.ACTION_DROP:
- // Not a receiver
+ ensureScrollHandler();
+ mScrollHandler.removeCallbacks(mDragScroller);
+ mIsDragScrollerRunning = false;
+ // 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;
default:
break;
}
- return super.dispatchDragEvent(event);
+ // This ListView will consumer the drag events on behalf of its children.
+ return true;
}
- @Override
- public boolean onDrag(View v, DragEvent event) {
+ public void setDragShadowOverlay(ImageView overlay) {
+ mDragShadowOverlay = overlay;
+ }
+
+ /**
+ * Find the view under the pointer.
+ */
+ private View getViewAtPosition(int x, int y) {
+ final int count = getChildCount();
+ View child;
+ for (int childIdx = 0; childIdx < count; childIdx++) {
+ child = getChildAt(childIdx);
+ if (y >= child.getTop() && y <= child.getBottom()) {
+ return child;
+ }
+ }
+ return null;
+ }
+
+ private void ensureScrollHandler() {
+ if (mScrollHandler == null) {
+ mScrollHandler = getHandler();
+ }
+ }
+
+ /**
+ * @return True if the drag is started.
+ */
+ private boolean handleDragStarted(int x, int y) {
+ final View child = getViewAtPosition(x, y);
+ if (!(child instanceof ContactTileRow)) {
+ // Bail early.
+ return false;
+ }
+
+ 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 =
+ (PhoneFavoriteTileView) tile.getViewAtPosition(x, y);
+ if (mDragShadowOverlay == null) {
+ return false;
+ }
+
+ mDragShadowOverlay.clearAnimation();
+ mDragShadowBitmap = createDraggedChildBitmap(tileView);
+ if (mDragShadowBitmap == null) {
+ return false;
+ }
+
+ if (tileView instanceof PhoneFavoriteRegularRowView) {
+ mDragShadowLeft = tile.getLeft();
+ mDragShadowTop = tile.getTop();
+ } else {
+ // Square tile is relative to the contact tile,
+ // and contact tile is relative to this list view.
+ mDragShadowLeft = tileView.getLeft() + tileView.getParentRow().getLeft();
+ mDragShadowTop = tileView.getTop() + tileView.getParentRow().getTop();
+ }
+
+ mDragShadowOverlay.setImageBitmap(mDragShadowBitmap);
+ mDragShadowOverlay.setVisibility(VISIBLE);
+ mDragShadowOverlay.setAlpha(DRAG_SHADOW_ALPHA);
+
+ 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
+ // drawing the drag shadow.
+ mTouchOffsetToChildLeft = x - mDragShadowLeft;
+ mTouchOffsetToChildTop = y - mDragShadowTop;
+
+ // invalidate to trigger a redraw of the drag shadow.
+ invalidate();
+
+ mOnDragDropListener.onDragStarted(itemIndex);
+ }
+
return true;
}
+
+ 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;
+ }
+
+ final ContactTileRow tile = (ContactTileRow) child;
+ final int itemIndex = tile.getItemIndex(x, y);
+ if (itemIndex != -1 && mOnDragDropListener != null) {
+ mOnDragDropListener.onDragHovered(itemIndex);
+ }
+ }
+
+ private void handleDragFinished(int x, int y) {
+ // Update the drag shadow location.
+ mDragShadowLeft = x - mTouchOffsetToChildLeft;
+ mDragShadowTop = y - mTouchOffsetToChildTop;
+
+ if (mDragShadowOverlay != null) {
+ mDragShadowOverlay.clearAnimation();
+ mDragShadowOverlay.animate().alpha(0.0f)
+ .setDuration(mAnimationDuration)
+ .setListener(mDragShadowOverAnimatorListener)
+ .start();
+ }
+
+ if (mOnDragDropListener != null) {
+ mOnDragDropListener.onDragFinished();
+ }
+ }
+
+ private Bitmap createDraggedChildBitmap(View view) {
+ view.setDrawingCacheEnabled(true);
+ final Bitmap cache = view.getDrawingCache();
+
+ Bitmap bitmap = null;
+ if (cache != null) {
+ try {
+ bitmap = cache.copy(Bitmap.Config.ARGB_8888, false);
+ } catch (final OutOfMemoryError e) {
+ Log.w(LOG_TAG, "Failed to copy bitmap from Drawing cache", e);
+ bitmap = null;
+ }
+ }
+
+ view.destroyDrawingCache();
+ view.setDrawingCacheEnabled(false);
+
+ return bitmap;
+ }
+
+ public interface OnDragDropListener {
+ public void onDragStarted(int itemIndex);
+ public void onDragHovered(int itemIndex);
+ public void onDragFinished();
+ }
}
diff --git a/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java b/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java
index c7554e2..daba39e 100644
--- a/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java
@@ -49,10 +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;
@@ -70,7 +74,7 @@
mCallLogQueryHandler.markNewVoicemailsAsOld();
CallLogNotificationsHelper.removeMissedCallNotifications();
CallLogNotificationsHelper.updateVoicemailNotifications(mContext);
- mCallLogQueryHandler.fetchNewCalls(CallLogQueryHandler.CALL_TYPE_ALL);
+ mFragment.dismissShortcut(((View) view.getParent()).getHeight());
}
@Override
@@ -96,11 +100,14 @@
};
public PhoneFavoriteMergedAdapter(Context context,
+ PhoneFavoriteFragment fragment,
PhoneFavoritesTileAdapter contactTileAdapter,
CallLogAdapter callLogAdapter,
- View showAllContactsButton) {
+ View showAllContactsButton,
+ TileInteractionTeaserView tileInteractionTeaserView) {
final Resources resources = context.getResources();
mContext = context;
+ mFragment = fragment;
mCallLogPadding = resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding);
mContactTileAdapter = contactTileAdapter;
mCallLogAdapter = callLogAdapter;
@@ -108,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
@@ -131,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);
}
@@ -143,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,
@@ -154,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;
@@ -170,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
@@ -181,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));
@@ -195,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;
@@ -216,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()) {
@@ -254,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);
}
/**
@@ -318,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 374f733..91b09d7 100644
--- a/src/com/android/dialer/list/PhoneFavoriteRegularRowView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteRegularRowView.java
@@ -18,15 +18,10 @@
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.PhoneFavoriteDragAndDropListeners.PhoneFavoriteDragListener;
-
-import com.android.dialer.list.PhoneFavoritesTileAdapter.ContactTileRow;
-
public class PhoneFavoriteRegularRowView extends PhoneFavoriteTileView {
private static final String TAG = PhoneFavoriteRegularRowView.class.getSimpleName();
@@ -57,7 +52,7 @@
rowPaddingBottom = resources.getDimensionPixelSize(
R.dimen.favorites_row_bottom_padding);
- favoriteContactCard.setBackgroundResource(R.drawable.bottom_border_background);
+ favoriteContactCard.setBackgroundResource(R.drawable.contact_list_item_background);
favoriteContactCard.setPaddingRelative(rowPaddingStart, rowPaddingTop, rowPaddingEnd,
rowPaddingBottom);
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 43dbad3..371c805 100644
--- a/src/com/android/dialer/list/PhoneFavoriteTileView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteTileView.java
@@ -28,11 +28,12 @@
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;
import com.android.contacts.common.list.ContactTileView;
-import com.android.dialer.list.PhoneFavoriteDragAndDropListeners.PhoneFavoriteDragListener;
+import com.android.dialer.R;
import com.android.dialer.list.PhoneFavoritesTileAdapter.ContactTileRow;
import com.android.dialer.list.PhoneFavoritesTileAdapter.ViewTypes;
@@ -49,7 +50,7 @@
private static final boolean DEBUG = false;
/** Length of all animations in miniseconds. */
- private static final int ANIMATION_LENGTH = 300;
+ private int mAnimationDuration;
/** The view that holds the front layer of the favorite contact card. */
private View mFavoriteContactCard;
@@ -59,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;
@@ -66,8 +69,13 @@
/** 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);
}
public ContactTileRow getParentRow() {
@@ -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,18 +101,18 @@
setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
- setPressed(false);
final PhoneFavoriteTileView view = (PhoneFavoriteTileView) v;
- final ClipData data = ClipData.newPlainText("", "");
+ // NOTE The drag shadow is handled in the ListView.
if (view instanceof PhoneFavoriteRegularRowView) {
+ final ContactTileRow parent = view.getParentRow();
// If the view is regular row, start drag the row view.
- final View.DragShadowBuilder shadowBuilder =
- new View.DragShadowBuilder(view.getParentRow());
- view.getParentRow().startDrag(data, shadowBuilder, null, 0);
+ // Drag is not available for the item exceeds the PIN_LIMIT.
+ if (parent.getRegularRowItemIndex() < PhoneFavoritesTileAdapter.PIN_LIMIT) {
+ parent.startDrag(EMPTY_CLIP_DATA, new View.DragShadowBuilder(), null, 0);
+ }
} else {
// If the view is a tile view, start drag the tile.
- final View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
- view.startDrag(data, shadowBuilder, null, 0);
+ view.startDrag(EMPTY_CLIP_DATA, new View.DragShadowBuilder(), null, 0);
}
return true;
}
@@ -117,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.
@@ -132,7 +143,7 @@
mRemovalDialogue.setVisibility(VISIBLE);
mRemovalDialogue.setAlpha(0f);
final ObjectAnimator fadeIn = ObjectAnimator.ofFloat(mRemovalDialogue, "alpha",
- 1.f).setDuration(ANIMATION_LENGTH);
+ 1.f).setDuration(mAnimationDuration);
fadeIn.addListener(new AnimatorListenerAdapter() {
@Override
@@ -158,9 +169,9 @@
// Animates back the favorite contact card.
final ObjectAnimator fadeIn = ObjectAnimator.ofFloat(mFavoriteContactCard, "alpha", 1.f).
- setDuration(ANIMATION_LENGTH);
+ setDuration(mAnimationDuration);
final ObjectAnimator moveBack = ObjectAnimator.ofFloat(mFavoriteContactCard, "translationX",
- 0.f).setDuration(ANIMATION_LENGTH);
+ 0.f).setDuration(mAnimationDuration);
final AnimatorSet animSet = new AnimatorSet();
@@ -201,8 +212,6 @@
@Override
protected void onAttachedToWindow() {
mParentRow = (ContactTileRow) getParent();
- mParentRow.setOnDragListener(new PhoneFavoriteDragListener(mParentRow,
- mParentRow.getTileAdapter()));
}
@Override
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
index 9662338..e28fd73 100644
--- a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
@@ -21,7 +21,6 @@
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
-import android.graphics.Rect;
import android.net.Uri;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
@@ -62,7 +61,7 @@
*
*/
public class PhoneFavoritesTileAdapter extends BaseAdapter implements
- SwipeHelper.OnItemGestureListener {
+ SwipeHelper.OnItemGestureListener, PhoneFavoriteListView.OnDragDropListener {
private static final String TAG = PhoneFavoritesTileAdapter.class.getSimpleName();
private static final boolean DEBUG = false;
@@ -74,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. */
@@ -84,6 +81,8 @@
private int mDraggedEntryIndex = -1;
/** New position of the temporarily removed contact in the cache. */
private int mDropEntryIndex = -1;
+ /** New position of the temporarily entered contact in the cache. */
+ private int mDragEnteredEntryIndex = -1;
/** Position of the contact pending removal. */
private int mPotentialRemoveEntryIndex = -1;
private long mIdToKeepInPlace = -1;
@@ -105,23 +104,19 @@
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;
/** Indicates whether a drag is in process. */
private boolean mInDragging = false;
- private static final int PIN_LIMIT = 20;
+ public static final int PIN_LIMIT = 20;
/**
* The soft limit on how many contact tiles to show.
@@ -207,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;
}
/**
@@ -260,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;
@@ -273,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;
}
@@ -293,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();
@@ -302,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++;
}
@@ -369,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();
@@ -406,7 +392,7 @@
return mColumnCount * mMaxTiledRows;
}
- protected int getRowIndex(int entryIndex) {
+ public int getRowIndex(int entryIndex) {
if (entryIndex < mMaxTiledRows * mColumnCount) {
return entryIndex / mColumnCount;
} else {
@@ -459,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;
}
}
@@ -500,7 +486,7 @@
@Override
public boolean isEnabled(int position) {
- return !isEmptyView(position);
+ return getCount() > 0;
}
@Override
@@ -519,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);
@@ -554,7 +540,6 @@
@Override
public int getItemViewType(int position) {
- if (isEmptyView(position)) return ViewTypes.EMPTY;
if (position < getRowCount(getMaxContactsInTiles())) {
return ViewTypes.TOP;
} else {
@@ -569,34 +554,62 @@
* @param index Position of the contact to be removed.
*/
public void popContactEntry(int index) {
- if (index >= 0 && index < mContactEntries.size()) {
+ if (isIndexInBound(index)) {
mDraggedEntry = mContactEntries.get(index);
- mContactEntries.set(index, ContactEntry.BLANK_ENTRY);
- ContactEntry.BLANK_ENTRY.id = mDraggedEntry.id;
mDraggedEntryIndex = index;
+ mDragEnteredEntryIndex = index;
+ markDropArea(mDragEnteredEntryIndex);
+ }
+ }
+
+ /**
+ * @param itemIndex Position of the contact in {@link #mContactEntries}.
+ * @return True if the given index is valid for {@link #mContactEntries}.
+ */
+ private boolean isIndexInBound(int itemIndex) {
+ return itemIndex >= 0 && itemIndex < mContactEntries.size();
+ }
+
+ /**
+ * Mark the tile as drop area by given the item index in {@link #mContactEntries}.
+ *
+ * @param itemIndex Position of the contact in {@link #mContactEntries}.
+ */
+ 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();
}
}
/**
* Drops the temporarily removed contact to the desired location in the list.
- *
- * @param index Location where the contact will be dropped.
*/
- public void dropContactEntry(int index) {
+ public void handleDrop() {
boolean changed = false;
if (mDraggedEntry != null) {
- if (index >= 0 && index <= mContactEntries.size()) {
+ if (isIndexInBound(mDragEnteredEntryIndex) &&
+ mDragEnteredEntryIndex != mDraggedEntryIndex) {
// Don't add the ContactEntry here (to prevent a double animation from occuring).
// When we receive a new cursor the list of contact entries will automatically be
// populated with the dragged ContactEntry at the correct spot.
- mDropEntryIndex = index;
+ mDropEntryIndex = mDragEnteredEntryIndex;
+ mContactEntries.set(mDropEntryIndex, mDraggedEntry);
mIdToKeepInPlace = getAdjustedItemId(mDraggedEntry.id);
mDataSetChangedListener.cacheOffsetsForDatasetChange();
changed = true;
- } else if (mDraggedEntryIndex >= 0 && mDraggedEntryIndex <= mContactEntries.size()) {
- /** If the index is invalid, falls back to the original position of the contact. */
- mContactEntries.set(mDraggedEntryIndex, mDraggedEntry);
+ } else if (isIndexInBound(mDraggedEntryIndex)) {
+ // If {@link #mDragEnteredEntryIndex} is invalid,
+ // falls back to the original position of the contact.
+ mContactEntries.remove(mDragEnteredEntryIndex);
+ mContactEntries.add(mDraggedEntryIndex, mDraggedEntry);
mDropEntryIndex = mDraggedEntryIndex;
notifyDataSetChanged();
}
@@ -604,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);
}
@@ -618,7 +630,11 @@
* contact back to where it was dragged from.
*/
public void dropToUnsupportedView() {
- dropContactEntry(-1);
+ if (isIndexInBound(mDragEnteredEntryIndex)) {
+ mContactEntries.remove(mDragEnteredEntryIndex);
+ mContactEntries.add(mDraggedEntryIndex, mDraggedEntry);
+ notifyDataSetChanged();
+ }
}
/**
@@ -638,7 +654,7 @@
*/
public boolean removePendingContactEntry() {
boolean removed = false;
- if (mPotentialRemoveEntryIndex >= 0 && mPotentialRemoveEntryIndex < mContactEntries.size()) {
+ if (isIndexInBound(mPotentialRemoveEntryIndex)) {
final ContactEntry entry = mContactEntries.get(mPotentialRemoveEntryIndex);
unstarAndUnpinContact(entry.lookupKey);
removed = true;
@@ -655,12 +671,17 @@
mPotentialRemoveEntryIndex = -1;
}
+ public boolean hasPotentialRemoveEntryIndex() {
+ return isIndexInBound(mPotentialRemoveEntryIndex);
+ }
+
/**
* Clears all temporary variables at a new interaction.
*/
public void cleanTempVariables() {
mDraggedEntryIndex = -1;
mDropEntryIndex = -1;
+ mDragEnteredEntryIndex = -1;
mDraggedEntry = null;
mPotentialRemoveEntryIndex = -1;
}
@@ -755,7 +776,6 @@
setVisibility(View.VISIBLE);
}
}
- setPressed(false);
}
private void addTileFromEntry(ContactEntry entry, int childIndex, boolean isLastRow) {
@@ -790,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(
@@ -830,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;
}
}
@@ -898,18 +919,21 @@
*/
public int getItemIndex(float itemX, float itemY) {
if (mPosition < mMaxTiledRows) {
- final Rect childRect = new Rect();
if (DEBUG) {
Log.v(TAG, String.valueOf(itemX) + " " + String.valueOf(itemY));
}
for (int i = 0; i < getChildCount(); ++i) {
/** If the row contains multiple tiles, checks each tile to see if the point
* is contained in the tile. */
- getChildAt(i).getHitRect(childRect);
- if (DEBUG) {
- Log.v(TAG, childRect.toString());
- }
- if (childRect.contains((int)itemX, (int)itemY)) {
+ final View child = getChildAt(i);
+ /** The coordinates passed in are based on the ListView,
+ * translate for each child first */
+ final int xInListView = child.getLeft() + getLeft();
+ final int yInListView = child.getTop() + getTop();
+ final int distanceX = (int) itemX - xInListView;
+ final int distanceY = (int) itemY - yInListView;
+ if ((distanceX > 0 && distanceX < child.getWidth()) &&
+ (distanceY > 0 && distanceY < child.getHeight())) {
/** If the point is contained in the rectangle, computes the index of the
* item in the cached array. */
return i + (mPosition) * mColumnCount;
@@ -917,11 +941,20 @@
}
} else {
/** If the selected item is one of the rows, compute the index. */
- return (mPosition - mMaxTiledRows) + mColumnCount * mMaxTiledRows;
+ return getRegularRowItemIndex();
}
return -1;
}
+ /**
+ * Gets the index of the regular row item.
+ *
+ * @return Index of the selected item in the cached array.
+ */
+ public int getRegularRowItemIndex() {
+ return (mPosition - mMaxTiledRows) + mColumnCount * mMaxTiledRows;
+ }
+
public PhoneFavoritesTileAdapter getTileAdapter() {
return PhoneFavoritesTileAdapter.this;
}
@@ -930,27 +963,32 @@
return mPosition;
}
- @Override
- public View getChildAtPosition(MotionEvent ev) {
+ /**
+ * Find the view under the pointer.
+ */
+ public View getViewAtPosition(int x, int y) {
// find the view under the pointer, accounting for GONE views
final int count = getChildCount();
- final int touchX = (int) ev.getX();
- View slidingChild;
+ View view;
for (int childIdx = 0; childIdx < count; childIdx++) {
- slidingChild = getChildAt(childIdx);
- if (slidingChild.getVisibility() == GONE) {
- continue;
+ view = getChildAt(childIdx);
+ if (x >= view.getLeft() && x <= view.getRight()) {
+ return view;
}
- if (touchX >= slidingChild.getLeft() && touchX <= slidingChild.getRight()) {
- if (SwipeHelper.isSwipeable(slidingChild)) {
- // If this view is swipable, then return it. If not, because the removal
- // dialog is currently showing, then return a null view, which will simply
- // be ignored by the swipe helper.
- return slidingChild;
- } else {
- return null;
- }
- }
+ }
+ return null;
+ }
+
+ @Override
+ public View getChildAtPosition(MotionEvent ev) {
+ final View view = getViewAtPosition((int) ev.getX(), (int) ev.getY());
+ if (view != null &&
+ SwipeHelper.isSwipeable(view) &&
+ view.getVisibility() != GONE) {
+ // If this view is swipable, then return it. If not, because the removal
+ // dialog is currently showing, then return a null view, which will simply
+ // be ignored by the swipe helper.
+ return view;
}
return null;
}
@@ -1110,42 +1148,20 @@
ContactEntry entryToPin, int oldPos, int newPinPos) {
final ContentValues cv = new ContentValues();
-
- // Add the dragged contact at the user-requested spot.
- cv.put(String.valueOf(entryToPin.id), newPinPos);
-
- final int listSize = list.size();
- if (oldPos < newPinPos && list.get(listSize - 1).pinned == (listSize - 1)) {
- // The only time we should get here is it we are completely full - i.e. starting
- // from the newly pinned contact to the end of the list, every single contact
- // thereafter is pinned, and a contact is being shifted to the right by the user.
- // Instead of trying to make room to the right, we should thus try to shift contacts
- // to the left instead, working backwards through the list, starting from the contact
- // which just got bumped.
- for (int i = newPinPos; i >= 0; i--) {
- final ContactEntry entry = list.get(i);
- // Once we find an unpinned spot(or a blank entry), we can stop pushing contacts
- // to the left.
- if (entry.pinned > PIN_LIMIT) break;
- cv.put(String.valueOf(entry.id), entry.pinned - 1);
- }
- } else {
- // Shift any pinned contacts to the right as necessary, until an unpinned
- // spot is found
- for (int i = newPinPos; i < PIN_LIMIT && i < list.size(); i++) {
- final ContactEntry entry = list.get(i);
- if (entry.pinned > PIN_LIMIT) break;
- cv.put(String.valueOf(entry.id), entry.pinned + 1);
- }
+ final int lowerBound = Math.min(oldPos, newPinPos);
+ final int upperBound = Math.max(oldPos, newPinPos);
+ for (int i = lowerBound; i <= upperBound; i++) {
+ final ContactEntry entry = list.get(i);
+ if (entry.pinned == i) continue;
+ cv.put(String.valueOf(entry.id), i);
}
return cv;
}
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
@@ -1173,7 +1189,25 @@
return !mAwaitingRemove;
}
- public void setEmptyView(View emptyView) {
- mEmptyView = emptyView;
+ @Override
+ public void onDragStarted(int itemIndex) {
+ setInDragging(true);
+ popContactEntry(itemIndex);
+ }
+
+ @Override
+ public void onDragHovered(int itemIndex) {
+ if (mInDragging &&
+ mDragEnteredEntryIndex != itemIndex &&
+ isIndexInBound(itemIndex) &&
+ itemIndex < PIN_LIMIT) {
+ markDropArea(itemIndex);
+ }
+ }
+
+ @Override
+ public void onDragFinished() {
+ setInDragging(false);
+ handleDrop();
}
}
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 b045934..5745c9d 100644
--- a/src/com/android/dialer/service/CachedNumberLookupService.java
+++ b/src/com/android/dialer/service/CachedNumberLookupService.java
@@ -7,29 +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/PhoneCallDetailsHelperTest.java b/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
index 05c59a7..6a9817f 100644
--- a/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
+++ b/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
@@ -26,8 +26,7 @@
import android.widget.TextView;
import com.android.dialer.calllog.CallTypeHelper;
-import com.android.dialer.calllog.PhoneNumberHelper;
-import com.android.dialer.calllog.TestPhoneNumberHelper;
+import com.android.dialer.calllog.TestPhoneNumberUtilsWrapper;
import com.android.dialer.util.LocaleTestUtils;
import java.util.GregorianCalendar;
@@ -58,7 +57,6 @@
/** The views to fill. */
private PhoneCallDetailsViews mViews;
private TextView mNameView;
- private PhoneNumberHelper mPhoneNumberHelper;
private LocaleTestUtils mLocaleTestUtils;
@Override
@@ -67,8 +65,9 @@
Context context = getContext();
Resources resources = context.getResources();
CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
- mPhoneNumberHelper = new TestPhoneNumberHelper(resources, TEST_VOICEMAIL_NUMBER);
- mHelper = new PhoneCallDetailsHelper(resources, callTypeHelper, mPhoneNumberHelper);
+ final TestPhoneNumberUtilsWrapper phoneUtils = new TestPhoneNumberUtilsWrapper(
+ TEST_VOICEMAIL_NUMBER);
+ mHelper = new PhoneCallDetailsHelper(resources, callTypeHelper, phoneUtils);
mHelper.setCurrentTimeForTest(
new GregorianCalendar(2011, 5, 4, 13, 0, 0).getTimeInMillis());
mViews = PhoneCallDetailsViews.createForTest(context);
@@ -83,7 +82,6 @@
mNameView = null;
mViews = null;
mHelper = null;
- mPhoneNumberHelper = null;
super.tearDown();
}
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));
}
diff --git a/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java b/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java
index 1b793bc..bb940ed 100644
--- a/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java
@@ -57,9 +57,10 @@
Context context = getContext();
Resources resources = context.getResources();
CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
- mPhoneNumberHelper = new TestPhoneNumberHelper(resources, TEST_VOICEMAIL_NUMBER);
+ final TestPhoneNumberUtilsWrapper phoneUtils = new TestPhoneNumberUtilsWrapper(
+ TEST_VOICEMAIL_NUMBER);
PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(
- resources, callTypeHelper, mPhoneNumberHelper);
+ resources, callTypeHelper, phoneUtils);
mHelper = new CallLogListItemHelper(phoneCallDetailsHelper, mPhoneNumberHelper, resources);
mViews = CallLogListItemViews.createForTest(context);
}
diff --git a/tests/src/com/android/dialer/calllog/TestPhoneNumberHelper.java b/tests/src/com/android/dialer/calllog/TestPhoneNumberUtilsWrapper.java
similarity index 68%
rename from tests/src/com/android/dialer/calllog/TestPhoneNumberHelper.java
rename to tests/src/com/android/dialer/calllog/TestPhoneNumberUtilsWrapper.java
index 1446359..0dbd914 100644
--- a/tests/src/com/android/dialer/calllog/TestPhoneNumberHelper.java
+++ b/tests/src/com/android/dialer/calllog/TestPhoneNumberUtilsWrapper.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 The Android Open Source Project
+ * 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.
@@ -11,7 +11,7 @@
* 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.
+ * limitations under the License
*/
package com.android.dialer.calllog;
@@ -19,14 +19,13 @@
import android.content.res.Resources;
/**
- * Modified version of {@link PhoneNumberHelper} to be used in tests that allows injecting the
- * voicemail number.
+ * Modified version of {@link com.android.dialer.calllog.PhoneNumberHelper} to be used in tests
+ * that allows injecting the voicemail number.
*/
-public final class TestPhoneNumberHelper extends PhoneNumberHelper {
+public final class TestPhoneNumberUtilsWrapper extends PhoneNumberUtilsWrapper {
private CharSequence mVoicemailNumber;
- public TestPhoneNumberHelper(Resources resources, CharSequence voicemailNumber) {
- super(resources);
+ public TestPhoneNumberUtilsWrapper(CharSequence voicemailNumber) {
mVoicemailNumber = voicemailNumber;
}