summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.mk13
-rw-r--r--AndroidManifest.xml12
-rw-r--r--res/color/settings_text_color_primary.xml23
-rw-r--r--res/color/settings_text_color_secondary.xml23
-rw-r--r--res/drawable-hdpi/ic_arrow_am.pngbin810 -> 0 bytes
-rw-r--r--res/drawable-hdpi/ic_grade_24dp.pngbin0 -> 370 bytes
-rw-r--r--res/drawable-hdpi/ic_more_vert_24dp.pngbin0 -> 134 bytes
-rw-r--r--res/drawable-hdpi/ic_people_24dp.pngbin0 -> 299 bytes
-rw-r--r--res/drawable-hdpi/ic_schedule_24dp.pngbin0 -> 575 bytes
-rw-r--r--res/drawable-hdpi/overflow_thumbnail.pngbin947 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_ab_dialer_holo_dark.pngbin5665 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_disabled_holo_dark.pngbin5688 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_holo_dark.pngbin5759 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_sound_speakerphone_disabled_holo_dark.pngbin6381 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_sound_speakerphone_holo_dark.pngbin6370 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_dark.pngbin5014 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_disabled_holo_dark.pngbin5005 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_holo_dark.pngbin5034 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_sound_speakerphone_disabled_holo_dark.pngbin5408 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_sound_speakerphone_holo_dark.pngbin5406 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_dark.pngbin6513 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_disabled_holo_dark.pngbin6472 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_holo_dark.pngbin6604 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_disabled_holo_dark.pngbin7505 -> 0 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_holo_dark.pngbin7584 -> 0 bytes
-rw-r--r--res/drawable-mdpi/ic_arrow_am.pngbin648 -> 0 bytes
-rw-r--r--res/drawable-mdpi/ic_grade_24dp.pngbin0 -> 271 bytes
-rw-r--r--res/drawable-mdpi/ic_more_vert_24dp.pngbin0 -> 112 bytes
-rw-r--r--res/drawable-mdpi/ic_people_24dp.pngbin0 -> 210 bytes
-rw-r--r--res/drawable-mdpi/ic_schedule_24dp.pngbin0 -> 377 bytes
-rw-r--r--res/drawable-mdpi/overflow_thumbnail.pngbin692 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/ic_arrow_am.pngbin973 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/ic_grade_24dp.pngbin0 -> 479 bytes
-rw-r--r--res/drawable-xhdpi/ic_more_vert_24dp.pngbin0 -> 158 bytes
-rw-r--r--res/drawable-xhdpi/ic_people_24dp.pngbin0 -> 368 bytes
-rw-r--r--res/drawable-xhdpi/ic_schedule_24dp.pngbin0 -> 737 bytes
-rw-r--r--res/drawable-xhdpi/overflow_thumbnail.pngbin1388 -> 0 bytes
-rw-r--r--res/drawable-xxhdpi/ic_arrow_am.pngbin3272 -> 0 bytes
-rw-r--r--res/drawable-xxhdpi/ic_grade_24dp.pngbin0 -> 676 bytes
-rw-r--r--res/drawable-xxhdpi/ic_more_vert_24dp.pngbin0 -> 216 bytes
-rw-r--r--res/drawable-xxhdpi/ic_people_24dp.pngbin0 -> 488 bytes
-rw-r--r--res/drawable-xxhdpi/ic_schedule_24dp.pngbin0 -> 1107 bytes
-rw-r--r--res/drawable-xxhdpi/overflow_thumbnail.pngbin4576 -> 0 bytes
-rw-r--r--res/drawable-xxxhdpi/ic_grade_24dp.pngbin0 -> 887 bytes
-rw-r--r--res/drawable-xxxhdpi/ic_more_vert_24dp.pngbin0 -> 305 bytes
-rw-r--r--res/drawable-xxxhdpi/ic_people_24dp.pngbin0 -> 636 bytes
-rw-r--r--res/drawable-xxxhdpi/ic_schedule_24dp.pngbin0 -> 1478 bytes
-rw-r--r--res/drawable/tab_contacts.xml (renamed from res/drawable/ic_arrow.xml)20
-rw-r--r--res/drawable/tab_recents.xml (renamed from res/values/ids.xml)22
-rw-r--r--res/drawable/tab_speed_dial.xml (renamed from res/drawable/recent_lists_footer_background.xml)12
-rw-r--r--res/layout/call_detail.xml14
-rw-r--r--res/layout/call_log_list_item.xml6
-rw-r--r--res/layout/call_log_list_item_extra.xml68
-rw-r--r--res/layout/dialer_preferences.xml60
-rw-r--r--res/layout/lists_fragment.xml133
-rw-r--r--res/layout/phone_favorite_tile_view.xml2
-rw-r--r--res/layout/recents_list_footer.xml33
-rw-r--r--res/layout/speed_dial_fragment.xml7
-rw-r--r--res/menu/dialpad_options.xml10
-rw-r--r--res/menu/dialtacts_options.xml4
-rw-r--r--res/mipmap-xxxhdpi/ic_launcher_phone.pngbin27988 -> 8793 bytes
-rw-r--r--res/values-af/strings.xml28
-rw-r--r--res/values-am/strings.xml28
-rw-r--r--res/values-ar/strings.xml36
-rw-r--r--res/values-az-rAZ/strings.xml38
-rw-r--r--res/values-bg/strings.xml28
-rw-r--r--res/values-bn-rBD/strings.xml28
-rw-r--r--res/values-ca/strings.xml28
-rw-r--r--res/values-cs/strings.xml30
-rw-r--r--res/values-da/strings.xml28
-rw-r--r--res/values-de/strings.xml28
-rw-r--r--res/values-el/strings.xml30
-rw-r--r--res/values-en-rAU/strings.xml193
-rw-r--r--res/values-en-rGB/strings.xml28
-rw-r--r--res/values-en-rIN/strings.xml28
-rw-r--r--res/values-es-rUS/strings.xml28
-rw-r--r--res/values-es/strings.xml28
-rw-r--r--res/values-et-rEE/strings.xml28
-rw-r--r--res/values-eu-rES/strings.xml28
-rw-r--r--res/values-fa/strings.xml28
-rw-r--r--res/values-fi/strings.xml28
-rw-r--r--res/values-fr-rCA/strings.xml30
-rw-r--r--res/values-fr/strings.xml28
-rw-r--r--res/values-gl-rES/strings.xml28
-rw-r--r--res/values-hi/strings.xml32
-rw-r--r--res/values-hr/strings.xml29
-rw-r--r--res/values-hu/strings.xml28
-rw-r--r--res/values-hy-rAM/strings.xml28
-rw-r--r--res/values-in/strings.xml30
-rw-r--r--res/values-is-rIS/strings.xml28
-rw-r--r--res/values-it/strings.xml28
-rw-r--r--res/values-iw/strings.xml30
-rw-r--r--res/values-ja/strings.xml28
-rw-r--r--res/values-ka-rGE/strings.xml28
-rw-r--r--res/values-kk-rKZ/strings.xml28
-rw-r--r--res/values-km-rKH/strings.xml28
-rw-r--r--res/values-kn-rIN/strings.xml28
-rw-r--r--res/values-ko/strings.xml28
-rw-r--r--res/values-ky-rKG/strings.xml28
-rw-r--r--res/values-lo-rLA/strings.xml28
-rw-r--r--res/values-lt/strings.xml30
-rw-r--r--res/values-lv/strings.xml29
-rw-r--r--res/values-mk-rMK/strings.xml28
-rw-r--r--res/values-ml-rIN/strings.xml30
-rw-r--r--res/values-mn-rMN/strings.xml28
-rw-r--r--res/values-mr-rIN/strings.xml28
-rw-r--r--res/values-ms-rMY/strings.xml28
-rw-r--r--res/values-my-rMM/strings.xml28
-rw-r--r--res/values-nb/strings.xml28
-rw-r--r--res/values-ne-rNP/strings.xml28
-rw-r--r--res/values-nl/strings.xml30
-rw-r--r--res/values-pl/strings.xml32
-rw-r--r--res/values-pt-rPT/strings.xml28
-rw-r--r--res/values-pt/strings.xml28
-rw-r--r--res/values-ro/strings.xml35
-rw-r--r--res/values-ru/strings.xml36
-rw-r--r--res/values-si-rLK/strings.xml28
-rw-r--r--res/values-sk/strings.xml30
-rw-r--r--res/values-sl/strings.xml30
-rw-r--r--res/values-sr/strings.xml29
-rw-r--r--res/values-sv/strings.xml28
-rw-r--r--res/values-sw/strings.xml28
-rw-r--r--res/values-ta-rIN/strings.xml28
-rw-r--r--res/values-te-rIN/strings.xml28
-rw-r--r--res/values-th/strings.xml28
-rw-r--r--res/values-tl/strings.xml32
-rw-r--r--res/values-tr/strings.xml28
-rw-r--r--res/values-uk/strings.xml34
-rw-r--r--res/values-ur-rPK/strings.xml28
-rw-r--r--res/values-uz-rUZ/strings.xml28
-rw-r--r--res/values-vi/strings.xml28
-rw-r--r--res/values-zh-rCN/strings.xml30
-rw-r--r--res/values-zh-rHK/strings.xml28
-rw-r--r--res/values-zh-rTW/strings.xml28
-rw-r--r--res/values-zu/strings.xml28
-rw-r--r--res/values/animation_constants.xml12
-rw-r--r--res/values/colors.xml2
-rw-r--r--res/values/dimens.xml15
-rw-r--r--res/values/strings.xml64
-rw-r--r--res/values/styles.xml4
-rw-r--r--res/xml/display_options_settings.xml31
-rw-r--r--res/xml/general_settings.xml83
-rw-r--r--res/xml/sound_settings.xml46
-rw-r--r--src/com/android/dialer/CallDetailActivity.java102
-rw-r--r--src/com/android/dialer/DialerApplication.java22
-rw-r--r--src/com/android/dialer/DialtactsActivity.java83
-rw-r--r--src/com/android/dialer/PhoneCallDetailsHelper.java1
-rw-r--r--src/com/android/dialer/ProximitySensorManager.java237
-rw-r--r--src/com/android/dialer/SpecialCharSequenceMgr.java29
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java1018
-rw-r--r--src/com/android/dialer/calllog/CallLogFragment.java318
-rw-r--r--src/com/android/dialer/calllog/CallLogGroupBuilder.java1
-rw-r--r--src/com/android/dialer/calllog/CallLogListItemViews.java258
-rw-r--r--src/com/android/dialer/calllog/CallLogQuery.java4
-rw-r--r--src/com/android/dialer/calllog/ContactInfo.java5
-rw-r--r--src/com/android/dialer/calllog/ContactInfoHelper.java147
-rw-r--r--src/com/android/dialer/calllog/GroupingListAdapter.java490
-rw-r--r--src/com/android/dialer/calllog/IntentProvider.java80
-rw-r--r--src/com/android/dialer/calllog/PhoneNumberDisplayHelper.java1
-rw-r--r--src/com/android/dialer/contactinfo/ContactInfoCache.java342
-rw-r--r--src/com/android/dialer/contactinfo/ContactInfoRequest.java65
-rw-r--r--src/com/android/dialer/contactinfo/NumberWithCountryIso.java53
-rw-r--r--src/com/android/dialer/database/DialerDatabaseHelper.java6
-rw-r--r--src/com/android/dialer/dialpad/DialpadFragment.java65
-rw-r--r--src/com/android/dialer/dialpad/SmartDialCursorLoader.java20
-rw-r--r--src/com/android/dialer/interactions/PhoneNumberInteraction.java4
-rw-r--r--src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java2
-rw-r--r--src/com/android/dialer/list/AllContactsFragment.java4
-rw-r--r--src/com/android/dialer/list/DialerPhoneNumberListAdapter.java22
-rw-r--r--src/com/android/dialer/list/ListsFragment.java211
-rw-r--r--src/com/android/dialer/list/PhoneFavoriteSquareTileView.java3
-rw-r--r--src/com/android/dialer/list/RegularSearchListAdapter.java9
-rw-r--r--src/com/android/dialer/list/SearchFragment.java65
-rw-r--r--src/com/android/dialer/list/ShortcutCardsAdapter.java393
-rw-r--r--src/com/android/dialer/list/SmartDialNumberListAdapter.java8
-rw-r--r--src/com/android/dialer/list/SmartDialSearchFragment.java7
-rw-r--r--src/com/android/dialer/list/SpeedDialFragment.java16
-rw-r--r--src/com/android/dialer/list/SwipeHelper.java470
-rw-r--r--src/com/android/dialer/settings/DialerSettingsActivity.java111
-rw-r--r--src/com/android/dialer/settings/DisplayOptionsSettingsFragment.java31
-rw-r--r--src/com/android/dialer/settings/GeneralSettingsFragment.java159
-rw-r--r--src/com/android/dialer/settings/SoundSettingsFragment.java215
-rw-r--r--src/com/android/dialer/util/PrivilegedCallUtil.java145
-rw-r--r--src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java6
-rw-r--r--src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java52
-rw-r--r--src/com/android/dialer/widget/OverlappingPaneLayout.java1358
-rw-r--r--src/com/android/dialerbind/ObjectFactory.java14
-rw-r--r--tests/Android.mk6
-rw-r--r--tests/res/drawable/default_icon.pngbin4005 -> 0 bytes
-rw-r--r--tests/res/xml/iconset.xml1
-rw-r--r--tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java2
-rw-r--r--tests/src/com/android/dialer/calllog/CallLogAdapterTest.java41
-rw-r--r--tests/src/com/android/dialer/calllog/CallLogFragmentTest.java45
-rw-r--r--tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java2
-rw-r--r--tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java311
-rw-r--r--tests/src/com/android/dialer/util/TestConstants.java4
196 files changed, 4310 insertions, 5786 deletions
diff --git a/Android.mk b/Android.mk
index 414ea2fcd..b029189e8 100644
--- a/Android.mk
+++ b/Android.mk
@@ -22,21 +22,22 @@ LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
+ --extra-packages android.support.v7.recyclerview \
--extra-packages com.android.incallui \
--extra-packages com.android.contacts.common \
--extra-packages com.android.phone.common
LOCAL_JAVA_LIBRARIES := telephony-common
LOCAL_STATIC_JAVA_LIBRARIES := \
- com.android.services.telephony.common \
- com.android.vcard \
android-common \
- guava \
+ android-ex-variablespeed \
android-support-v13 \
android-support-v4 \
- android-ex-variablespeed \
- libphonenumber \
- libgeocoding
+ android-support-v7-recyclerview \
+ com.android.services.telephony.common \
+ com.android.vcard \
+ guava \
+ libphonenumber
LOCAL_REQUIRED_MODULES := libvariablespeed
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 07b7fa91a..5b7944d2c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -61,7 +61,8 @@
android:icon="@mipmap/ic_launcher_phone"
android:hardwareAccelerated="true"
android:supportsRtl="true"
- android:backupAgent='com.android.dialer.DialerBackupAgent'>
+ android:backupAgent='com.android.dialer.DialerBackupAgent'
+ android:usesCleartextTraffic="false">
<meta-data android:name="com.google.android.backup.api_key"
android:value="AEdPqrEAAAAIBXgtCEKQ6W0PXVnW-ZVia2KmlV2AxsTw3GjAeQ" />
@@ -274,15 +275,6 @@
android:screenOrientation="nosensor" >
</activity>
- <activity android:name="com.android.incallui.CircularRevealActivity"
- android:theme="@style/Theme.CircularRevealAnimation"
- android:exported="false"
- android:configChanges="keyboardHidden|orientation"
- android:launchMode="singleInstance"
- android:noHistory="true"
- android:excludeFromRecents="true"
- android:screenOrientation="nosensor" />
-
<!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
<receiver android:name="com.android.incallui.InCallApp$NotificationBroadcastReceiver"
android:exported="false">
diff --git a/res/color/settings_text_color_primary.xml b/res/color/settings_text_color_primary.xml
new file mode 100644
index 000000000..862d8a2c3
--- /dev/null
+++ b/res/color/settings_text_color_primary.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 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_enabled="false" android:color="@color/setting_disabled_color" />
+ <item android:color="@color/setting_primary_color" />
+</selector>
diff --git a/res/color/settings_text_color_secondary.xml b/res/color/settings_text_color_secondary.xml
new file mode 100644
index 000000000..0b00e4688
--- /dev/null
+++ b/res/color/settings_text_color_secondary.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 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_enabled="false" android:color="@color/setting_disabled_color" />
+ <item android:color="@color/setting_secondary_color" />
+</selector>
diff --git a/res/drawable-hdpi/ic_arrow_am.png b/res/drawable-hdpi/ic_arrow_am.png
deleted file mode 100644
index 6fecb9322..000000000
--- a/res/drawable-hdpi/ic_arrow_am.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_grade_24dp.png b/res/drawable-hdpi/ic_grade_24dp.png
new file mode 100644
index 000000000..86eecdd4a
--- /dev/null
+++ b/res/drawable-hdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_more_vert_24dp.png b/res/drawable-hdpi/ic_more_vert_24dp.png
new file mode 100644
index 000000000..67f07e473
--- /dev/null
+++ b/res/drawable-hdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_people_24dp.png b/res/drawable-hdpi/ic_people_24dp.png
new file mode 100644
index 000000000..ff698afc0
--- /dev/null
+++ b/res/drawable-hdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_schedule_24dp.png b/res/drawable-hdpi/ic_schedule_24dp.png
new file mode 100644
index 000000000..f3581d104
--- /dev/null
+++ b/res/drawable-hdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/overflow_thumbnail.png b/res/drawable-hdpi/overflow_thumbnail.png
deleted file mode 100644
index 57db353f7..000000000
--- a/res/drawable-hdpi/overflow_thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_ab_dialer_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_ab_dialer_holo_dark.png
deleted file mode 100644
index bc3ebc7b2..000000000
--- a/res/drawable-ldrtl-hdpi/ic_ab_dialer_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index 90712b5f0..000000000
--- a/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_holo_dark.png
deleted file mode 100644
index d50d5b889..000000000
--- a/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index b45064136..000000000
--- a/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_holo_dark.png
deleted file mode 100644
index ab62399fc..000000000
--- a/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_dark.png
deleted file mode 100644
index 210690fe1..000000000
--- a/res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index 9daf083a9..000000000
--- a/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_holo_dark.png
deleted file mode 100644
index e8357c197..000000000
--- a/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index 8ba42f8c0..000000000
--- a/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_holo_dark.png
deleted file mode 100644
index 0b7296d06..000000000
--- a/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_dark.png
deleted file mode 100644
index 5c8e1622e..000000000
--- a/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index 396c47962..000000000
--- a/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_holo_dark.png
deleted file mode 100644
index ca080b2ba..000000000
--- a/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index c809e8dd7..000000000
--- a/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_holo_dark.png
deleted file mode 100644
index f82a81662..000000000
--- a/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_arrow_am.png b/res/drawable-mdpi/ic_arrow_am.png
deleted file mode 100644
index 11bf05bf7..000000000
--- a/res/drawable-mdpi/ic_arrow_am.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_grade_24dp.png b/res/drawable-mdpi/ic_grade_24dp.png
new file mode 100644
index 000000000..d2cbe4c92
--- /dev/null
+++ b/res/drawable-mdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_more_vert_24dp.png b/res/drawable-mdpi/ic_more_vert_24dp.png
new file mode 100644
index 000000000..017e45ede
--- /dev/null
+++ b/res/drawable-mdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_people_24dp.png b/res/drawable-mdpi/ic_people_24dp.png
new file mode 100644
index 000000000..270e4de2e
--- /dev/null
+++ b/res/drawable-mdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_schedule_24dp.png b/res/drawable-mdpi/ic_schedule_24dp.png
new file mode 100644
index 000000000..501ee842e
--- /dev/null
+++ b/res/drawable-mdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/overflow_thumbnail.png b/res/drawable-mdpi/overflow_thumbnail.png
deleted file mode 100644
index c69937428..000000000
--- a/res/drawable-mdpi/overflow_thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_arrow_am.png b/res/drawable-xhdpi/ic_arrow_am.png
deleted file mode 100644
index ffbd3996b..000000000
--- a/res/drawable-xhdpi/ic_arrow_am.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_grade_24dp.png b/res/drawable-xhdpi/ic_grade_24dp.png
new file mode 100644
index 000000000..d65f39d7c
--- /dev/null
+++ b/res/drawable-xhdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_more_vert_24dp.png b/res/drawable-xhdpi/ic_more_vert_24dp.png
new file mode 100644
index 000000000..efab8a74f
--- /dev/null
+++ b/res/drawable-xhdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_people_24dp.png b/res/drawable-xhdpi/ic_people_24dp.png
new file mode 100644
index 000000000..323981ccf
--- /dev/null
+++ b/res/drawable-xhdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_schedule_24dp.png b/res/drawable-xhdpi/ic_schedule_24dp.png
new file mode 100644
index 000000000..2e27936a4
--- /dev/null
+++ b/res/drawable-xhdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/overflow_thumbnail.png b/res/drawable-xhdpi/overflow_thumbnail.png
deleted file mode 100644
index e538b9894..000000000
--- a/res/drawable-xhdpi/overflow_thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_arrow_am.png b/res/drawable-xxhdpi/ic_arrow_am.png
deleted file mode 100644
index 4938de29c..000000000
--- a/res/drawable-xxhdpi/ic_arrow_am.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_grade_24dp.png b/res/drawable-xxhdpi/ic_grade_24dp.png
new file mode 100644
index 000000000..aa5879215
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_more_vert_24dp.png b/res/drawable-xxhdpi/ic_more_vert_24dp.png
new file mode 100644
index 000000000..d32281307
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_people_24dp.png b/res/drawable-xxhdpi/ic_people_24dp.png
new file mode 100644
index 000000000..6c68435fb
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_schedule_24dp.png b/res/drawable-xxhdpi/ic_schedule_24dp.png
new file mode 100644
index 000000000..bfc72736a
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/overflow_thumbnail.png b/res/drawable-xxhdpi/overflow_thumbnail.png
deleted file mode 100644
index 7f3f73386..000000000
--- a/res/drawable-xxhdpi/overflow_thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_grade_24dp.png b/res/drawable-xxxhdpi/ic_grade_24dp.png
new file mode 100644
index 000000000..7f38d0963
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_more_vert_24dp.png b/res/drawable-xxxhdpi/ic_more_vert_24dp.png
new file mode 100644
index 000000000..2f2cb3d00
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_people_24dp.png b/res/drawable-xxxhdpi/ic_people_24dp.png
new file mode 100644
index 000000000..5676f7041
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_schedule_24dp.png b/res/drawable-xxxhdpi/ic_schedule_24dp.png
new file mode 100644
index 000000000..b94f4dfa1
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable/ic_arrow.xml b/res/drawable/tab_contacts.xml
index f97623b63..ed3f86b9b 100644
--- a/res/drawable/ic_arrow.xml
+++ b/res/drawable/tab_contacts.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- ~ Copyright (C) 2013 The Android Open Source Project
+ ~ Copyright (C) 2014 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
@@ -14,7 +14,17 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/ic_arrow_am"
- android:autoMirrored="true">
-</bitmap> \ No newline at end of file
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="@color/tab_ripple_color">
+
+ <item>
+ <bitmap android:src="@drawable/ic_people_24dp"
+ android:gravity="center" />
+ </item>
+
+ <item android:id="@android:id/mask">
+ <color android:color="@android:color/white" />
+ </item>
+
+</ripple>
diff --git a/res/values/ids.xml b/res/drawable/tab_recents.xml
index 2b095043a..b1a531840 100644
--- a/res/values/ids.xml
+++ b/res/drawable/tab_recents.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- ~ Copyright (C) 2012 The Android Open Source Project
+ ~ Copyright (C) 2014 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
@@ -14,9 +14,17 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<resources>
- <item type="id"
- name="is_swipeable_tag" />
- <item type="id"
- name="contact_entry_index_tag" />
-</resources> \ No newline at end of file
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="@color/tab_ripple_color">
+
+ <item>
+ <bitmap android:src="@drawable/ic_schedule_24dp"
+ android:gravity="center" />
+ </item>
+
+ <item android:id="@android:id/mask">
+ <color android:color="@android:color/white" />
+ </item>
+
+</ripple>
diff --git a/res/drawable/recent_lists_footer_background.xml b/res/drawable/tab_speed_dial.xml
index b5029afcb..c9c4820b3 100644
--- a/res/drawable/recent_lists_footer_background.xml
+++ b/res/drawable/tab_speed_dial.xml
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
-
<!--
~ Copyright (C) 2014 The Android Open Source Project
~
@@ -15,10 +14,17 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
+
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
- android:color="?android:attr/colorControlHighlight">
- <!-- Mask to constrain the ripple to the bounds of the view. -->
+ android:color="@color/tab_ripple_color">
+
+ <item>
+ <bitmap android:src="@drawable/ic_grade_24dp"
+ android:gravity="center" />
+ </item>
+
<item android:id="@android:id/mask">
<color android:color="@android:color/white" />
</item>
+
</ripple>
diff --git a/res/layout/call_detail.xml b/res/layout/call_detail.xml
index 35c41c0b3..522c698ad 100644
--- a/res/layout/call_detail.xml
+++ b/res/layout/call_detail.xml
@@ -100,18 +100,4 @@
</LinearLayout>
- <!--
- Used to hide the UI when playing a voicemail and the proximity sensor
- is detecting something near the screen.
- -->
- <View
- android:id="@+id/blank"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@android:color/black"
- android:visibility="gone"
- android:clickable="true"
- android:layout_alignParentStart="true"
- android:layout_alignParentTop="true"
- />
</RelativeLayout>
diff --git a/res/layout/call_log_list_item.xml b/res/layout/call_log_list_item.xml
index db59b74d3..910e78f5e 100644
--- a/res/layout/call_log_list_item.xml
+++ b/res/layout/call_log_list_item.xml
@@ -155,9 +155,5 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
- <!-- 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"/>
+
</LinearLayout>
diff --git a/res/layout/call_log_list_item_extra.xml b/res/layout/call_log_list_item_extra.xml
deleted file mode 100644
index 87b932bc6..000000000
--- a/res/layout/call_log_list_item_extra.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- ~ Copyright (C) 2013 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-
-<!-- Can't use merge here because this is referenced via a ViewStub -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/badge_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
-
- <View android:layout_width="match_parent"
- android:layout_height="1px"
- 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="@dimen/call_log_item_extra_padding_vertical"
- android:paddingBottom="@dimen/call_log_item_extra_padding_vertical"
- android:background="?android:attr/selectableItemBackground"
- android:clickable="true">
-
- <ImageView android:id="@+id/badge_image"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:tint="@color/call_log_extras_text_color"
- android:padding="@dimen/call_log_outer_margin" />
-
- <TextView android:id="@+id/badge_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingStart="@dimen/call_log_start_margin"
- android:textColor="@color/call_log_extras_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:padding="@dimen/icon_padding"
- android:layout_gravity="center_vertical"
- android:layout_marginEnd="@dimen/call_log_icon_margin"
- android:src="@drawable/ic_close_dk"
- android:tint="@color/recent_call_log_item_phone_icon_tint"
- android:alpha="0.3"
- 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/dialer_preferences.xml b/res/layout/dialer_preferences.xml
deleted file mode 100644
index 023b12251..000000000
--- a/res/layout/dialer_preferences.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<!-- Layout of a header item in PreferenceActivity. This is modified from the platform
- preference_header_item-->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="48dp"
- android:background="?android:attr/activatedBackgroundIndicator"
- android:gravity="center_vertical"
- android:paddingEnd="?android:attr/scrollbarSize">
-
- <RelativeLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/preference_side_margin"
- android:layout_marginEnd="@dimen/preference_side_margin"
- android:layout_weight="1"
- android:paddingTop="@dimen/preference_padding_top"
- android:paddingBottom="@dimen/preference_padding_bottom">
-
- <TextView android:id="@+id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:textAppearance="?android:attr/textAppearance"
- android:textSize="16sp"
- android:textColor="@color/setting_primary_color"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal" />
-
- <TextView android:id="@+id/summary"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/title"
- android:layout_alignStart="@id/title"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="@color/setting_secondary_color"
- android:lineSpacingExtra="@dimen/preference_summary_line_spacing_extra"
- android:ellipsize="end"
- android:maxLines="2" />
-
- </RelativeLayout>
-
-</LinearLayout> \ No newline at end of file
diff --git a/res/layout/lists_fragment.xml b/res/layout/lists_fragment.xml
index face20e26..bcf414b07 100644
--- a/res/layout/lists_fragment.xml
+++ b/res/layout/lists_fragment.xml
@@ -14,87 +14,80 @@
limitations under the License.
-->
-<com.android.dialer.widget.OverlappingPaneLayout
+<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lists_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true" >
- <ListView
- android:id="@+id/shortcut_card_list"
+ <LinearLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="@dimen/action_bar_height_large"
- android:background="@color/actionbar_background_color"
- android:clipToPadding="false"
- android:fadingEdge="none"
- android:divider="@null" />
-
- <FrameLayout
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <!-- TODO: Apply background color to ActionBar instead of a FrameLayout. For now, this is
+ the easiest way to preserve correct pane scrolling and searchbar collapse/expand
+ behaviors. -->
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/action_bar_height_large"
+ android:background="@color/actionbar_background_color" />
+
+ <com.android.contacts.common.list.ViewPagerTabs
+ android:id="@+id/lists_pager_header"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/tab_height"
+ android:textAllCaps="true"
+ android:orientation="horizontal"
+ android:layout_gravity="top"
+ android:elevation="@dimen/tab_elevation"
+ style="@style/DialtactsActionBarTabTextStyle" />
+
+ <android.support.v4.view.ViewPager
+ android:id="@+id/lists_pager"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1" />
+
+ </LinearLayout>
+
+ <com.android.dialer.list.RemoveView
+ android:id="@+id/remove_view"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="@dimen/tab_height"
+ android:layout_marginTop="@dimen/action_bar_height_large"
+ android:layout_alignParentTop="true" >
<LinearLayout
- android:layout_width="match_parent"
+ android:id="@+id/remove_view_content"
android:layout_height="match_parent"
- android:orientation="vertical">
-
- <com.android.contacts.common.list.ViewPagerTabs
- android:id="@+id/lists_pager_header"
- android:layout_width="match_parent"
- android:layout_height="@dimen/tab_height"
- android:textAllCaps="true"
- android:orientation="horizontal"
- android:layout_gravity="top"
- android:elevation="@dimen/tab_elevation"
- style="@style/DialtactsActionBarTabTextStyle" />
-
- <android.support.v4.view.ViewPager
- android:id="@+id/lists_pager"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1" />
+ android:layout_width="match_parent"
+ android:background="@color/actionbar_background_color"
+ android:gravity="center"
+ android:orientation="horizontal"
+ android:visibility="gone" >
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp"
+ android:id="@+id/remove_view_icon"
+ android:src="@drawable/ic_remove"
+ android:contentDescription="@string/remove_contact"
+ android:tint="@color/remove_text_color" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/remove_view_text"
+ android:textSize="@dimen/remove_text_size"
+ android:textColor="@color/remove_text_color"
+ android:text="@string/remove_contact" />
</LinearLayout>
- <com.android.dialer.list.RemoveView
- android:id="@+id/remove_view"
- android:layout_width="match_parent"
- android:layout_height="@dimen/tab_height"
- android:layout_alignParentTop="true" >
-
- <LinearLayout
- android:id="@+id/remove_view_content"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:background="@color/actionbar_background_color"
- android:gravity="center"
- android:orientation="horizontal"
- android:visibility="gone" >
-
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="8dp"
- android:layout_marginBottom="8dp"
- android:id="@+id/remove_view_icon"
- android:src="@drawable/ic_remove"
- android:contentDescription="@string/remove_contact"
- android:tint="@color/remove_text_color" />
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/remove_view_text"
- android:textSize="@dimen/remove_text_size"
- android:textColor="@color/remove_text_color"
- android:text="@string/remove_contact" />
-
- </LinearLayout>
-
- </com.android.dialer.list.RemoveView >
-
- </FrameLayout>
-
-</com.android.dialer.widget.OverlappingPaneLayout>
+ </com.android.dialer.list.RemoveView >
+
+</FrameLayout>
diff --git a/res/layout/phone_favorite_tile_view.xml b/res/layout/phone_favorite_tile_view.xml
index f274a9d34..8b00fba61 100644
--- a/res/layout/phone_favorite_tile_view.xml
+++ b/res/layout/phone_favorite_tile_view.xml
@@ -108,7 +108,7 @@
<ImageButton
android:id="@id/contact_tile_secondary_button"
- android:src="@drawable/overflow_thumbnail"
+ android:src="@drawable/ic_more_vert_24dp"
android:background="@drawable/item_background_material_dark"
android:layout_height="@dimen/contact_tile_info_button_height_and_width"
android:layout_width="@dimen/contact_tile_info_button_height_and_width"
diff --git a/res/layout/recents_list_footer.xml b/res/layout/recents_list_footer.xml
deleted file mode 100644
index 3a56cbe16..000000000
--- a/res/layout/recents_list_footer.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<!-- Text field and possibly soft menu button above the keypad where
- the digits are displayed. -->
-
-<TextView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/recents_list_footer"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="20dp"
- android:paddingBottom="20dp"
- android:gravity="center"
- android:fontFamily="@string/view_full_call_history_font_family"
- android:textStyle="bold"
- android:textColor="@color/dialtacts_secondary_text_color"
- android:textSize="14sp"
- android:text="@string/recents_footer_text"
- android:background="@drawable/recent_lists_footer_background" />
diff --git a/res/layout/speed_dial_fragment.xml b/res/layout/speed_dial_fragment.xml
index 58a7b2410..18820497e 100644
--- a/res/layout/speed_dial_fragment.xml
+++ b/res/layout/speed_dial_fragment.xml
@@ -14,13 +14,10 @@
limitations under the License.
-->
-<!-- Use LinearLayout + FrameLayout, just to rely on android:divider and android:showDividers -->
-<RelativeLayout
+<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:divider="?android:attr/dividerHorizontal"
- android:showDividers="end"
android:clipChildren="false">
<FrameLayout
@@ -51,4 +48,4 @@
layout="@layout/empty_list_view"
android:visibility="gone"/>
-</RelativeLayout>
+</FrameLayout>
diff --git a/res/menu/dialpad_options.xml b/res/menu/dialpad_options.xml
index 49ee37d8f..f0399a82b 100644
--- a/res/menu/dialpad_options.xml
+++ b/res/menu/dialpad_options.xml
@@ -14,10 +14,7 @@
limitations under the License.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/menu_add_contact"
- android:title="@string/add_contact"
- android:showAsAction="withText" />
+
<item
android:id="@+id/menu_2s_pause"
android:title="@string/add_2sec_pause"
@@ -26,8 +23,5 @@
android:id="@+id/menu_add_wait"
android:title="@string/add_wait"
android:showAsAction="withText" />
- <item
- android:id="@+id/menu_send_message"
- android:title="@string/menu_sendTextMessage"
- android:showAsAction="withText" />
+
</menu>
diff --git a/res/menu/dialtacts_options.xml b/res/menu/dialtacts_options.xml
index cc5e3868e..8a9e25f7f 100644
--- a/res/menu/dialtacts_options.xml
+++ b/res/menu/dialtacts_options.xml
@@ -30,6 +30,6 @@
android:title="@string/menu_newContact"/>
<item
android:id="@+id/menu_call_settings"
- android:title="@string/dialer_settings_label"
- android:orderInCategory="2" />
+ android:title="@string/dialer_settings_label" />
+
</menu>
diff --git a/res/mipmap-xxxhdpi/ic_launcher_phone.png b/res/mipmap-xxxhdpi/ic_launcher_phone.png
index 8c92ac132..26f51f153 100644
--- a/res/mipmap-xxxhdpi/ic_launcher_phone.png
+++ 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 2c08a2778..68452fda3 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Foon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Foon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Oproepgeskiedenis"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Stuur SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Bel <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Redigeer nommer voor oproep"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Voeg by kontakte"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vee oproepgeskiedenis uit?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Dit sal alle oproepe uit jou geskiedenis vee"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Vee tans oproepgeskiedenis uit …"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Stemboodskap"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> stemboodskappe"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Stemboodskappe </item>
+ <item quantity="one">Stemboodskap</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Speel"</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">"Nuwe stemboodskap van <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Wys slegs misgeloop"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Wys net stemboodskappe"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Wys alle oproepe"</string>
- <string name="add_contact" msgid="4579643070374941999">"Voeg by kontakte"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Voeg 2-sek.-pouse by"</string>
<string name="add_wait" msgid="3360818652790319634">"Voeg wagtyd by"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Instellings"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Skep nuwe kontak"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Voeg by bestaande kontak"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Stuur SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Maak video-oproep"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Bekyk volledige oproepgeskiedenis"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nuwe gemiste oproepe"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Met spoedbel raak jy een keer om gunstelinge en nommers wat jy gereeld gebruik, te bel"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Geen kontakte nie"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Raak prent om al die nommers te sien of raak en hou om te herorganiseer"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Maak toe"</string>
<string name="remove_contact" msgid="1080555335283662961">"Verwyder"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLE KONTAKTE"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"BEL TERUG"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Luister na stemboodskap vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Oproepbesonderhede vir <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Uit oproepgeskiedenis gevee"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nommer is by Google aangegee"</string>
<string name="call_log_action_report" msgid="561229827189128879">"GEE AAN"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Vandag"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Gister"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Speel stadiger."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Begin of laat wag speel."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Algemeen"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opsies vir wys van kontakte"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Klanke en vibreer"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Vertoonopsies"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Klanke en vibrasie"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Toeganklikheid"</string>
<string name="ringtone_title" msgid="760362035635084653">"Foon-luitoon"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibreer ook vir oproepe"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Belbladklanke"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Ander"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Toonlengte vir belblad"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normaal"</item>
+ <item msgid="6177579030803486015">"Lank"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Vinnige antwoorde"</string>
<string name="call_settings_label" msgid="313434211353070209">"Oproepe"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Oproeprekeninge"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index f2e65486b..fc8d299b8 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"ስልክ"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"ስልክ"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"የጥሪ ታሪክ"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"ኤስኤምኤስ ላክ"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"የጥሪ ታሪክ ይጽዳ?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"ይሄ ሁሉንም ጥሪዎች ከታሪክዎ ይሰርዛቸዋል"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"የጥሪ ታሪክን በማጽዳት ላይ…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"የድምፅ መልዕክት"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> የድምፅ መልዕክቶች"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> የድምፅ መልዕክቶች </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> የድምፅ መልዕክቶች </item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"ወደ እውቂያዎች አክል"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2 ሴኮንድ ፋታ አክል"</string>
<string name="add_wait" msgid="3360818652790319634">"መጠበቅ አክል"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"ቅንብሮች"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"አዲስ እውቂያ ይፍጠሩ"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"ወደ ነባር እውቂያ አክል"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ኤስኤምኤስ ላክ"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"የቪዲዮ ጥሪ አድርግ"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"ሙሉ የጥሪ ታሪኮችን ይመልከቱ"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> አዲስ ያልተመለሱ ጥሪዎች"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"ፈጣን ደውል ለተወዳጆች እና አብዛኛው ጊዜ ለሚደውሏቸውን ቁጥሮች የሆነ የአንዴ ነካ መደወል ነው"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"ምንም እውቂያዎች የሉም"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"ሁሉንም ቁጥሮች ለማየት ምስል ይንኩ ወይም ዳግም ለመደርደር ነክተው ይያዙት"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"አሰናብት"</string>
<string name="remove_contact" msgid="1080555335283662961">"አስወግድ"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ሁሉም እውቂያዎች"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"መልሰህ ደውል"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"የ<xliff:g id="NAMEORNUMBER">^1</xliff:g>ን የድምጽ መልዕክት ያዳምጡ"</string>
<string name="description_details_action" msgid="2433827152749491785">"የ<xliff:g id="NAMEORNUMBER">^1</xliff:g> የጥሪ ዝርዝሮች"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"ከጥሪ ታሪክ ተሰርዟል"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"ቁጥር ለGoogle ሪፖርት ተደርጓል"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ሪፖርት አድርግ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"ዛሬ"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"ትላንት"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"በዝግታ አጫውት።"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"መልሰህ አጫውትን አስጀምር ወይም ለአፍታ አቁም።"</string>
<string name="list_delimeter" msgid="4571593167738725100">"፣ "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"አጠቃላይ"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"የእውቂያ ማሳያ አማራጮች"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ድምጾች እና ንዝረት"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"የማሳያ አማራጮች"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ድምጾች እና ንዝረት"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"ተደራሽነት"</string>
<string name="ringtone_title" msgid="760362035635084653">"የስልክ ጥሪ ቅላጼ"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"እንዲሁም ለጥሪዎችም ንዘር"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"የመደወያ ሰሌዳ ቅላጼዎች"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"ሌላ"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"የስልክ ሰሌዳ ድምጽ ርዝመት"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"መደበኛ"</item>
+ <item msgid="6177579030803486015">"ረጅም"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ፈጣን ምላሾች"</string>
<string name="call_settings_label" msgid="313434211353070209">"ጥሪዎች"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"የመደወያ መለያዎች"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 16e4d5b91..e47b332c1 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"الهاتف"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"الهاتف"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"سجل المكالمات"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"‏إرسال رسائل قصيرة SMS"</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>
@@ -33,10 +32,14 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"هل تريد محو سجل المكالمات؟"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"سيؤدي ذلك إلى حذف جميع المكالمات من السجل"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"جارٍ محو سجل المكالمات…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"البريد الصوتي"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> من رسائل البريد الصوتي"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="zero">لا تتوفر رسائل بريد صوتي (<xliff:g id="COUNT">%1$d</xliff:g>) </item>
+ <item quantity="two">رسالتا بريد صوتي (<xliff:g id="COUNT">%1$d</xliff:g>) </item>
+ <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> رسائل بريد صوتي </item>
+ <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> رسالة بريد صوتي </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> من رسائل البريد الصوتي </item>
+ <item quantity="one">رسالة بريد صوتي</item>
+ </plurals>
<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>
@@ -80,7 +83,6 @@
<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_contact" msgid="4579643070374941999">"إضافة إلى جهات الاتصال"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"إضافة ثانيتين إيقاف مؤقت"</string>
<string name="add_wait" msgid="3360818652790319634">"إضافة انتظار"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"الإعدادات"</string>
@@ -121,8 +123,8 @@
<string name="contact_list_loading" msgid="5488620820563977329">"جارٍ التحميل..."</string>
<string name="imei" msgid="3045126336951684285">"IMEI"</string>
<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="simContacts_emptyLoading" msgid="6700035985448642408">"‏جارٍ التحميل من شريحة SIM…"</string>
+ <string name="simContacts_title" msgid="27341688347689769">"‏شريحة SIM وجهات الاتصال"</string>
<string name="add_contact_not_available" msgid="5547311613368004859">"لا يتوفر تطبيق لجهات الاتصال"</string>
<string name="voice_search_not_available" msgid="2977719040254285301">"البحث الصوتي غير متاح"</string>
<string name="call_not_available" msgid="8941576511946492225">"يتعذر إجراء مكالمة هاتفية نظرًا لأنه تم تعطيل تطبيق الهاتف."</string>
@@ -141,14 +143,15 @@
<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_create_new_contact" msgid="1679917465521554093">"إنشاء جهة اتصال جديدة"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"إضافة إلى جهة الاتصال الحالية"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"‏إرسال رسالة قصيرة SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"إجراء مكالمة فيديو"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"عرض سجل المكالمات بالكامل"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> من المكالمات الجديدة الفائتة"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"إن الاتصال السريع هو اتصال بلمسة واحدة للأرقام المفضلة لديك والتي تتصل بها بكثرة"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"لا توجد جهات اتصال"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"المس الصورة للاطلاع على جميع الأرقام أو المس مع الاستمرار لإعادة الترتيب"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"تجاهل"</string>
<string name="remove_contact" msgid="1080555335283662961">"إزالة"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"جميع جهات الاتصال"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"معاودة الاتصال"</string>
@@ -166,7 +169,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"استماع إلى بريد صوتي من <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"تفاصيل الاتصال لـ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"تم الحذف من سجل المكالمات"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"‏تم إبلاغ Google بالرقم"</string>
<string name="call_log_action_report" msgid="561229827189128879">"إبلاغ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"اليوم"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"أمس"</string>
@@ -178,13 +180,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"تشغيل أقل سرعة."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"بدء التشغيل أو إيقافه مؤقتًا."</string>
<string name="list_delimeter" msgid="4571593167738725100">"، "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"عام"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"خيارات عرض جهات الاتصال"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"الأصوات والاهتزاز"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"خيارات العرض"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"الأصوات والاهتزاز"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"إمكانية الوصول"</string>
<string name="ringtone_title" msgid="760362035635084653">"نغمة رنين الهاتف"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"الاهتزاز أيضًا مع المكالمات"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"نغمات لوحة الاتصال"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"غير ذلك"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"طول نغمة لوحة الاتصال"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"عادية"</item>
+ <item msgid="6177579030803486015">"طويلة"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"الردود السريعة"</string>
<string name="call_settings_label" msgid="313434211353070209">"المكالمات"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"حسابات الاتصال"</string>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 11b5bef7e..4b5ef9b2e 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
+<!--
~ Copyright (C) 2012 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,10 +18,8 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="applicationLabel" msgid="8490255569343340580">"Nömrə yığan"</string>
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="1419116422359067949">"Zəng jurnalı"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Mətnli mesaj göndərin"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Zəng <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Zəng etmədən öncə nömrəyə düzəliş edin"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Kontaktlara əlavə edin"</string>
@@ -63,18 +61,6 @@
<string name="sms_disambig_title" msgid="5846266399240630846">"Nömrə seçin"</string>
<string name="call_disambig_title" msgid="4392886850104795739">"Nömrə seçin"</string>
<string name="make_primary" msgid="5829291915305113983">"Bu seçimi yadda saxla"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"bir"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"iki"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"üç"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"dörd"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"beş"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"altı"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"yeddi"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"səkkiz"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"doqquz"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"ulduz"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"sıfır"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"funt"</string>
<string name="description_voicemail_button" msgid="3402506823655455591">"Səsli məktub"</string>
<string name="description_search_button" msgid="3660807558587384889">"axtarış"</string>
<string name="description_dial_button" msgid="1274091017188142646">"nömrə yığın"</string>
@@ -91,7 +77,6 @@
<string name="menu_show_all_calls" msgid="7560347482073345885">"Bütün zəngləri göstərin"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2 saniyəlik pauza əlavə edin"</string>
<string name="add_wait" msgid="3360818652790319634">"Gözləmə əlavə edin"</string>
- <string name="call_settings" msgid="7666474782093693667">"Ayarlar"</string>
<string name="menu_newContact" msgid="1209922412763274638">"Yeni kontakt"</string>
<string name="menu_allContacts" msgid="6948308384034051670">"Bütün kontaktlar"</string>
<string name="callDetailTitle" msgid="5340227785196217938">"Zəng detalları"</string>
@@ -105,24 +90,17 @@
<string name="type_voicemail" msgid="5153139450668549908">"Səsli poçt"</string>
<string name="actionIncomingCall" msgid="6028930669817038600">"Gələn zənglər"</string>
<string name="description_call_log_play_button" msgid="651182125650429846">"Səsli məktubu oxudun"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Gələn zəng"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Gedən zəng"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Buraxılmış zəng"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Səsli məktub"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Kontakt əlavə edin"</string>
<string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> adlı kontakta baxın"</string>
<string name="description_call" msgid="3443678121983852666">"Zəng edin: <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> mesaj göndər"</string>
<string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Eşidilməmiş səsli mesaj"</string>
<string name="description_start_voice_search" msgid="520539488194946012">"Səs axtarışına başlayın"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
<string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> zəng edin"</string>
<string name="unknown" msgid="740067747858270469">"Naməlum"</string>
<string name="voicemail" msgid="3851469869202611441">"Səsli poçt"</string>
<string name="private_num" msgid="6374339738119166953">"Şəxsi nömrə"</string>
<string name="payphone" msgid="4864313342828942922">"Telefon ödənişi"</string>
<string name="dialerKeyboardHintText" msgid="5401660096579787344">"Nömrə yığmaq üçün klaviaturadan istifadə ediin"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Zəng əlavə etmək üçün nömrə yığın"</string>
<string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> dəqiqə <xliff:g id="SECONDS">%s</xliff:g> saniyə"</string>
<string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Zəng edilmədi"</string>
<string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Səsli poçtu ayarlamaq üçün Menyu, sonra isə &gt; Ayarlara daxil olun."</string>
@@ -139,24 +117,10 @@
<string name="call_log_missed_title" msgid="4541142293870638971">"Buraxılmış"</string>
<string name="recentMissed_empty" msgid="5427113551557296665">"Buraxılmış zəng yoxdur"</string>
<string name="recentVoicemails_empty" msgid="5163114119598014048">"Səsli məktub yoxdur."</string>
- <string name="show_all_contacts" msgid="1732256558071778056">"Bütün kontaktları göstər"</string>
<string name="show_favorites_only" msgid="5520072531022614595">"Yalnız seçilmişləri göstər"</string>
<string name="call_log_activity_title" msgid="4612824396355272023">"Tarixçə"</string>
- <string name="dialpad_0_number" msgid="8859392433961251108">"0"</string>
- <string name="dialpad_1_number" msgid="6536740525419909212">"1"</string>
- <string name="dialpad_2_number" msgid="4941546415280852148">"2"</string>
- <string name="dialpad_3_number" msgid="6539414865185536881">"3"</string>
- <string name="dialpad_4_number" msgid="979988372051042362">"4"</string>
- <string name="dialpad_5_number" msgid="5492272478939926734">"5"</string>
- <string name="dialpad_6_number" msgid="8044579516869379093">"6"</string>
- <string name="dialpad_7_number" msgid="4175113016564167123">"7"</string>
- <string name="dialpad_8_number" msgid="7949849563865941621">"8"</string>
- <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>
<!-- 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>
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index bf53a9dad..5fd461b55 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"История на обажданията"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Изпращане на SMS"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Да се изчисти ли историята на обажд.?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Така ще се изтрият всички обаждания от историята ви"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Историята на обажд. се изчиства…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Гласова поща"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> гл. съобщения"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> гласови съобщения </item>
+ <item quantity="one">Гласово съобщение</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"Добавяне към контактите"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Добавяне на 2-сек пауза"</string>
<string name="add_wait" msgid="3360818652790319634">"Добавяне на изчакване"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Настройки"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"Създаване на нов контакт"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Добавяне към съществуващ контакт"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Изпращане на SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Провеждане на видеообаждане"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Преглед на цялата история на обажданията"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> нови пропуснати обаждания"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Чрез бързото набиране се свързвате с едно докосване с любими контакти и с номера, на които се обаждате често"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Няма контакти"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Докоснете изображението, за да видите всички номера, или го натиснете и задръжте за пренареждане"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Отхвърляне"</string>
<string name="remove_contact" msgid="1080555335283662961">"Премахване"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ВСИЧКИ КОНТАКТИ"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ОБРАТНО ОБАЖДАНЕ"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Прослушване на гласовата поща от <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Подробности за обаждането за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Изтрито от историята на обажданията"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Номерът е изпратен до Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ПОДАВАНЕ НА СИГНАЛ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Днес"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Вчера"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"По-бавно възпроизвеждане."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Стартиране или поставяне на пауза на възпроизвеждането."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Общи"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Опции за показване на контактите"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Звуци и вибриране"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Опции за показване"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуци и вибриране"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Достъпност"</string>
<string name="ringtone_title" msgid="760362035635084653">"Мелодия на телефона"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибриране и при обаждания"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Клавиат. за набиране: Мелодии"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Други"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Продължителност на звука при набиране"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Нормално"</item>
+ <item msgid="6177579030803486015">"Продължително"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Бързи отговори"</string>
<string name="call_settings_label" msgid="313434211353070209">"Обаждания"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Профили за обаждане"</string>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 26d99aef7..9279ede6f 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"ফোন"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"ফোন"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"কল ইতিহাস"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS পাঠান"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"কল ইতিহাস সাফ করবেন?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"এটি আপনার ইতিহাস থেকে সমস্ত কল মুছে দেবে"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"কল ইতিহাস সাফ করা হচ্ছে…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"ভয়েসমেল"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g>টি ভয়েসমেল"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g>টি ভয়েসমেল </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g>টি ভয়েসমেল </item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"পরিচিতিগুলিতে জুড়ুন"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"২- সেকেন্ড বিরতি যোগ করুন"</string>
<string name="add_wait" msgid="3360818652790319634">"অপেক্ষা যোগ করুন"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"সেটিংস"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"নতুন পরিচিতি তৈরি করুন"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"বিদ্যমান পরিচিতিতে যোগ করুন"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS পাঠান"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ভিডিও কল করুন"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"সম্পূর্ণ কল ইতিহাস দেখুন"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>টি নতুন মিসড কল"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"আপনি প্রায়শই কল করেন এমন পছন্দসই ব্যক্তি এবং নম্বরগুলির জন্য দ্রুত ডায়াল হল একবার-স্পর্শের মাধ্যমে ডায়াল করার ব্যবস্থা"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"কোনো পরিচিতি নেই"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"সমস্ত নম্বর দেখতে চিত্রে স্পর্শ করুন বা রেকর্ড করতে ধরে রাখুন"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"খারিজ"</string>
<string name="remove_contact" msgid="1080555335283662961">"সরান"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"সকল পরিচিতি"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"কল করুন"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর থেকে আসা ভয়েসমেল শোনা হয়েছে"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর কলের বিবরণ"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"কলের ইতিহাস থেকে মোছা হয়েছে"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"নম্বর Google এ প্রতিবেদন করা হয়েছে"</string>
<string name="call_log_action_report" msgid="561229827189128879">"প্রতিবেদন করুন"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"আজ"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"গতকাল"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"ধীরে প্লে করুন৷"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"প্লেব্যাক শুরু করুন বা বিরতি দিন৷"</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"সাধারণ"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"পরিচিতি প্রদর্শনের বিকল্পগুলি"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"শব্দ ও কম্পন"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"প্রদর্শনের বিকল্পগুলি"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"শব্দ এবং কম্পন"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"অ্যাক্সেসযোগ্যতা"</string>
<string name="ringtone_title" msgid="760362035635084653">"ফোন রিংটোন"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"এছাড়াও কল এলে কম্পিত করুন"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ডায়ালপ্যাড টোনগুলি"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"অন্যান্য"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ডায়ালপ্যাড স্বরের দৈর্ঘ্য"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"স্বাভাবিক"</item>
+ <item msgid="6177579030803486015">"দীর্ঘ"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"দ্রুত প্রতিক্রিয়াগুলি"</string>
<string name="call_settings_label" msgid="313434211353070209">"কল"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"কলিং অ্যাকাউন্টগুলি"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index fec76b730..a0d7a58bf 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telèfon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telèfon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Historial de trucades"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Envia SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Truca a <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edita el número abans de trucar"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Afegeix als contactes"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Esborrar l\'historial de trucades?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Amb aquesta acció se suprimiran totes les trucades de l\'historial."</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Esborrant historial de trucades..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Missatge de veu"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> missatges de veu"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> bústies de veu </item>
+ <item quantity="one">Bústia de veu</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reprodueix"</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">"Nou missatge de veu de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Mostra només trucades perdudes"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostra només missatges de veu"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Mostra totes les trucades"</string>
- <string name="add_contact" msgid="4579643070374941999">"Afegeix als contactes"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Afegeix una pausa de 2 segons"</string>
<string name="add_wait" msgid="3360818652790319634">"Afegeix espera"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Configuració"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crea un contacte nou"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Afegeix a un contacte existent"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Envia SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fes una videotrucada"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Consulta tot l\'historial de trucades"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> trucades perdudes noves"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"El marcatge ràpid et permet trucar als teus contactes preferits i als números als quals truques més sovint amb un toc."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"No hi ha cap contacte."</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Toca la imatge per veure tots els números i toca-la i mantén-la premuda per reordenar-los."</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Ignora"</string>
<string name="remove_contact" msgid="1080555335283662961">"Suprimeix"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TOTS ELS CONTACTES"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"TORNA LA TRUCADA"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Escolta el missatge a la bústia de veu de: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Detalls de la trucada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"S\'ha suprimit de l\'historial de trucades."</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"S\'ha informat del número a Google."</string>
<string name="call_log_action_report" msgid="561229827189128879">"INFORMA"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Avui"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Ahir"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Reprodueix més lentament."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Inicia la reproducció o la posa en pausa."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"General"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opcions de visualització de contactes"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons i vibració"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Opcions de visualització"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons i vibració"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilitat"</string>
<string name="ringtone_title" msgid="760362035635084653">"So de trucada"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibra també per a les trucades"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons del teclat"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Altres"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durada del to del teclat"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Llarg"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostes ràpides"</string>
<string name="call_settings_label" msgid="313434211353070209">"Trucades"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Comptes per a trucades"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index b15fe6523..b4d747f85 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Historie volání"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Odeslat SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Volat kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Před voláním upravit číslo"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Přidat do kontaktů"</string>
@@ -33,10 +32,12 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vymazat historii volání?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tímto z historie smažete všechna volání."</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Mazání historie volání…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Hlasová schránka"</item>
- <item quantity="other" msgid="5513481419205061254">"Hlasové zprávy: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> hlasové zprávy </item>
+ <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> hlasové zprávy </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> hlasových zpráv </item>
+ <item quantity="one">Hlasová zpráva</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Přehrát"</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">"Nová hlasová zpráva – <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
<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_contact" msgid="4579643070374941999">"Přidat do kontaktů"</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="dialer_settings_label" msgid="4305043242594150479">"Nastavení"</string>
@@ -141,14 +141,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Vytvořit nový kontakt"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Přidat k existujícímu kontaktu"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Odeslat SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Uskutečnit videohovor"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Zobrazení celé historie volání"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"Nové zmeškané hovory: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Rychlá volba je vytáčení oblíbených kontaktů a často volaných čísel jedním klepnutím."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Žádné kontakty"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Klepnutím na obrázek zobrazíte všechna čísla. Klepnutím a podržením upravíte uspořádání."</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Zavřít"</string>
<string name="remove_contact" msgid="1080555335283662961">"Odstranit"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"VŠECHNY KONTAKTY"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"VOLAT ZPĚT"</string>
@@ -166,7 +167,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Poslech hlasové schránky od <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Podrobnosti volání <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Smazáno z historie volání"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Číslo bylo nahlášeno do Googlu."</string>
<string name="call_log_action_report" msgid="561229827189128879">"NAHLÁSIT"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Dnes"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Včera"</string>
@@ -178,13 +178,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Přehrávat pomaleji."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Spustit nebo pozastavit přehrávání."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Obecné"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Možnosti zobrazení kontaktů"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Zvuky a vibrace"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Možnosti zobrazení"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvuky a vibrace"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Usnadnění"</string>
<string name="ringtone_title" msgid="760362035635084653">"Vyzváněcí tón telefonu"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrovat také u volání"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tóny číselníku"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Další"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Délka tónu číselníku"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normální"</item>
+ <item msgid="6177579030803486015">"Dlouhé"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Rychlé odpovědi"</string>
<string name="call_settings_label" msgid="313434211353070209">"Volání"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Účty pro volání"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index c277310ac..1e91d1dc4 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Opkaldshistorik"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Send sms-besked"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Ring til <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Rediger nummer inden opkald"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Føj til kontakter"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vil du rydde opkaldshistorikken?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Dette vil slette alle opkald fra din historik"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Opkaldshistorik ryddes..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Telefonsvarer"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> telefonsvarerbeskeder"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> talebeskeder </item>
+ <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> talebeskeder </item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spil"</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">"Nye besked fra <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Vis kun ubesvarede"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Vis kun telefonsvarerbeskeder"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Vis alle opkald"</string>
- <string name="add_contact" msgid="4579643070374941999">"Føj til kontaktpersoner"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Tilføj pause på 2 sek."</string>
<string name="add_wait" msgid="3360818652790319634">"Tilføj ventetid"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Indstillinger"</string>
@@ -141,14 +139,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Fjernet fra foretrukne"</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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Opret ny kontaktperson"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Føj til eksisterende kontaktperson"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send sms"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Foretag videoopkald"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Se komplet opkaldshistorik"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nye ubesvarede opkald"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Med Hurtigopkald kan du ringe til dine foretrukne kontaktpersoner og numre, du ofte ringer til, med et enkelt tryk"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Ingen kontaktpersoner"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Tryk på billedet for at se alle numre, eller tryk på billedet, og hold det nede for at omarrangere"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Luk"</string>
<string name="remove_contact" msgid="1080555335283662961">"Fjern"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLE KONTAKTPERSONER"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"RING TILBAGE"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Lyt til indtalt besked fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Opkaldsoplysninger for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Slettet fra opkaldshistorik"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nummeret er rapporteret til Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"RAPPORTÉR"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"I dag"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"I går"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Afspil langsommere."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start afspilningen, eller sæt den på pause."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Generelt"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Indstillinger for visning af kontaktpersoner"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Lyde og vibration"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Valgmuligheder for visning"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Lyde og vibration"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Hjælpefunktioner"</string>
<string name="ringtone_title" msgid="760362035635084653">"Ringetone for opkald"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrer også ved opkald"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Toner for numerisk tastatur"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Andre"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tonelængde for numerisk tastatur"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Lang"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hurtigt svar"</string>
<string name="call_settings_label" msgid="313434211353070209">"Opkald"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Opkaldskonti"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index f11e0cc87..20abe3250 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Anrufliste"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS senden"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> anrufen"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Nr. vor Anruf bearbeiten"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Zu Kontakten hinzufügen"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Anrufliste löschen?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Alle Anrufe werden aus Ihrem Verlauf gelöscht."</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Anrufliste wird gelöscht…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mailbox-Nachricht"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Mailbox-Nachrichten"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Mailbox-Nachrichten </item>
+ <item quantity="one">Mailbox-Nachricht</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Anhören"</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">"Neue Mailbox-Nachricht von <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Nur entgangene Anrufe anzeigen"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Nur Mailbox-Nachr. anzeigen"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Alle Anrufe anzeigen"</string>
- <string name="add_contact" msgid="4579643070374941999">"Zu Kontakten hinzufügen"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2 Sekunden Pause hinzufügen"</string>
<string name="add_wait" msgid="3360818652790319634">"Warten hinzufügen"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Einstellungen"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Neuen Kontakt erstellen"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Zu vorhandenem Kontakt hinzufügen"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS senden"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videoanruf starten"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Gesamte Anrufliste ansehen"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> neue verpasste Anrufe"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Schnellauswahl bedeutet Rufaufbau mit einer Berührung für Favoriten und häufig angerufene Nummern."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Keine Kontakte"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Bild berühren, um alle Nummern zu sehen, oder Bild berühren und halten, um sie neu anzuordnen"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Ablehnen"</string>
<string name="remove_contact" msgid="1080555335283662961">"Entfernen"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"Alle Kontakte"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"Zurückrufen"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Mailboxnachricht von <xliff:g id="NAMEORNUMBER">^1</xliff:g> anhören"</string>
<string name="description_details_action" msgid="2433827152749491785">"Anrufdetails für <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Aus Anrufliste gelöscht"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nummer wurde Google gemeldet."</string>
<string name="call_log_action_report" msgid="561229827189128879">"Melden"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Heute"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Gestern"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Langsamer wiedergeben"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Wiedergabe starten oder pausieren"</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Allgemein"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Anzeigeoptionen für Kontakte"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Töne und Vibration"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Anzeigeoptionen"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Töne und Vibration"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Bedienungshilfen"</string>
<string name="ringtone_title" msgid="760362035635084653">"Klingelton"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Bei Anrufen auch vibrieren"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Wähltastentöne"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Sonstige"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Länge der Wähltastentöne"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Lang"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Kurzantworten"</string>
<string name="call_settings_label" msgid="313434211353070209">"Anrufe"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Anrufkonten"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 3d8083510..dc5c0a19c 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Τηλέφωνο"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Τηλέφωνο"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Ιστορικό κλήσεων"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Αποστολή SMS"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Διαγραφή ιστορικού κλήσεων;"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Αυτό θα διαγράψει όλες τις κλήσεις από το ιστορικό σας"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Διαγραφή ιστορικού κλήσεων…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Αυτόματος τηλεφωνητής"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> μηνύμ. αυτόμ. τηλεφωνητή"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Μηνύματα αυτόμ. τηλεφωνητή </item>
+ <item quantity="one">Μήνυμα αυτόματου τηλεφωνητή</item>
+ </plurals>
<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>
@@ -80,13 +79,12 @@
<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_contact" msgid="4579643070374941999">"Προσθήκη στις επαφές"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Προσθήκη παύσης 2 δευτερολέπτων"</string>
<string name="add_wait" msgid="3360818652790319634">"Προσθήκη αναμονής"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Ρυθμίσεις"</string>
<string name="menu_newContact" msgid="1209922412763274638">"Νέα επαφή"</string>
<string name="menu_allContacts" msgid="6948308384034051670">"Όλες οι επαφές"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Λεπτομέρειες κλήσης"</string>
+ <string name="callDetailTitle" msgid="5340227785196217938">"Στοιχ. κλήσης"</string>
<string name="toast_call_detail_error" msgid="6947041258280380832">"Οι λεπτομέρειες δεν είναι διαθέσιμες"</string>
<string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Χρησιμοποιήστε το πληκτρολόγιο αφής ηχητικών τόνων"</string>
<string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Επιστροφή στην κλήση που βρίσκεται σε εξέλιξη"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"Δημιουργία νέας επαφής"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Προσθήκη σε υπάρχουσα επαφή"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Αποστολή SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Πραγματοποίηση βιντεοκλήσης"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Προβολή πλήρους ιστορικού κλήσεων"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> νέες αναπάντητες κλήσεις"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Η ταχεία κλήση είναι κλήση που μπορείτε να πραγματοποιήσετε με ένα πλήκτρο για τους αγαπημένους σας αριθμούς που καλείτε συχνά"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Δεν υπάρχουν επαφές"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Πατήστε την εικόνα για να δείτε όλους τους αριθμούς ή αγγίξτε παρατεταμένα για αναδιάταξη"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Παράβλεψη"</string>
<string name="remove_contact" msgid="1080555335283662961">"Κατάργηση"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ΟΛΕΣ ΟΙ ΕΠΑΦΕΣ"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ΕΠΑΝΑΚΛΗΣΗ"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Ακρόαση μηνύματος αυτόματου τηλεφωνητή από το χρήστη <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Λεπτομέρειες κλήσης για <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Διαγράφηκε από το ιστορικό κλήσεων"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Ο αριθμός αναφέρθηκε στην Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ΑΝΑΦΟΡΑ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Σήμερα"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Χθες"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Αναπαραγωγή πιο αργά."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Έναρξη ή παύση αναπαραγωγής."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Γενικά"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Επιλογές εμφάνισης επαφών"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Ήχοι και δόνηση"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Επιλογές εμφάνισης"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ήχοι και δόνηση"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Προσβασιμότητα"</string>
<string name="ringtone_title" msgid="760362035635084653">"Ήχος κλήσης τηλεφώνου"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Επίσης δόνηση για κλήσεις"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Τόνοι πληκτρολογίου κλήσης"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Άλλο"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Διάρκεια ήχου πληκτρολογίου κλήσης"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Κανονική"</item>
+ <item msgid="6177579030803486015">"Παρατεταμένη"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Γρήγορες απαντήσεις"</string>
<string name="call_settings_label" msgid="313434211353070209">"Κλήσεις"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Λογαριασμοί κλήσης"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
new file mode 100644
index 000000000..a07ee0881
--- /dev/null
+++ b/res/values-en-rAU/strings.xml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2012 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="applicationLabel" msgid="8490255569343340580">"Dialler"</string>
+ <string name="launcherActivityLabel" msgid="1129729740601172692">"Phone"</string>
+ <string name="dialerIconLabel" msgid="6500826552823403796">"Phone"</string>
+ <string name="recentCallsIconLabel" msgid="2639489159797075507">"Call history"</string>
+ <string name="recentCalls_callNumber" msgid="1756372533999226126">"Call <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit number before call"</string>
+ <string name="recentCalls_addToContact" msgid="1429899535546487008">"Add to contacts"</string>
+ <string name="recentCalls_removeFromRecentList" msgid="5551148439199439404">"Delete from call history"</string>
+ <string name="recentCalls_deleteAll" msgid="5157887960461979812">"Clear call history"</string>
+ <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Delete voicemail"</string>
+ <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Share voicemail"</string>
+ <string name="recentCalls_empty" msgid="8555115547405030734">"No calls"</string>
+ <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Clear call history?"</string>
+ <string name="clearCallLogConfirmation" msgid="7899552396101432827">"This will delete all calls from your history"</string>
+ <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Clearing call history…"</string>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
+ <item quantity="one">Voicemail</item>
+ </plurals>
+ <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Play"</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">"New voicemail from <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+ <string name="voicemail_playback_error" msgid="3356071912353297599">"Couldn\'t play voicemail"</string>
+ <string name="voicemail_buffering" msgid="738287747618697097">"Buffering…"</string>
+ <string name="voicemail_fetching_content" msgid="1287895365599580842">"Loading voicemail…"</string>
+ <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Couldn\'t load voicemail"</string>
+ <string name="call_log_voicemail_header" msgid="3945407886667089173">"Calls with voicemail only"</string>
+ <string name="call_log_incoming_header" msgid="2787722299753674684">"Incoming calls only"</string>
+ <string name="call_log_outgoing_header" msgid="761009180766735769">"Outgoing calls only"</string>
+ <string name="call_log_missed_header" msgid="8017148056610855956">"Missed calls only"</string>
+ <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Voicemail updates not available"</string>
+ <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"New voicemail waiting. Can\'t load right now."</string>
+ <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Set up your voicemail"</string>
+ <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio not available"</string>
+ <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Set up"</string>
+ <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Call voicemail"</string>
+ <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Slowest speed"</string>
+ <string name="voicemail_speed_slower" msgid="1508601287347216244">"Slow speed"</string>
+ <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normal speed"</string>
+ <string name="voicemail_speed_faster" msgid="2019965121475935488">"Fast speed"</string>
+ <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Fastest speed"</string>
+ <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+ <string name="sms_disambig_title" msgid="5846266399240630846">"Choose number"</string>
+ <string name="call_disambig_title" msgid="4392886850104795739">"Choose number"</string>
+ <string name="make_primary" msgid="5829291915305113983">"Remember this choice"</string>
+ <string name="description_search_button" msgid="3660807558587384889">"search"</string>
+ <string name="description_dial_button" msgid="1274091017188142646">"dial"</string>
+ <string name="description_digits_edittext" msgid="8760207516497016437">"number to dial"</string>
+ <string name="description_playback_start_stop" msgid="5060732345522492292">"Play or stop playback"</string>
+ <string name="description_playback_speakerphone" msgid="6008323900245707504">"Switch on or off speakerphone"</string>
+ <string name="description_playback_seek" msgid="4509404274968530055">"Seek playback position"</string>
+ <string name="description_rate_decrease" msgid="3161652589401708284">"Decrease playback rate"</string>
+ <string name="description_rate_increase" msgid="6324606574127052385">"Increase playback rate"</string>
+ <string name="action_menu_call_history_description" msgid="9018442816219748968">"Call History"</string>
+ <string name="action_menu_overflow_description" msgid="2303272250613084574">"More options"</string>
+ <string name="action_menu_dialpad_button" msgid="1425910318049008136">"dial pad"</string>
+ <string name="menu_copy" msgid="6108677035381940698">"Copy"</string>
+ <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Show outgoing only"</string>
+ <string name="menu_show_incoming_only" msgid="7534206815238877417">"Show incoming only"</string>
+ <string name="menu_show_missed_only" msgid="154473166059743996">"Show missed only"</string>
+ <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Show voicemails only"</string>
+ <string name="menu_show_all_calls" msgid="7560347482073345885">"Show all calls"</string>
+ <string name="add_2sec_pause" msgid="9214012315201040129">"Add 2-sec pause"</string>
+ <string name="add_wait" msgid="3360818652790319634">"Add wait"</string>
+ <string name="dialer_settings_label" msgid="4305043242594150479">"Settings"</string>
+ <string name="menu_newContact" msgid="1209922412763274638">"New contact"</string>
+ <string name="menu_allContacts" msgid="6948308384034051670">"All contacts"</string>
+ <string name="callDetailTitle" msgid="5340227785196217938">"Call details"</string>
+ <string name="toast_call_detail_error" msgid="6947041258280380832">"Details not available"</string>
+ <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Use touch tone keypad"</string>
+ <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Return to call in progress"</string>
+ <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Add call"</string>
+ <string name="type_incoming" msgid="6502076603836088532">"Incoming call"</string>
+ <string name="type_outgoing" msgid="343108709599392641">"Outgoing call"</string>
+ <string name="type_missed" msgid="2720502601640509542">"Missed call"</string>
+ <string name="type_incoming_video" msgid="82323391702796181">"Incoming video call"</string>
+ <string name="type_outgoing_video" msgid="2858140021680755266">"Outgoing video call"</string>
+ <string name="type_missed_video" msgid="954396897034220545">"Missed video call"</string>
+ <string name="type_voicemail" msgid="5153139450668549908">"Voicemail"</string>
+ <string name="actionIncomingCall" msgid="6028930669817038600">"Incoming calls"</string>
+ <string name="description_call_log_play_button" msgid="651182125650429846">"Play voicemail"</string>
+ <string name="description_view_contact" msgid="5205669345700598415">"View contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="description_call" msgid="3443678121983852666">"Call <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="description_contact_details" msgid="51229793651342809">"Contact details for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_new_voicemail" msgid="2133792360865517746">"New voicemail."</string>
+ <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> calls."</string>
+ <string name="description_video_call" msgid="2933838090743214204">"Video call."</string>
+ <string name="description_send_text_message" msgid="3118485319691414221">"Send SMS 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="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>
+ <string name="private_num" msgid="6374339738119166953">"Private number"</string>
+ <string name="payphone" msgid="7726415831153618726">"Payphone"</string>
+ <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+ <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Can\'t call this number"</string>
+ <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"To set up voicemail, go to Menu &gt; Settings."</string>
+ <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"To call voicemail, first turn off Aeroplane mode."</string>
+ <string name="contact_list_loading" msgid="5488620820563977329">"Loading…"</string>
+ <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+ <string name="meid" msgid="6210568493746275750">"MEID"</string>
+ <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="5547311613368004859">"No contacts app available"</string>
+ <string name="voice_search_not_available" msgid="2977719040254285301">"Voice search not available"</string>
+ <string name="call_not_available" msgid="8941576511946492225">"Cannot make a phone call because the Phone application has been disabled."</string>
+ <string name="activity_not_available" msgid="2287665636817987623">"No app for that on this device"</string>
+ <string name="dialer_hint_find_contact" msgid="1012544667033887519">"Enter a name or phone number"</string>
+ <string name="recentMissed_empty" msgid="4901789420356796156">"No calls"</string>
+ <string name="recentVoicemails_empty" msgid="8582424947259156664">"No recent voicemails"</string>
+ <string name="show_favorites_only" msgid="5520072531022614595">"Show favourites only"</string>
+ <string name="call_log_activity_title" msgid="4612824396355272023">"History"</string>
+ <string name="call_log_all_title" msgid="3566738938889333307">"All"</string>
+ <string name="call_log_missed_title" msgid="4541142293870638971">"Missed"</string>
+ <string name="call_log_voicemail_title" msgid="940422274047025948">"Voicemail"</string>
+ <string name="tab_speed_dial" msgid="7552166276545648893">"Speed dial"</string>
+ <string name="tab_recents" msgid="929949073851377206">"Recents"</string>
+ <string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</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_create_new_contact" msgid="1679917465521554093">"Create new contact"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Add to existing contact"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
+ <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Make video call"</string>
+ <string name="recents_footer_text" msgid="7315554578957453359">"View full call history"</string>
+ <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
+ <string name="speed_dial_empty" msgid="1931474498966072849">"Speed dial is one‑touch dialing for favourites and numbers that you call often"</string>
+ <string name="all_contacts_empty" msgid="2299508125100209367">"No contacts"</string>
+ <string name="contact_tooltip" msgid="2019777545923635266">"Touch image to see all numbers or touch &amp; hold to reorder"</string>
+ <string name="remove_contact" msgid="1080555335283662961">"Remove"</string>
+ <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALL CONTACTS"</string>
+ <string name="call_log_action_call_back" msgid="4944463006859852473">"CALL BACK"</string>
+ <string name="call_log_action_call" msgid="8187991828921352552">"CALL"</string>
+ <string name="call_log_action_redial" msgid="8159106862639797417">"REDIAL"</string>
+ <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEO CALL"</string>
+ <string name="call_log_action_voicemail" msgid="4978620572562925654">"LISTEN"</string>
+ <string name="call_log_action_details" msgid="6252596497021563115">"DETAILS"</string>
+ <string name="description_incoming_missed_call" msgid="2381085098795943627">"Missed call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+ <string name="description_incoming_answered_call" msgid="7117665748428816544">"Answered call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+ <string name="description_outgoing_call" msgid="6386364390619734734">"Call to <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+ <string name="description_phone_account" msgid="1767072759541443861">"on <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+ <string name="description_call_back_action" msgid="3012837380108884260">"Call back <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+ <string name="description_video_call_action" msgid="4303952636480252389">"Video call to <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+ <string name="description_voicemail_action" msgid="8054891873788903063">"Listen to voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+ <string name="description_details_action" msgid="2433827152749491785">"Call details for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+ <string name="toast_entry_removed" msgid="8010830299576311534">"Deleted from call history"</string>
+ <string name="call_log_action_report" msgid="561229827189128879">"REPORT"</string>
+ <string name="call_log_header_today" msgid="3225248682434212981">"Today"</string>
+ <string name="call_log_header_yesterday" msgid="9139172458834033092">"Yesterday"</string>
+ <string name="call_log_header_other" msgid="5769921959940709084">"Older"</string>
+ <string name="call_detail_list_header" msgid="3752717059699600861">"Calls list"</string>
+ <string name="voicemail_speaker_on" msgid="209154030283487068">"Turn speaker on."</string>
+ <string name="voicemail_speaker_off" msgid="7390530056413093958">"Turn speaker off."</string>
+ <string name="voicemail_play_faster" msgid="3444751008615323006">"Play faster."</string>
+ <string name="voicemail_play_slower" msgid="4544796503902818832">"Play slower."</string>
+ <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start or pause playback."</string>
+ <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Display options"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sounds and vibration"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
+ <string name="ringtone_title" msgid="760362035635084653">"Phone ringtone"</string>
+ <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Also vibrate for calls"</string>
+ <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dialpad tones"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dialpad tone length"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Long"</item>
+ </string-array>
+ <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Quick responses"</string>
+ <string name="call_settings_label" msgid="313434211353070209">"Calls"</string>
+ <string name="phone_account_settings_label" msgid="5864322009841175294">"Calling accounts"</string>
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index b1853212c..a07ee0881 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Phone"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Phone"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Call history"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Send SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Call <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit number before call"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Add to contacts"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Clear call history?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"This will delete all calls from your history"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Clearing call history…"</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>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
+ <item quantity="one">Voicemail</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Play"</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">"New voicemail from <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Show missed only"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Show voicemails only"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Show all calls"</string>
- <string name="add_contact" msgid="4579643070374941999">"Add to contacts"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Add 2-sec pause"</string>
<string name="add_wait" msgid="3360818652790319634">"Add wait"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Settings"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Create new contact"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Add to existing contact"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Make video call"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"View full call history"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Speed dial is one‑touch dialing for favourites and numbers that you call often"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"No contacts"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Touch image to see all numbers or touch &amp; hold to reorder"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Dismiss"</string>
<string name="remove_contact" msgid="1080555335283662961">"Remove"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALL CONTACTS"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"CALL BACK"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Listen to voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Call details for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Deleted from call history"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Number reported to Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"REPORT"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Today"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Yesterday"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Play slower."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start or pause playback."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"General"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Contact display options"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sounds and vibrate"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Display options"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sounds and vibration"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
<string name="ringtone_title" msgid="760362035635084653">"Phone ringtone"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Also vibrate for calls"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dialpad tones"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Other"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dialpad tone length"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Long"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Quick responses"</string>
<string name="call_settings_label" msgid="313434211353070209">"Calls"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Calling accounts"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index b1853212c..a07ee0881 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Phone"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Phone"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Call history"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Send SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Call <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit number before call"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Add to contacts"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Clear call history?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"This will delete all calls from your history"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Clearing call history…"</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>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
+ <item quantity="one">Voicemail</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Play"</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">"New voicemail from <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Show missed only"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Show voicemails only"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Show all calls"</string>
- <string name="add_contact" msgid="4579643070374941999">"Add to contacts"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Add 2-sec pause"</string>
<string name="add_wait" msgid="3360818652790319634">"Add wait"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Settings"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Create new contact"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Add to existing contact"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Make video call"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"View full call history"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Speed dial is one‑touch dialing for favourites and numbers that you call often"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"No contacts"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Touch image to see all numbers or touch &amp; hold to reorder"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Dismiss"</string>
<string name="remove_contact" msgid="1080555335283662961">"Remove"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALL CONTACTS"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"CALL BACK"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Listen to voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Call details for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Deleted from call history"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Number reported to Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"REPORT"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Today"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Yesterday"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Play slower."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start or pause playback."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"General"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Contact display options"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sounds and vibrate"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Display options"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sounds and vibration"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
<string name="ringtone_title" msgid="760362035635084653">"Phone ringtone"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Also vibrate for calls"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dialpad tones"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Other"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dialpad tone length"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Long"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Quick responses"</string>
<string name="call_settings_label" msgid="313434211353070209">"Calls"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Calling accounts"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index db506b226..b154233f1 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Teléfono"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Teléfono"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Historial de llamadas"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Enviar SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes de llamar"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Agregar a contactos"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"¿Eliminar el historial de llamadas?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Esta acción eliminará todas las llamadas del historial"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Eliminando historial de llamadas…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mensaje de voz"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz </item>
+ <item quantity="one">mensaje de voz</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproducir"</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">"Nuevo mensaje de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar solo perdidas"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostrar solo mensajes de voz"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas las llamadas"</string>
- <string name="add_contact" msgid="4579643070374941999">"Agregar a contactos"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Agregar pausa de 2 segundos"</string>
<string name="add_wait" msgid="3360818652790319634">"Agregar espera"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Configuración"</string>
@@ -141,14 +139,15 @@
<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 al <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Agregar a contactos"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crear contacto nuevo"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Agregar a contacto existente"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Realizar videollamada"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Ver historial de llamadas completo"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> llamadas perdidas nuevas"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"El marcado rápido te permite llamar a tus contactos favoritos y a los números que llamas con más frecuencia con solo tocar la pantalla una vez."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"No hay contactos."</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Toca la imagen para ver todos los números o mantenla presionada para cambiar el orden."</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Descartar"</string>
<string name="remove_contact" msgid="1080555335283662961">"Eliminar"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TODOS LOS CONTACTOS"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"DEVOLVER LLAMADA"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Escuchar buzón de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Detalles de llamada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Se eliminó del historial de llamadas."</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Se informó el número a Google."</string>
<string name="call_log_action_report" msgid="561229827189128879">"DENUNCIAR"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Hoy"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Ayer"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Disminuir velocidad de reproducción"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar o pausar la reproducción"</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"General"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opciones de visualización de contactos"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sonidos y vibración"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Opciones de visualización"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sonidos y vibración"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilidad"</string>
<string name="ringtone_title" msgid="760362035635084653">"Tono del teléfono"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar también en llamadas"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonos del teclado"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Otro"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Longitud del tono del teclado"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Largo"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respuestas rápidas"</string>
<string name="call_settings_label" msgid="313434211353070209">"Llamadas"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Cuentas telefónicas"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index b396d0240..99e9bc245 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Teléfono"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Teléfono"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Historial de llamadas"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Enviar SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes de llamar"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Añadir a contactos"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"¿Borrar historial de llamadas?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Se eliminarán todas las llamadas del historial"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Borrando historial de llamadas…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mensaje de voz"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz </item>
+ <item quantity="one"> mensaje de voz</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproducir"</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">"Nuevo mensaje de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"Añadir a contactos"</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="dialer_settings_label" msgid="4305043242594150479">"Ajustes"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crear nuevo contacto"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Añadir al contacto actual"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Hacer videollamada"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Ver historial de llamadas completo"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> llamadas perdidas nuevas"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"La marcación rápida te permite llamar a tus contactos favoritos y a los números que llamas con más frecuencia con solo tocar la pantalla una vez"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"No hay contactos"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Toca la imagen para ver todos los números o mantenla pulsada para cambiar el orden"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Ignorar"</string>
<string name="remove_contact" msgid="1080555335283662961">"Eliminar"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TODOS LOS CONTACTOS"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"DEVOLVER LLAMADA"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Escuchar el buzón de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Detalles de llamada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Eliminada del historial de llamadas"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Número notificado a Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"INFORMAR"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Hoy"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Ayer"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Reproducir más lento."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar o pausar reproducción."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Generales"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opciones para mostrar contactos"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sonido y vibración"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Opciones de visualización"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sonido y vibración"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilidad"</string>
<string name="ringtone_title" msgid="760362035635084653">"Tono del teléfono"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar también en llamadas"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonos del teclado"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Otros"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duración del tono del teclado"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Tono normal"</item>
+ <item msgid="6177579030803486015">"Tono largo"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respuestas rápidas"</string>
<string name="call_settings_label" msgid="313434211353070209">"Llamadas"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Cuentas de llamadas"</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index a92618429..49d9e0d2a 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Kõneajalugu"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS-i saatmine"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Helista kasutajale <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Muuda enne helistamist numbrit"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Lisa kontaktidesse"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Kas kustutada kõneajalugu?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"See kustutab ajaloost kõik kõned"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Kõneajaloo kustutamine ..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Kõnepost"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> kõnepostisõnumit"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> kõneposti teadet </item>
+ <item quantity="one">Kõneposti teade</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Esitamine"</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">"Uus kõnepostisõnum kasutajalt <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Kuva ainult vastamata"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Kuva ainult kõnepostisõnumeid"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Kuva kõik kõned"</string>
- <string name="add_contact" msgid="4579643070374941999">"Lisa kontaktide hulka"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Lisa 2-sekundiline paus"</string>
<string name="add_wait" msgid="3360818652790319634">"Lisa ootama"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Seaded"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Loo uus kontakt"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Lisa olemasolevale kontaktile"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS-i saatmine"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videokõne tegemine"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Kogu kõneajaloo vaatamine"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> uus/uut vastamata kõne(t)"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Kiirvalimiset kasutades saate ühe puudutusega helistada lemmiknumbritele ja sagedasti kasutatavatele numbritele"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Kontakte pole"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Puudutage kujutist, et näha kõiki numbreid, või puudutage pikalt järjestuse muutmiseks"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Loobu"</string>
<string name="remove_contact" msgid="1080555335283662961">"Eemalda"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"KÕIK KONTAKTID"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"HELISTA TAGASI"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Kontakti <xliff:g id="NAMEORNUMBER">^1</xliff:g> kõneposti kuulamine"</string>
<string name="description_details_action" msgid="2433827152749491785">"Kontakti <xliff:g id="NAMEORNUMBER">^1</xliff:g> kõne üksikasjad"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Kustutatud kõneajaloost"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Number edastati Google\'ile"</string>
<string name="call_log_action_report" msgid="561229827189128879">"TEAVITA"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Täna"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Eile"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Aeglasem esitus."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Esituse alustamine või peatamine."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Üldine"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kontaktide kuvavalikud"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Helid ja vibreerimine"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Kuvamisvalikud"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Helid ja vibratsioon"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Juurdepääsetavus"</string>
<string name="ringtone_title" msgid="760362035635084653">"Telefoni helin"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibreeri ka kõnede puhul"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Valimisklahvistiku toonid"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Muu"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Valimisklahvistiku tooni pikkus"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Tavaline"</item>
+ <item msgid="6177579030803486015">"Pikk"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Kiirvastused"</string>
<string name="call_settings_label" msgid="313434211353070209">"Kõned"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Helistamiskontod"</string>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 8decea8f2..0e4018969 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Deitu"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefonoa"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Deien historia"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Bidali SMS mezua"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Deitu <xliff:g id="NAME">%s</xliff:g> erabiltzaileari"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editatu zenbakia deitu aurretik"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Gehitu kontaktuetan"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Deien historia garbitu nahi duzu?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Historiako dei guztiak ezabatuko dira"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Deien historia garbitzen…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Erantzungailua"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ahots-mezu erantzungailuan"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> Erantzungailuko <xliff:g id="COUNT">%1$d</xliff:g> mezu </item>
+ <item quantity="one">Erantzungailuko mezua</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Erreproduzitu"</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> deitzailearen ahots-mezu berria"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Erakutsi galduak soilik"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Erakutsi erantzungailukoak soilik"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Erakutsi dei guztiak"</string>
- <string name="add_contact" msgid="4579643070374941999">"Gehitu kontaktuetan"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Gehitu 2 segundoko pausa"</string>
<string name="add_wait" msgid="3360818652790319634">"Gehitu itxaronaldia"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Ezarpenak"</string>
@@ -141,14 +139,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Gogokoetatik kendu da"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Desegin"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Deitu <xliff:g id="NUMBER">%s</xliff:g> zenbakira"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Gehitu kontaktuetan"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Sortu kontaktua"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Gehitu lehendik dagoen kontaktu batean"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Bidali SMS mezua"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Egin bideo-deia"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Ikusi deien historia osoa"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> dei galdu berri"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Markatze bizkorrak gehien erabiltzen dituzun zenbaki eta gogokoetara ukitze bakarrarekin deitzeko balio du"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Ez dago kontakturik"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Ukitu irudia zenbaki guztiak ikusteko, edo eduki ezazu ukituta berrantolatzeko"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Baztertu"</string>
<string name="remove_contact" msgid="1080555335283662961">"Kendu"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"KONTAKTU GUZTIAK"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ITZULI DEIA"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Deitzaile honek erantzungailuan utzitako ahots-mezuak entzutea: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> kontaktuaren xehetasunak"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Ezabatu deien historiatik"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Zenbakiaren berri eman zaio Google-ri"</string>
<string name="call_log_action_report" msgid="561229827189128879">"SALATU"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Gaur"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Atzo"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Erreproduzitu mantsoago."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Hasi edo gelditu erreprodukzioa."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Orokorra"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kontaktuak bistaratzeko aukerak"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Soinuak eta dardara"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Bistaratze-aukerak"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Soinuak eta dardara"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Erabilerraztasuna"</string>
<string name="ringtone_title" msgid="760362035635084653">"Telefonoaren tonua"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Dardara deiak jasotzean ere"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Markagailuaren tonuak"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Beste batzuk"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Markagailuaren tonuaren iraupena"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normala"</item>
+ <item msgid="6177579030803486015">"Luzea"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Erantzun bizkorrak"</string>
<string name="call_settings_label" msgid="313434211353070209">"Deiak"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Deiak egiteko kontuak"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 45f0ac063..5926a47fe 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"تلفن"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"تلفن"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"سابقه تماس"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"ارسال پیامک"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"سابقه تماس پاک شود؟"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"این کار همه تماس‌ها را از سابقه شما حذف می‌کند"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"در حال پاک کردن سابقه تماس..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"پست صوتی"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> پست صوتی"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> پست صوتی </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> پست صوتی </item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"افزودن به مخاطبین"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"افزودن یک مکث ۲ ثانیه‌ای"</string>
<string name="add_wait" msgid="3360818652790319634">"افزودن انتظار"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"تنظیمات"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"ایجاد مخاطب جدید"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"افزودن به مخاطب موجود"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ارسال پیامک"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"برقراری تماس ویدیویی"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"مشاهده سابقه تماس به صورت کامل"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> تماس‌ بی‌پاسخ جدید"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"شماره‌گیری سریع، شماره‌گیری تک لمسی برای مخاطبین برگزیده و شماره‌هایی است که اغلب با آنها تماس می‌گیرید"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"هیچ مخاطبی موجود نیست"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"برای مشاهده همه شماره‌ها، تصویر را لمس کنید یا برای ترتیب مجدد لمس کنید و نگه دارید"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"رد کردن"</string>
<string name="remove_contact" msgid="1080555335283662961">"حذف"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"همه مخاطبین"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"تماس"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"گوش دادن به پست صوتی از <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"جزئیات تماس برای <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"از سابقه تماس حذف شد"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"‏شماره به Google گزارش شد"</string>
<string name="call_log_action_report" msgid="561229827189128879">"گزارش"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"امروز"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"دیروز"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"پخش آهسته‌تر."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"شروع یا توقف موقت بازپخش."</string>
<string name="list_delimeter" msgid="4571593167738725100">"، "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"عمومی"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"گزینه‌های نمایش تماس"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"صدا و لرزش"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"گزینه‌های نمایش"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"صدا و لرزش"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"دسترس‌پذیری"</string>
<string name="ringtone_title" msgid="760362035635084653">"آهنگ زنگ تلفن"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"تماس‌‌ها لرزش هم داشته باشند"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"صداهای صفحه شماره‌گیری"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"موارد دیگر"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"طول آهنگ صفحه شماره‌گیری"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"عادی"</item>
+ <item msgid="6177579030803486015">"طولانی"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"پاسخ‌های سریع"</string>
<string name="call_settings_label" msgid="313434211353070209">"تماس‌ها"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"حساب‌های تماس اینترنتی"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index b7a6b0cb4..92808b064 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Puhelin"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Puhelin"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Soittohistoria"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Lähetä tekstiviesti"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Soita: <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Muokkaa numeroa ennen puhelua"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Lisää yhteystietoihin"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Tyhjennetäänkö soittohistoria?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Kaikki soittohistorian tiedot poistetaan"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Tyhjennetään soittohistoriaa…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Vastaaja"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> vastaajaviestiä"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> vastaajaviestiä </item>
+ <item quantity="one">Vastaajaviesti</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Toista"</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">"Uusi vastaajaviesti: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Näytä vain vastaamattomat"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Näytä vain vastaajaviestit"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Näytä kaikki puhelut"</string>
- <string name="add_contact" msgid="4579643070374941999">"Lisää yhteystietoihin"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Lisää 2 sekunnin tauko"</string>
<string name="add_wait" msgid="3360818652790319634">"Lisää tauko"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Asetukset"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Luo uudet yhteystiedot"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Lisää olemassa oleviin yhteystietoihin"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Lähetä tekstiviesti"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Soita videopuhelu"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Näytä koko soittohistoria"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> uutta vastaamatonta puhelua"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Pikavalinnan avulla voit soittaa yhdellä kosketuksella suosikeillesi ja muihin usein käyttämiisi numeroihin"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Ei yhteystietoja"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Katso kaikki numerot koskettamalla kuvaa tai järjestele tietoja koskettamalla kuvaa pitkään"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Ohita"</string>
<string name="remove_contact" msgid="1080555335283662961">"Poista"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"KAIKKI YHTEYSTIEDOT"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"SOITA TAKAISIN"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Kuuntele vastaajaviesti: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Yhteystiedon <xliff:g id="NAMEORNUMBER">^1</xliff:g> puhelutiedot"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Poistettu soittohistoriasta"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numero ilmoitettu Googlelle"</string>
<string name="call_log_action_report" msgid="561229827189128879">"TEE ILMOITUS"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Tänään"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Eilen"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Toista hitaammin."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Aloita tai keskeytä toisto."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Yleiset"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Yhteystietojen näyttöasetukset"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Äänet ja värinä"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Näyttöasetukset"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Äänet ja värinä"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Esteettömyys"</string>
<string name="ringtone_title" msgid="760362035635084653">"Puhelimen soittoääni"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Värinä myös puheluille"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Näppäimistön äänet"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Muut"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Näppäimistön äänen pituus"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normaali"</item>
+ <item msgid="6177579030803486015">"Pitkä"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Pikavastaukset"</string>
<string name="call_settings_label" msgid="313434211353070209">"Puhelut"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Puhelutilit"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index f858e1d8e..37bba6766 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Téléphone"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Téléphone"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Historique des appels"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Envoyer un texto"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Appeler <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modifier le numéro avant de passer l\'appel"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Ajouter aux contacts"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Effacer l\'historique des appels?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tous les appels seront supprimés de votre historique."</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Suppression historique des appels…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Messagerie vocale"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> messages vocaux"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> message vocal </item>
+ <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> messages vocaux </item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Lire"</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">"Nouveau message vocal de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Afficher appels manqués uniq."</string>
<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_contact" msgid="4579643070374941999">"Ajouter aux contacts"</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="dialer_settings_label" msgid="4305043242594150479">"Paramètres"</string>
@@ -119,7 +117,7 @@
<string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Pour configurer la messagerie vocale, accédez à Menu &gt; Paramètres."</string>
<string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Veuillez désactiver le mode Avion avant d\'appeler la messagerie vocale."</string>
<string name="contact_list_loading" msgid="5488620820563977329">"Chargement en cours..."</string>
- <string name="imei" msgid="3045126336951684285">"Code IMEI"</string>
+ <string name="imei" msgid="3045126336951684285">"Code IIEM"</string>
<string name="meid" msgid="6210568493746275750">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"Chargement depuis la carte SIM..."</string>
<string name="simContacts_title" msgid="27341688347689769">"Contacts de carte SIM"</string>
@@ -141,14 +139,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Supprimé des favoris"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Ajouter aux contacts"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Créer un contact"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Ajouter à un contact existant"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Envoyer un texto"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Faire un appel vidéo"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Afficher tout l\'historique des appels"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nouveaux appels manqués"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"La numérotation abrégée vous permet d\'appeler vos contacts favoris et les numéros que vous appelez fréquemment d\'un simple toucher du doigt."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Aucun contact"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Touchez l\'image pour afficher tous les numéros, ou maintenez votre doigt sur l\'écran pour les réorganiser"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Fermer"</string>
<string name="remove_contact" msgid="1080555335283662961">"Supprimer"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TOUS LES CONTACTS"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"RAPPELER"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Écouter le message vocal de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Détails de l\'appel pour <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"L\'appel a bien été supprimé de l\'historique"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Le numéro a bien été signalé à Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"SIGNALER"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Aujourd\'hui"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Hier"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Lire moins vite."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Lancer ou interrompre la lecture."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Général"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Options d\'affichage des contacts"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons et vibrations"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Options d\'affichage"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons et vibrations"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilité"</string>
<string name="ringtone_title" msgid="760362035635084653">"Sonnerie du téléphone"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrer aussi pour les appels"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonalités du clavier"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Autre"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durée des tonalités du pavé numérique"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normale"</item>
+ <item msgid="6177579030803486015">"Longue"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Réponses rapides"</string>
<string name="call_settings_label" msgid="313434211353070209">"Appels"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Comptes d\'appel"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 7e5606803..f70be5214 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Téléphone"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Tél."</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Historique des appels"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Envoyer un SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Appeler <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modifier le numéro avant d\'effectuer l\'appel"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Ajouter aux contacts"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Supprimer l\'historique des appels ?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tous les appels seront supprimés de votre historique."</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Suppression historique des appels…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Messages vocaux"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> messages vocaux"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> message vocal </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> messages vocaux </item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Lire"</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">"Nouveau message vocal de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Afficher appels manqués uniq."</string>
<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_contact" msgid="4579643070374941999">"Ajouter aux contacts"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Ajouter une pause de 2 s"</string>
<string name="add_wait" msgid="3360818652790319634">"Ajouter une attente"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Paramètres"</string>
@@ -141,14 +139,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Supprimé des favoris."</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Ajouter aux contacts"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Créer un contact"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Ajouter à un contact"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Envoyer un SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Passer un appel vidéo"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Afficher tout l\'historique des appels"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"Nouveaux appels manqués : <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"La numérotation abrégée vous permet d\'appeler vos contacts favoris et les numéros que vous appelez fréquemment d\'une simple pression du doigt."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Aucun contact"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Appuyer sur l\'image pour afficher tous les numéros, ou appuyer dessus de manière prolongée pour réorganiser ces derniers"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Ignorer"</string>
<string name="remove_contact" msgid="1080555335283662961">"Supprimer"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TOUS LES CONTACTS"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"RAPPELER"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Écouter le message vocal laissé par le numéro ou le contact \"<xliff:g id="NAMEORNUMBER">^1</xliff:g>\""</string>
<string name="description_details_action" msgid="2433827152749491785">"Informations sur l\'appel pour <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"L\'appel a bien été supprimé de l\'historique."</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Le numéro a bien été signalé à Google."</string>
<string name="call_log_action_report" msgid="561229827189128879">"SIGNALER"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Aujourd\'hui"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Hier"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Lire moins vite"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Lancer ou suspendre la lecture"</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Général"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Options d\'affichage des contacts"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons et vibreur"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Options d\'affichage"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons et vibreur"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilité"</string>
<string name="ringtone_title" msgid="760362035635084653">"Sonnerie du téléphone"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibreur aussi pour les appels"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Son du clavier"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Autre"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durée de la tonalité du clavier"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normale"</item>
+ <item msgid="6177579030803486015">"Longue"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Réponses rapides"</string>
<string name="call_settings_label" msgid="313434211353070209">"Appels"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Comptes téléphoniques"</string>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 7104da6e8..a31fe64ac 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Teléfono"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Teléfono"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Historial de chamadas"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Enviar SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Chamar a <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes chamar"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Engadir a contactos"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Borrar o historial de chamadas?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Esta acción eliminará todas as chamadas do teu historial"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Borrando historial de chamadas…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Correo de voz"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> correos de voz"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> correos de voz </item>
+ <item quantity="one">Correo de voz</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproducir"</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">"Novo correo de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar só as perdidas"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostrar só os correos de voz"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
- <string name="add_contact" msgid="4579643070374941999">"Engadir a contactos"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Engadir pausa de 2 segundos"</string>
<string name="add_wait" msgid="3360818652790319634">"Engadir espera"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Configuración"</string>
@@ -141,14 +139,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Eliminado dos favoritos"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfacer"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Chamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Engadir a contactos"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crear novo contacto"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Engadir a un contacto existente"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Realizar unha videochamada"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Ver historial de chamadas completo"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> chamadas perdidas novas"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"A marcación rápida é unha marcación dun só toque para favoritos e números aos que chamas a miúdo"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Sen contactos"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Toca a imaxe para ver todos os números ou mantena premida para reordenala"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Rexeitar"</string>
<string name="remove_contact" msgid="1080555335283662961">"Eliminar"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TODOS OS CONTACTOS"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"DEVOLVER CHAMADA"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Escoitar o correo de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Detalles da chamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Eliminouse do historial de chamadas"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Informouse do número a Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"INFORMAR"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Hoxe"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Onte"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Reproducir máis lento."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar ou pausar a reprodución."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Xeral"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opcións de visualización de contactos"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons e vibración"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Opcións de visualización"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons e vibración"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilidade"</string>
<string name="ringtone_title" msgid="760362035635084653">"Ton de chamada do teléfono"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar tamén nas chamadas"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons do teclado de marcación"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Outra"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duración do ton do teclado de marcación"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Longa"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostas rápidas"</string>
<string name="call_settings_label" msgid="313434211353070209">"Chamadas"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Contas de chamadas"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 4f353e8d1..a93a93860 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -21,22 +21,21 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"फ़ोन"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"फ़ोन"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"कॉल इतिहास"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS भेजें"</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_removeFromRecentList" msgid="5551148439199439404">"कॉल इतिहास से साफ़ करें"</string>
<string name="recentCalls_deleteAll" msgid="5157887960461979812">"कॉल इतिहास साफ़ करें"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"ध्वनि मेल हटाएं"</string>
+ <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"वॉयस मेल हटाएं"</string>
<string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"ध्‍वनिमेल साझा करें"</string>
<string name="recentCalls_empty" msgid="8555115547405030734">"कोई कॉल नहीं"</string>
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"कॉल इतिहास साफ़ करें?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"इससे आपके इतिहास से सभी कॉल हटा दिए जाएंगे"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"कॉल इतिहास साफ़ किया जा रहा है…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"वॉयस मेल"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ध्‍वनिमेल"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> वॉइसमेल </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> वॉइसमेल </item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"संपर्कों में जोड़ें"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2-सेकंड का विराम जोड़ें"</string>
<string name="add_wait" msgid="3360818652790319634">"प्रतीक्षा का समय बढ़ाएं"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"सेटिंग"</string>
@@ -103,7 +101,7 @@
<string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> संपर्क देखें"</string>
<string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> को कॉल करें"</string>
<string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> का संपर्क विवरण"</string>
- <string name="description_new_voicemail" msgid="2133792360865517746">"नया ध्वनि मेल."</string>
+ <string name="description_new_voicemail" msgid="2133792360865517746">"नया वॉयस मेल."</string>
<string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> कॉल."</string>
<string name="description_video_call" msgid="2933838090743214204">"वीडियो कॉल."</string>
<string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> को SMS भेजें"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"नया संपर्क बनाएं"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"मौजूदा संपर्क में जोड़ें"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS भेजें"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"वीडियो कॉल करें"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"पूर्ण काल ​​इतिहास देखें"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> छूटे हुए नए कॉल"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"स्‍पीड डायल उन पसंदीदा लोगों और नंबरों के लिए एक-स्‍पर्श डायलिंग है जिन्‍हें आप अक्‍सर कॉल करते हैं"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"कोई संपर्क नहीं"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"सभी नंबर देखने के लिए चित्र को स्‍पर्श करें या पुन: क्रमित करने के लिए स्‍पर्श करके रखें"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"ख़ारिज करें"</string>
<string name="remove_contact" msgid="1080555335283662961">"निकालें"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"सभी संपर्क"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"वापस कॉल करें"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> की वॉयस मेल सुनें"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> के कॉल विवरण"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"कॉल इतिहास से हटाएं"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google को नंबर की रिपोर्ट की गई"</string>
<string name="call_log_action_report" msgid="561229827189128879">"रिपोर्ट करें"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"आज"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"कल"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"धीरे चलाएं."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"प्लेबैक प्रारंभ करें या रोकें."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"सामान्य"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"संपर्क प्रदर्शन के विकल्प"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ध्वनि और कंपन"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"प्रदर्शन विकल्प"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ध्‍वनि और कंपन"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"सरल उपयोग"</string>
<string name="ringtone_title" msgid="760362035635084653">"फ़ोन रिंगटोन"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"कॉल के लिए भी कंपन"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"डायलपैड टोन"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"अन्य"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"डायलपैड टोन की अवधि"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"सामान्य"</item>
+ <item msgid="6177579030803486015">"लंबी"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"झटपट उत्तर"</string>
<string name="call_settings_label" msgid="313434211353070209">"कॉल"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"कॉलिंग खाते"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 23d74775e..831d0efe0 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Povijest poziva"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Pošalji SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Nazovi <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Uredi broj prije pozivanja"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Dodaj u kontakte"</string>
@@ -33,10 +32,11 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Želite li izbrisati povijest poziva?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Izbrisat će se svi pozivi iz vaše povijesti"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Brisanje povijesti poziva…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Govorna pošta"</item>
- <item quantity="other" msgid="5513481419205061254">"Br. govornih pošta: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> poruka govorne pošte </item>
+ <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> poruke govorne pošte </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> poruka govorne pošte </item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduciraj"</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">"Nova govorna pošta od kontakta <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +80,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Prikaži samo propuštene"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Prikaži samo govorne pošte"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Prikaz svih poziva"</string>
- <string name="add_contact" msgid="4579643070374941999">"Dodaj u kontakte"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj pauzu od 2 sek."</string>
<string name="add_wait" msgid="3360818652790319634">"Dodaj čekanje"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Postavke"</string>
@@ -141,14 +140,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Izrada novog kontakta"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Dodavanje postojećem kontaktu"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Pošalji SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Uputite videopoziv"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Prikaz cijele povijesti poziva"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"Broj novih propuštenih poziva: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Brzo biranje omogućuje vam da jednim dodirom birate favorite i brojeve koje često zovete"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Nema kontakata"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Dodirnite sliku da biste vidjeli sve brojeve ili dodirnite i zadržite da biste promijenili raspored"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Odbaci"</string>
<string name="remove_contact" msgid="1080555335283662961">"Ukloni"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"SVI KONTAKTI"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"POVRATNI POZIV"</string>
@@ -166,7 +166,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Slušanje govorne pošte kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Pojedinosti o pozivu za kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Izbrisano iz povijesti poziva"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Broj je prijavljen Googleu"</string>
<string name="call_log_action_report" msgid="561229827189128879">"PRIJAVI"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Danas"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Jučer"</string>
@@ -178,13 +177,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Sporija reprodukcija."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Pokretanje ili pauziranje reprodukcije."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Općenito"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opcije prikaza kontakata"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Zvukovi i vibracija"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Opcije prikaza"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvukovi i vibracije"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Pristupačnost"</string>
<string name="ringtone_title" msgid="760362035635084653">"Melodija zvona telefona"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibracija i za pozive"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonovi biranja brojeva"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Ostalo"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duljina zvuka tipkovnice"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Uobičajena"</item>
+ <item msgid="6177579030803486015">"Duga"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Brzi odgovori"</string>
<string name="call_settings_label" msgid="313434211353070209">"Pozivi"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Pozivanje računa"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index e666d56d6..398fe6fc5 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Híváslista"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS küldése"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> hívása"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Szám szerkesztése hívás előtt"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Hozzáadás a névjegyekhez"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Törli a híváslistát?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ezzel törli az összes hívást az előzmények közül"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Híváslista törlése…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Hangposta"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> hangüzenet"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> hangpostaüzenet </item>
+ <item quantity="one">Hangpostaüzenet</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Lejátszás"</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">"Új hangüzenet tőle: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Csak a nem fogadottak"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Csak a hangüzenetek"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Összes hívás megjelenítése"</string>
- <string name="add_contact" msgid="4579643070374941999">"Hozzáadás a névjegyekhez"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2 mp-es szünet hozzáadása"</string>
<string name="add_wait" msgid="3360818652790319634">"Várakozás hozzáadása"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Beállítások"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Új névjegy létrehozása"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Hozzáadás a meglévő névjegyhez"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS küldése"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videohívás kezdeményezése"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Teljes híváslista megtekintése"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> új nem fogadott hívás"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"A gyorshívás egyérintéses tárcsázást jelent a kedvenc és gyakran hívott számokhoz"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Nincsenek névjegyek"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Érintse meg a képet az összes szám megjelenítéséhez, vagy tartsa nyomva az átrendezéshez"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Elvetés"</string>
<string name="remove_contact" msgid="1080555335283662961">"Eltávolítás"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ÖSSZES NÉVJEGY"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"VISSZAHÍVÁS"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> hangpostaüzenetének meghallgatása"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> – hívásrészletek"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Törölve a híváslistáról"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Szám jelentve a Google-nak"</string>
<string name="call_log_action_report" msgid="561229827189128879">"BEJELENTÉS"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Ma"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Tegnap"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Lassabb lejátszás."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Lejátszás indítása vagy szüneteltetése."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Általános"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Névjegy megjelenítési lehetőségei"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Hangok és rezgés"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Megjelenítési beállítások"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Hangok és rezgés"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Kisegítő lehetőségek"</string>
<string name="ringtone_title" msgid="760362035635084653">"Telefon csengőhangja"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Rezgés a hívásoknál is"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tárcsázó hangjai"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Egyéb"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tárcsázási hang hossza"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normál"</item>
+ <item msgid="6177579030803486015">"Hosszú"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Gyors válaszok"</string>
<string name="call_settings_label" msgid="313434211353070209">"Hívások"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Telefonos fiókok"</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index b45b74d86..918001d04 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Հեռախոս"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Հեռախոս"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Զանգերի պատմություն"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Ուղարկել SMS"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Մաքրե՞լ զանգերի պատմությունը:"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Այս գործողությունը ամբողջովին կջնջի զանգերի պատմությունը"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Զանգերի պատմության մաքրում…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Ձայնային փոստ"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ձայնային փոստ"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> ձայնային փոստ </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ձայնային փոստ </item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"Ավելացնել կոնտակտներում"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Ավելացնել 2 վայրկյան դադար"</string>
<string name="add_wait" msgid="3360818652790319634">"Ավելացնել սպասում"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Կարգավորումներ"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"Ստեղծել նոր կոնտակտ"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Ավելացնել առկա կոնտակտին"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Ուղարկել SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Կատարել տեսազանգ"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Դիտել բոլոր զանգերի պատմությունը"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> նոր բաց թողնված զանգ"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Արագ համարարկումը մեկ հպումով համարի հավաքման եղանակ է՝ ձեր նախընտրած և հաճախակի հավաքվող համարների համար"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Կոտնակտներ չկան"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Բոլոր համարները տեսնելու համար հպեք պատկերին: Վերադասավորելու համար հպեք և պահեք:"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Անտեսել"</string>
<string name="remove_contact" msgid="1080555335283662961">"Հեռացնել"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ԲՈԼՈՐ ԿՈՆՏԱԿՏՆԵՐԸ"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ՀԵՏ ԶԱՆԳԵԼ"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Լսել ձայնային փոստը <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ից"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> զանգի մասին տվյալներ"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Ջնջվել է զանգերի պատմությունից"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Համարը հաղորդվել է Google-ին"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ԶԵԿՈՒՑԵԼ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Այսօր"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Երեկ"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Նվագարկել ավելի դանդաղ:"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Սկսել կամ դադարեցնել նվագարկումը:"</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Ընդհանուր"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Կոնտակտի ցուցադրման ընտրանքները"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Զանգերանգ և թրթռազանգ"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Ցուցադրման ընտրանքներ"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ձայներ և թրթռում"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Մատչելիություն"</string>
<string name="ringtone_title" msgid="760362035635084653">"Հեռախոսի զանգերանգ"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Նաև թրթռալ զանգերի ժամանակ"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Թվաշարի ձայներանգներ"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Այլ"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Թվաշարի ձայնային ազդանշանի երկարություն"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Սովորական"</item>
+ <item msgid="6177579030803486015">"Երկար"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Արագ պատասխաններ"</string>
<string name="call_settings_label" msgid="313434211353070209">"Զանգեր"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Հաշիվներ զանգերի համար"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 1dc32de8c..fc12943c6 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telepon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telepon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Riwayat panggilan"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Kirim SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Telepon <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit nomor sebelum memanggil"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Tambahkan ke kontak"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Hapus riwayat panggilan?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tindakan ini akan menghapus semua panggilan telepon dari riwayat"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Menghapus riwayat panggilan..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Pesan suara"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Pesan suara"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Pesan suara </item>
+ <item quantity="one">Pesan suara</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Putar"</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">"Pesan suara baru dari <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Tampilkan panggilan terlewat"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Tampilkan pesan suara saja"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Tampilkan semua panggilan"</string>
- <string name="add_contact" msgid="4579643070374941999">"Tambahkan ke kontak"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Tambahkan jeda 2 dtk"</string>
<string name="add_wait" msgid="3360818652790319634">"Tambahkan tunggu"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Setelan"</string>
@@ -141,14 +139,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Dihapus dari favorit"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Batalkan"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Telepon <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Tambahkan ke kontak"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Buat kontak baru"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Tambahkan ke kontak yang ada"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Kirim SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Lakukan video call"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Lihat riwayat panggilan telepon lengkap"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> panggilan tidak terjawab baru"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Panggilan cepat adalah panggilan satu sentuhan untuk favorit dan nomor yang sering ditelepon"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Tidak ada kontak"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Sentuh foto untuk melihat semua nomor atau sentuh &amp; tahan untuk menyusun ulang"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Tutup"</string>
<string name="remove_contact" msgid="1080555335283662961">"Hapus"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"SEMUA KONTAK"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"HUBUNGI KEMBALI"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Dengarkan kotak pesan dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Detail panggilan telepon untuk <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Dihapus dari riwayat panggilan"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nomor dilaporkan ke Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"LAPORKAN"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Hari ini"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Kemarin"</string>
@@ -178,14 +176,18 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Putar lebih lambat."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Mulai atau jeda pemutaran."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Umum"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opsi tampilan kontak"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Suara dan getaran"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Opsi tampilan"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Suara dan getaran"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Aksesibilitas"</string>
<string name="ringtone_title" msgid="760362035635084653">"Nada dering ponsel"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Juga getar saat ada panggilan"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Nada tombol nomor"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Lainnya"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Panjang nada tombol nomor"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Panjang"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respons cepat"</string>
<string name="call_settings_label" msgid="313434211353070209">"Panggilan telepon"</string>
- <string name="phone_account_settings_label" msgid="5864322009841175294">"Akun yang menelepon"</string>
+ <string name="phone_account_settings_label" msgid="5864322009841175294">"Akun panggilan"</string>
</resources>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index c98700714..e6ea02b04 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Sími"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Sími"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Símtalaferill"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Senda SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Hringja í <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Breyta númeri áður en hringt er"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Bæta við tengiliði"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Hreinsa símtalaferil?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Þetta eyðir öllum símtölum af ferlinum"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Hreinsar símtalaferil…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Talhólfsskilaboð"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> talhólfsskilaboð"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> talhólfsskilaboð </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> talhólfsskilaboð </item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spila"</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">"Ný talhólfsskilaboð frá <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Sýna ósvöruð símtöl eingöngu"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Sýna talhólfsskilaboð eingöngu"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Sýna öll símtöl"</string>
- <string name="add_contact" msgid="4579643070374941999">"Bæta við tengiliði"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Bæta við 2 sekúndna töf"</string>
<string name="add_wait" msgid="3360818652790319634">"Bæta töf við"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Stillingar"</string>
@@ -141,14 +139,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Fjarlægður úr uppáhaldi"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Afturkalla"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Hringja í <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Bæta við tengiliði"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Búa til nýjan tengilið"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Bæta við fyrirliggjandi tengilið"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Senda SMS-skilaboð"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Hringja myndsímtal"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Skoða símtalaferil í heild"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ný ósvöruð símtöl"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Með hraðvali geturðu hringt með einni snertingu í uppáhaldstengiliðina og númer sem þú hringir oft í"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Engir tengiliðir"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Snertu myndina til að sjá öll númer eða haltu henni inni til að endurraða"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Hunsa"</string>
<string name="remove_contact" msgid="1080555335283662961">"Fjarlægja"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLIR TENGILIÐIR"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"HRINGJA TIL BAKA"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Hlusta á talhólfsskilaboð frá <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Símtalsupplýsingar fyrir <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Eytt af símtalaferli"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Númer tilkynnt til Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"TILKYNNA"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Í dag"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Í gær"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Spila hægar."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Hefja eða gera hlé á spilun."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Almennt"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Birtingarkostir fyrir tengiliði"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Hljóð og titringur"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Birtingarvalkostir"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Hljóð og titringur"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Aðgengi"</string>
<string name="ringtone_title" msgid="760362035635084653">"Hringitónn síma"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Titra líka fyrir símtöl"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tónar takkaborðs"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Annað"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Lengd takkatóns"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Venjulegur"</item>
+ <item msgid="6177579030803486015">"Langur"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Snarsvör"</string>
<string name="call_settings_label" msgid="313434211353070209">"Símtöl"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Símtalareikningar"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 38289fc39..3ff171de9 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefono"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefono"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Cronologia chiamate"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Invia SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Chiama <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modifica prima di chiamare"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Aggiungi a contatti"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Cancellare la cronologia chiamate?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Verranno eliminate tutte le chiamate dalla cronologia"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Cancellazione cronologia chiamate…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Segreteria"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> messaggi vocali"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> messaggi in segreteria </item>
+ <item quantity="one">Messaggio in segreteria</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Riproduci"</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">"Nuovo messaggio vocale da <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Mostra solo senza risposta"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostra solo messaggi vocali"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Mostra tutte le chiamate"</string>
- <string name="add_contact" msgid="4579643070374941999">"Aggiungi a contatti"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Aggiungi pausa 2 sec"</string>
<string name="add_wait" msgid="3360818652790319634">"Aggiungi attesa"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Impostazioni"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crea nuovo contatto"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Aggiungi a contatto esistente"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Invia SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fai una videochiamata"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Visualizza cronologia completa delle chiamate"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nuove chiamate senza risposta"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"La composizione rapida consente di comporre con un tocco i numeri preferiti e chiamati spesso"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Nessun contatto"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Tocca l\'immagine per visualizzare tutti i numeri, oppure tocca e tieni premuto per cambiare l\'ordine"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Ignora"</string>
<string name="remove_contact" msgid="1080555335283662961">"Rimuovi"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TUTTI I CONTATTI"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"RICHIAMA"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Ascolta il messaggio vocale di: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Dettagli chiamata per <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Eliminato dalla cronologia chiamate"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numero comunicato a Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"SEGNALA"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Oggi"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Ieri"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Riproduci più lentamente."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Avvia o metti in pausa la riproduzione."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Generali"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opzioni di visualizzazione dei contatti"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Suoni e vibrazione"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Opzioni di visualizzazione"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Suoni e vibrazione"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilità"</string>
<string name="ringtone_title" msgid="760362035635084653">"Suoneria telefono"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrazione anche per chiamate"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Toni tastierino"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Altro"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durata tono tastierino"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normale"</item>
+ <item msgid="6177579030803486015">"Lunga"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Risposte rapide"</string>
<string name="call_settings_label" msgid="313434211353070209">"Chiamate"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Account chiamate"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 7daddc002..115a32063 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"טלפון"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"טלפון"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"היסטוריית שיחות"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"‏שלח SMS"</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>
@@ -33,10 +32,12 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"האם לנקות את היסטוריית השיחות?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"פעולה זו תמחק את כל השיחות מההיסטוריה שלך"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"מנקה היסטוריית שיחות…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"דואר קולי"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> הודעות קוליות"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="two"> <xliff:g id="COUNT">%1$d</xliff:g> הודעות דואר קולי </item>
+ <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> הודעות דואר קולי </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> הודעות דואר קולי </item>
+ <item quantity="one">הודעת דואר קולי</item>
+ </plurals>
<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>
@@ -80,7 +81,6 @@
<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_contact" msgid="4579643070374941999">"הוסף לאנשי הקשר"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"הוסף השהיה של 2 שניות"</string>
<string name="add_wait" msgid="3360818652790319634">"הוסף המתנה"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"הגדרות"</string>
@@ -141,14 +141,15 @@
<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_create_new_contact" msgid="1679917465521554093">"צור איש קשר חדש"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"הוסף לאיש קשר קיים"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"‏שלח SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"בצע שיחת וידאו"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"הצג את היסטוריית השיחות המלאה"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> שיחות חדשות שלא נענו"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"חיוג מהיר מאפשר לך להתקשר בנגיעה אחת אל מועדפים ומספרים שאליהם אתה מתקשר בתדירות גבוהה"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"אין אנשי קשר"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"גע בתמונה כדי לראות את כל המספרים או גע נגיעה ממושכת כדי לשנות את הסדר"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"סגור"</string>
<string name="remove_contact" msgid="1080555335283662961">"הסר"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"כל אנשי הקשר"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"התקשר חזרה"</string>
@@ -166,7 +167,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"האזן לדואר קולי מאת <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"פרטי שיחה עבור <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"נמחקה מהיסטוריית השיחות"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"‏המספר דווח ל-Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"דווח"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"היום"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"אתמול"</string>
@@ -178,13 +178,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"הפעל לאט יותר."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"התחל או השהה הפעלה."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"כללי"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"אפשרויות להצגת אנשי קשר"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"צלילים ורטט"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"אפשרויות תצוגה"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"צלילים ורטט"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"נגישות"</string>
<string name="ringtone_title" msgid="760362035635084653">"רינגטון של טלפון"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"הפעל רטט גם עבור שיחות"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"צלילי לוח החיוג"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"אחר"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"אורך צליל של לוח חיוג"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"רגיל"</item>
+ <item msgid="6177579030803486015">"ארוך"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"תגובות מהירות"</string>
<string name="call_settings_label" msgid="313434211353070209">"שיחות"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"חשבונות לביצוע שיחות"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 2bc0466de..534156e6f 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"電話"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"電話"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"通話履歴"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMSを送信"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"通話履歴を消去しますか?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"消去すると、すべての通話が履歴から削除されます"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"通話履歴の消去中…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"ボイスメール"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g>件のボイスメール"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g>件のボイスメール</item>
+ <item quantity="one">1件のボイスメール</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"連絡先に追加"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2秒間の停止を追加"</string>
<string name="add_wait" msgid="3360818652790319634">"待機を追加"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"設定"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"新しい連絡先を作成"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"既存の連絡先に追加"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMSを送信"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ビデオハングアウト"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"通話履歴をすべて表示"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>件の不在着信"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"クイックアクセスは、よく通話するお気に入りや番号にワンタップでダイヤルする機能です"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"連絡先がありません"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"画像をタップするとすべての番号を表示でき、押し続けると並べ替えることができます"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"閉じる"</string>
<string name="remove_contact" msgid="1080555335283662961">"削除"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"すべての連絡先"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"コールバック"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>からのボイスメールを再生"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>の通話の詳細"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"通話履歴から削除しました"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"番号をGoogleに報告しました"</string>
<string name="call_log_action_report" msgid="561229827189128879">"レポート"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"今日"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"昨日"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"遅く再生します。"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"再生を開始または一時停止します。"</string>
<string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"全般"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"連絡先表示オプション"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"音とバイブレーション"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"表示オプション"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"音とバイブレーション"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"ユーザー補助機能"</string>
<string name="ringtone_title" msgid="760362035635084653">"着信音"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"着信時もバイブレーションON"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ダイヤルパッドの音"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"その他"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ダイヤルパッドの音の長さ"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"標準"</item>
+ <item msgid="6177579030803486015">"長め"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"クイック返信"</string>
<string name="call_settings_label" msgid="313434211353070209">"通話"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"通話アカウント"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 1acc15900..64a8b73ad 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"ტელეფონი"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"ტელეფონი"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"საუბრის ისტორია"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS-ის გაგზავნა"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"გასუფთავდეს ზარის ისტორია?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"ეს წაშლის ყველა ზარს თქვენი ისტორიიდან"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"მიმდ. ზარ. ისტ. გასუფთავება…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"ხმოვანი ფოსტა"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ხმოვანი ფოსტა"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ხმოვანი ფოსტა </item>
+ <item quantity="one">ხმოვანი ფოსტა</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"კონტაქტებში დამატება"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"ორწამიანი პაუზის დამატება"</string>
<string name="add_wait" msgid="3360818652790319634">"ლოდინის დამატება"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"პარამეტრები"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"ახალი კონტაქტის შექმნა"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"არსებულ კონტაქტში დამატება"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS-ის გაგზავნა"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ვიდეოზარის განხორციელება"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"ზარების სრული ისტორიის ნახვა"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ახალი გაცდენილი ზარი"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"სწრაფი დარეკვა არის ერთი შეხებით აკრეფა, რჩეული და ხშირად დარეკილი ნომრებისათვის"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"კონტაქტები არ არის"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"ყველა ნომრის სანახავად შეეხეთ სურათს ან და გეჭიროთ მასზე ხელახალი შეკვეთისათვის"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"დახურვა"</string>
<string name="remove_contact" msgid="1080555335283662961">"ამოშლა"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ყველა კონტაქტი"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"გადარეკვა"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-ის ხმოვანი ფოსტის მოსმენა"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ზარის დეტალები"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"ზარის ისტორიიდან წაშლილი"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google-სათვის შეტყობინებული ნომრები"</string>
<string name="call_log_action_report" msgid="561229827189128879">"შეტყობინება"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"დღეს"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"გუშინ"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"დაკვრის შენელება."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"დაკვრის დაწყება ან პაუზა."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"ზოგადი"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"კონტაქტის ჩვენების ვარიანტები"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ხმები და ვიბრაცია"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"ეკრანის პარამეტრები"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"კინო და ვიბრაცია"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"მარტივი წვდომა"</string>
<string name="ringtone_title" msgid="760362035635084653">"ტელეფონის ზარი"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"ზარებზე ასევე ვიბრირება"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ციფერბლატის ტონები"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"სხვა"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ციფერბლატის ტონის ხანგრძლივობა"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"ჩვეულებრივი"</item>
+ <item msgid="6177579030803486015">"გრძელი"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"სწრაფი პასუხი"</string>
<string name="call_settings_label" msgid="313434211353070209">"ზარები"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"ანგარიშების გამოძახება"</string>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 4c86c5b52..e31165d73 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Қоңыраулар тарихы"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS жіберу"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Қоңыраулар тарихын тазалау керек пе?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Бұл тарихтан барлық қоңырауларды жояды"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Қоңыраулар тарихы тазалануда…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Дауыс-хабар"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> дауыс-хабарлар"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> дауыстық хабар </item>
+ <item quantity="one">Дауыстық хабар</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"Контактілерге қосу"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2 сек үзіліс қосу"</string>
<string name="add_wait" msgid="3360818652790319634">"Күтуді қосу"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Параметрлер"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"Жаңа контакт жасау"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Бар контактіге қосу"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS жіберу"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Бейне қоңырау шалу"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Толық қоңыраулар тарихын көру"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> жаңа қабылданбаған қоңыраулар"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Жылдам теру – таңдаулыларды және жиі қоңырау шалатын нөмірлерді бір түртумен теру"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Ешқандай контактілер жоқ"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Барлық нөмірлерді көру үшін түртіңіз немесе ретін өзгерту үшін түртіп, ұстап тұрыңыз"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Бас тарту"</string>
<string name="remove_contact" msgid="1080555335283662961">"Алып тастау"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"БАРЛЫҚ КОНТАКТІЛЕР"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"КЕРІ ҚОҢЫРАУ ШАЛУ"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> дауыстық хабарын тыңдау"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> үшін қоңырау мәліметтері"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Қоңыраулар тарихынан жойылды"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Нөмір туралы Google компаниясына есеп берілді"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ЕСЕП БЕРУ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Бүгін"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Кеше"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Баяуырақ ойнату."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Ойнатуды бастау немесе кідірту."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Жалпы"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Контактілерді көрсету опциялары"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Дыбыстар және дірілдеу"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Дисплей опциялары"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Дыбыстар мен діріл"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Арнайы мүмкіндіктер"</string>
<string name="ringtone_title" msgid="760362035635084653">"Телефон қоңырау әуені"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Сондай-ақ, қоңыраулар үшін дірілдету"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Теру тақтасының үндері"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Басқа"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Теру тақтасы дыбысының ұзындығы"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Қалыпты"</item>
+ <item msgid="6177579030803486015">"Ұзақ"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Жылдам жауаптар"</string>
<string name="call_settings_label" msgid="313434211353070209">"Қоңыраулар"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Есептік жазбаларға қоңыр. шалу"</string>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index f0610a3ca..7f93a425d 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"ទូរសព្ទ"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"ទូរស័ព្ទ"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"ប្រវត្តិ​ហៅ"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"ផ្ញើ​សារ SMS"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ជម្រះប្រវត្តិហៅ?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"វានឹងលុបការហៅទាំងអស់ចេញពីប្រវត្តិរបស់អ្នក"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"កំពុងជម្រះប្រវត្តិហៅ…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"សារ​ជា​សំឡេង"</item>
- <item quantity="other" msgid="5513481419205061254">"សារ​ជា​សំឡេង <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other">សារជាសម្លេង <xliff:g id="COUNT">%1$d</xliff:g> </item>
+ <item quantity="one">សារជាសម្លេង</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"បន្ថែម​ទៅ​ទំនាក់ទំនង"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"បន្ថែម​ការ​ផ្អាក ២វិ."</string>
<string name="add_wait" msgid="3360818652790319634">"បញ្ចូល​ការ​រង់ចាំ"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"ការកំណត់"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"បង្កើតទំនាក់ទំនងថ្មី"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"បន្ថែមទៅទំនាក់ទំនងដែលមានស្រាប់"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ផ្ញើសារ SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ការ​ហៅ​ជា​វីដេអូ"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"មើលប្រវត្តិហៅពេញលេញ"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"ខកខាន​ទទួល​ថ្មី <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"ការហៅទូរស័ព្ទល្បឿនលឿនគឺជាការហៅទូរស័ព្ទដោយគ្រាន់តែចុចមួយពឹក សម្រាប់ទំនាក់ទំនងដែលអ្នកចូលចិត្ត និងលេខដែលអ្នកហៅទៅជាប្រចាំ។"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"មិន​មាន​ទំនាក់ទំនង។"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"ប៉ះរូបភាពដើម្បីមើលលេខទាំងអស់ ឬប៉ះ &amp; សង្កត់ឲ្យជាប់ដើម្បីតម្រៀបឡើងវិញ"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"បដិសេធ"</string>
<string name="remove_contact" msgid="1080555335283662961">"លុបចេញ"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ទំនាក់ទំនង​ទាំងអស់"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ហៅ​ទៅវិញ"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"ស្ដាប់​សារ​ជា​សំឡេង​ពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"ព័ត៌មាន​លម្អិត​ហៅ​សម្រាប់ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"បានលុបចេញពីប្រវត្តិហៅ"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"លេខដែលត្រូវបានរាយការណ៍ទៅ Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"របាយការណ៍"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"ថ្ងៃនេះ"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"ម្សិលមិញ"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"ចាក់​កាន់តែ​យឺត។"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"ចាប់ផ្ដើម ឬ​ផ្អាក​ការ​ចាក់​ឡើងវិញ។"</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"ទូទៅ"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"ជម្រើស​បង្ហាញ​ទំនាក់ទំនង"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"សំឡេង​ និង​ញ័រ"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"ជម្រើសបង្ហាញ"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"សម្លេង និងភាពរំញ័រ"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"លទ្ធភាពប្រើប្រាស់"</string>
<string name="ringtone_title" msgid="760362035635084653">"សំឡេង​រោទ៍​ទូរស័ព្ទ"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"ញ័រ​សម្រាប់​ការ​ហៅ​ផងដែរ"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"សំឡេង​បន្ទះ​លេខ"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"ផ្សេងៗ"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"រយៈពេលនៃសម្លេងបន្ទះលេខ"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"ធម្មតា"</item>
+ <item msgid="6177579030803486015">"វែង"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ឆ្លើយតប​រហ័ស"</string>
<string name="call_settings_label" msgid="313434211353070209">"ការហៅ"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"គណនីហៅទូរស័ព្ទ"</string>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 09e9e1ed8..8e84c2926 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"ಫೋನ್"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"ಫೋನ್"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"ಕರೆ ಇತಿಹಾಸ"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS ಕಳುಹಿಸು"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ಕರೆ ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸುವುದೇ?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"ಇದು ನಿಮ್ಮ ಇತಿಹಾಸದಿಂದ ಎಲ್ಲಾ ಕರೆಗಳನ್ನು ಅಳಿಸುತ್ತದೆ"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"ಕರೆ ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತಿದೆ…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"ಧ್ವನಿಮೇಲ್"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ಧ್ವನಿಮೇಲ್‌ಗಳು"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> ಧ್ವನಿಮೇಲ್‌ಗಳು </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ಧ್ವನಿಮೇಲ್‌ಗಳು </item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"ಸಂಪರ್ಕಗಳಿಗೆ ಸೇರಿಸು"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2-ಸೆ ವಿರಾಮವನ್ನು ಸೇರಿಸಿ"</string>
<string name="add_wait" msgid="3360818652790319634">"ನಿರೀಕ್ಷೆಯನ್ನು ಸೇರಿಸಿ"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
@@ -142,14 +140,15 @@
<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_create_new_contact" msgid="1679917465521554093">"ಹೊಸ ಸಂಪರ್ಕವನ್ನು ರಚಿಸಿ"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸಂಪರ್ಕಕ್ಕೆ ಸೇರಿಸಿ"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS ಕಳುಹಿಸು"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ವೀಡಿಯೊ ಕರೆ ಮಾಡಿ"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"ಕರೆಯ ಪೂರ್ಣ ಇತಿಹಾಸವನ್ನು ವೀಕ್ಷಿಸಿ"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ಹೊಸ ತಪ್ಪಿದ ಕರೆಗಳು"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"ಸ್ಪೀಡ್ ಡಯಲ್, ನೀವು ಹೆಚ್ಚಾಗಿ ಕರೆಮಾಡುವ ಮೆಚ್ಚಿನವುಗಳು ಮತ್ತು ಸಂಖ್ಯೆಗಳಿಗೆ ಒಂದು-ಸ್ಪರ್ಶದ ಡಯಲಿಂಗ್‌ ಆಗಿದೆ"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"ಯಾವುದೇ ಸಂಪರ್ಕಗಳಿಲ್ಲ"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"ಎಲ್ಲ ಸಂಖ್ಯೆಗಳನ್ನು ನೋಡಲು ಚಿತ್ರವನ್ನು ಸ್ಫರ್ಶಿಸಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಲು ಸ್ಪರ್ಶಿಸಿ &amp; ಹೋಲ್ಡ್‌ ಮಾಡಿ"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"ವಜಾಗೊಳಿಸಿ"</string>
<string name="remove_contact" msgid="1080555335283662961">"ತೆಗೆದುಹಾಕು"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ಎಲ್ಲ ಸಂಪರ್ಕಗಳು"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ಮರಳಿ ಕರೆ ಮಾಡಿ"</string>
@@ -167,7 +166,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ರಿಂದ ಧ್ವನಿಮೇಲ್ ಆಲಿಸಿ"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ಗೆ ಸಂಪರ್ಕದ ವಿವರಗಳು"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"ಕರೆ ಇತಿಹಾಸದಿಂದ ಅಳಿಸಲಾಗಿದೆ"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google ಗೆ ಸಂಖ್ಯೆಯನ್ನು ವರದಿ ಮಾಡಲಾಗಿದೆ"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ವರದಿ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"ಇಂದು"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"ನಿನ್ನೆ"</string>
@@ -179,13 +177,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"ನಿಧಾನವಾಗಿ ಪ್ಲೇ ಮಾಡಿ."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"ಪ್ಲೇಬ್ಯಾಕ್‌ ಪ್ರಾರಂಭಿಸಿ ಅಥವಾ ವಿರಾಮಗೊಳಿಸಿ."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"ಸಾಮಾನ್ಯ"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"ಸಂಪರ್ಕ ಪ್ರದರ್ಶನ ಆಯ್ಕೆಗಳು"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ಧ್ವನಿಗಳು ಹಾಗೂ ವೈಬ್ರೇಟ್‌"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"ಪ್ರದರ್ಶನ ಆಯ್ಕೆಗಳು"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ಧ್ವನಿ ಮತ್ತು ವೈಬ್ರೇಷನ್‌"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"ಪ್ರವೇಶಿಸುವಿಕೆ"</string>
<string name="ringtone_title" msgid="760362035635084653">"ಫೋನ್ ರಿಂಗ್‌ಟೋನ್"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"ಕರೆಗಳಿಗೂ ಸಹ ವೈಬ್ರೇಟ್‌"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ಡಯಲ್‌ಪ್ಯಾಡ್‌ ಧ್ವನಿಗಳು"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"ಇತರೆ"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ಡಯಲ್‌ಪ್ಯಾಡ್‌ ಟೋನ್ ಅಳತೆ"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"ಸಾಮಾನ್ಯ"</item>
+ <item msgid="6177579030803486015">"ದೀರ್ಘವಾದ"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ತ್ವರಿತ ಪ್ರತಿಕ್ರಿಯೆಗಳು"</string>
<string name="call_settings_label" msgid="313434211353070209">"ಕರೆಗಳು"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 0c7bd3f2c..0642e7a22 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"전화"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"휴대전화"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"통화 기록"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS 보내기"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"통화 기록을 삭제하시겠습니까?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"모든 통화가 기록에서 삭제됩니다."</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"통화 기록을 삭제하는 중…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"음성사서함"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g>개의 음성사서함"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other">음성메일 <xliff:g id="COUNT">%1$d</xliff:g>개</item>
+ <item quantity="one">음성메일</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"주소록에 추가"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2초 간 일시 정지 추가"</string>
<string name="add_wait" msgid="3360818652790319634">"대기 시간 추가"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"설정"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"새 연락처 만들기"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"기존 연락처에 추가"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS 보내기"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"화상 통화하기"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"전체 통화 기록 조회"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"새로운 부재중 전화 <xliff:g id="NUMBER">%s</xliff:g>건"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"단축번호를 지정하면 즐겨찾거나 자주 전화하는 번호를 한 번만 터치하여 전화를 걸 수 있습니다."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"주소록 없음"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"이미지를 터치하여 모든 번호를 확인하거나 길게 터치하여 재정렬합니다."</string>
- <string name="description_dismiss" msgid="2146276780562549643">"닫기"</string>
<string name="remove_contact" msgid="1080555335283662961">"삭제"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"모든 연락처"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"전화 걸기"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> 음성사서함 듣기"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>의 통화 세부정보"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"통화 기록에서 삭제했습니다."</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google에 번호를 제출했습니다."</string>
<string name="call_log_action_report" msgid="561229827189128879">"신고"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"오늘"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"어제"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"더 느리게 재생합니다."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"재생을 시작하거나 일시중지합니다."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"일반"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"연락처 표시 옵션"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"소리와 진동"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"표시 옵션"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"소리 및 진동"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"접근성"</string>
<string name="ringtone_title" msgid="760362035635084653">"전화 벨소리"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"전화 올 때 벨소리와 함께 진동"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"다이얼패드 신호음"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"기타"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"다이얼패드 신호음 길이"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"보통"</item>
+ <item msgid="6177579030803486015">"길게"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"빠른 응답"</string>
<string name="call_settings_label" msgid="313434211353070209">"통화"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"통화 계정"</string>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 42ca06837..015012631 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -22,7 +22,6 @@
<!-- no translation found for dialerIconLabel (6500826552823403796) -->
<skip />
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Чалуулар таржымалы"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS жөнөтүү"</string>
<!-- no translation found for recentCalls_callNumber (1756372533999226126) -->
<skip />
<!-- no translation found for recentCalls_editNumberBeforeCall (7756171675833267857) -->
@@ -37,10 +36,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Чалуулар таржымалы тазалансынбы?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ушуну менен бул таржымалдагы бардык чалуулар жок болот"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Чалуулар таржымалы тазаланууда…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Үнкат"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Үнкат"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Үн каты </item>
+ <item quantity="one">Үн каты</item>
+ </plurals>
<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>
@@ -88,7 +87,6 @@
<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_contact" msgid="4579643070374941999">"Байланыштарга кошуу"</string>
<!-- no translation found for add_2sec_pause (9214012315201040129) -->
<skip />
<!-- no translation found for add_wait (3360818652790319634) -->
@@ -168,14 +166,15 @@
<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_create_new_contact" msgid="1679917465521554093">"Жаңы байланыш түзүү"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Учурдагы байланышка кошуу"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS жөнөтүү"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Видео түрүндө чалуу"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Чалуулардын толук таржымалын көрүү"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> жаңы өткөзүлгөн чалуу"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Тез терүү мүмкүнчүлүгү менен, сүйүктүү байланыштарды жана тез-тез чалынган номурларды бир тийип тере аласыз"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Байланыштар жок"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Бардык номурларды көрүү үчүн сүрөткө тийип коюңуз же иреттештирүү үчүн жана коё бербей басып туруңуз"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Жокко чыгаруу"</string>
<string name="remove_contact" msgid="1080555335283662961">"Алып салуу"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"БАРДЫК БАЙЛАНЫШТАР"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"КАЙРА ЧАЛУУ"</string>
@@ -193,7 +192,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> үн катын угуу"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> чалуу чоо-жайы"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Чалуулар таржымалынан жок кылынды"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Номур Google\'га кабарланды"</string>
<string name="call_log_action_report" msgid="561229827189128879">"КАБАРЛОО"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Бүгүн"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Кечээ"</string>
@@ -205,13 +203,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Жайыраак ойнотуу."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Ойнотуп баштоо же бир азга токтотуу"</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Жалпы"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Байланышты көрсөтүү параметрлери"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Добуштар жана дирилдөө"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Параметрлерди көрсөтүү"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Үндөр жана титирөө"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Жеткиликтүүлүк"</string>
<string name="ringtone_title" msgid="760362035635084653">"Телефондун шыңгыры"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Чалуулар үчүн дагы дирилдесин"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Тергичтин үндөрү"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Башка"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Тергич обонунун узундугу"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Орточо"</item>
+ <item msgid="6177579030803486015">"Узун"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Тез жооптор"</string>
<string name="call_settings_label" msgid="313434211353070209">"Чалуулар"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Чалуу каттоо эсептери"</string>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 662e77302..ee5255900 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"ໂທລະສັບ"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"ໂທລະສັບ"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"ປະຫວັດການໂທ"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"ສົ່ງ SMS"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ລຶບ​ປະ​ຫວັດ​ການ​ໂທ​ບໍ?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"ອັນ​ນີ້​ຈະ​ລຶບ​ທຸກ​ສາຍ​ໂທ​ຈາກ​ປະ​ຫວັດ​ຂອງ​ທ່ານ"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"ກຳ​ລັງ​ລຶບ​ປະ​ຫວັດ​ການ​ໂທ…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"ຂໍ້ຄວາມສຽງ"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ຂໍ້ຄວາມສຽງ"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ຂໍ້ຄວາມສຽງ </item>
+ <item quantity="one">ຂໍ້ຄວາມສຽງ</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"​ເພີ່ມ​ໃນ​ລາຍ​ຊື່​ຜູ່​ຕິດ​ຕໍ່"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"ເພີ່ມການຂັ້ນເວລາ 2 ວິນາທີ"</string>
<string name="add_wait" msgid="3360818652790319634">"ເພີ່ມການລໍຖ້າ"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"ການ​ຕັ້ງ​ຄ່າ"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"ສ້າງລາຍຊື່ໃໝ່"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"ເພີ່ມ​ລາຍ​ຊື່​ທີ່​ມີ​ຢູ່"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ສົ່ງ SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"​ໂທ​ອອກ​ດ້ວຍ​ວິ​ດີ​ໂອ"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"ເບິ່ງ​ປະ​ຫວັດ​ການ​ໂທ​ແບບເຕັມ"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ສາຍທີ່ບໍ່ໄດ້ຮັບໃໝ່"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"ການ​ໂທ​ດ່ວນ​ແມ່ນ​ການ​ກົດ​ໂທ​ດ້ວຍ​ການ​ສຳ​ຜັດ​ເທື່ອ​ດຽວ ສຳ​ລັບ​ລາຍ​ການ​ທີ່​ມັກ ແລະ​ເບີ​ທີ່​ທ່ານ​ໂທ​ຢູ່​ເລື້ອຍ​ໆ"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"ບໍ່ມີລາຍຊື່ຕິດຕໍ່"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"ແຕະ​ຮູບ ເພື່ອ​ເບິ່ງ​ທຸກ​ເລກ​ໝາຍ ຫຼື​ແຕະ &amp; ຄ້າງ​ໄວ້ ເພື່ອ​ບັນ​ທຶກ"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"ເຂົ້າໃຈແລ້ວ"</string>
<string name="remove_contact" msgid="1080555335283662961">"​ລຶບ​ອອກ"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"​ລາຍ​ຊື່​ຜູ່​ຕິດ​ຕໍ່​ທັງ​ໝົດ"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ໂທ​ກັບ"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"​ຟັງ​ຂໍ້​ຄວາມ​ສຽງ​ຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"ລາຍລະອຽດ​ການ​ໂທ​ສຳລັບ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"ລຶບ​ຈາກ​ປະ​ຫວັດ​ການ​ໂທ​ແລ້ວ"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"ລາຍ​ງານ​ເລກ​ໝາຍ​ໃຫ້ Google ແລ້ວ"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ລາຍ​ງານ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"ມື້ນີ້"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"ມື້​ວານ​ນີ້"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"ຫຼິ້ນຊ້າລົງ."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"ເລີ່ມຫຼືຢຸດ​ການ​ຫຼິ້ນຊົ່ວຄາວ."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"ທົ່ວໄປ"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"​ໂຕ​ເລືອກ​ການ​ສະ​ແດງ​ລາຍ​ຊື່​ຜູ່​ຕິດ​ຕໍ່"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"​ສຽງ ແລະ​ການ​ສັ່ນ​ເຕືອນ"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"ຕົວເລືອກການສະແດງຜົນ"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ສຽງ ແລະ​ສັ່ນ"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"​ການ​ຊ່ວຍ​ເຂົ້າ​ເຖິງ"</string>
<string name="ringtone_title" msgid="760362035635084653">"ຣິງໂທນໂທລະສັບ"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"ສັ່ນ​ເຕືອນ​ເມື່ອ​ມີ​ການ​ໂທ​ເຂົ້າ"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ສຽງ​ກົດ​ປຸ່ມ​ໂທ"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"ອື່ນໆ"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ຄວາມ​ຍາວ​ສຽງ​ແຜ່ນ​ກົດ"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"ປົກ​ກ​ະ​ຕິ"</item>
+ <item msgid="6177579030803486015">"ຍາວ"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ການຕອບແບບວ່ອງໄວ"</string>
<string name="call_settings_label" msgid="313434211353070209">"​ການ​ໂທ"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"ບັນ​ຊີ​ໂທ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 8252d852c..1da96d26d 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefonas"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefonas"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Skambučių istorija"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Siųsti SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Skambinti <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Redaguoti numerį prieš skambutį"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Pridėti prie adresatų"</string>
@@ -33,10 +32,12 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Išvalyti skambučių istoriją?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Bus ištrinti visi skambučiai iš istorijos"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Išvaloma skambučių istorija..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Balso paštas"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešim."</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimas </item>
+ <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimai </item>
+ <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimo </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimų </item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Paleisti"</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">"Nauji b. pašto pran. iš <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Rodyti tik praleistus"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Rodyti tik balso pšt. praneš."</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Rodyti visus skambučius"</string>
- <string name="add_contact" msgid="4579643070374941999">"Pridėti prie kontaktų"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Pridėti 2 sek. pauzę"</string>
<string name="add_wait" msgid="3360818652790319634">"Pridėti laukimą"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Nustatymai"</string>
@@ -141,14 +141,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Kurti naują kontaktą"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Pridėti prie esamo kontakto"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Siųsti SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Atlikti vaizdo skambutį"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Visos skambučių istorijos peržiūra"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"Naujų praleistų skambučių: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Spartusis rinkimas – tai į mėgstamiausius įtrauktų ir tų, kuriais dažnai skambinate, numerių rinkimas vienu palietimu"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Kontaktų nėra"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Palieskite vaizdą, kad peržiūrėtumėte visus numerius, arba palieskite ir laikykite, kad pertvarkytumėte"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Atsisakyti"</string>
<string name="remove_contact" msgid="1080555335283662961">"Pašalinti"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"VISI KONTAKTAI"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ATSKAMBINTI"</string>
@@ -166,7 +167,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Klausyti balso pašto nuo <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Išsami skambučio informacija (<xliff:g id="NAMEORNUMBER">^1</xliff:g>)"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Ištrinta iš skambučių istorijos"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numeris praneštas „Google“"</string>
<string name="call_log_action_report" msgid="561229827189128879">"PRANEŠTI"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Šiandien"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Vakar"</string>
@@ -178,13 +178,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Leisti lėčiau."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Pradėti arba pristabdyti atkūrimą."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Bendrieji"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kontaktų rodymo parinktys"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Garsai ir vibravimas"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Pateikties parinktys"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Garsai ir vibravimas"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Pritaikymas neįgaliesiems"</string>
<string name="ringtone_title" msgid="760362035635084653">"Telefono skambėjimo tonas"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Taip pat vibruoti, kai skamb."</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Skambinimo skydelio garsai"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Kita"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Skambinimo skydelio tono trukmė"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Įprastas"</item>
+ <item msgid="6177579030803486015">"Ilgas"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Greiti atsakai"</string>
<string name="call_settings_label" msgid="313434211353070209">"Skambučiai"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Skambinimo paskyros"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 19c030ea0..c313ca382 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Tālrunis"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Zvanīt"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Zvanu vēsture"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Sūtīt īsziņu"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Zvanīt: <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Rediģēt numuru pirms zvanīšanas"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Pievienot kontaktpersonām"</string>
@@ -33,10 +32,11 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vai dzēst zvanu vēsturi?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tiks dzēsti visi vēsturē saglabātie zvani."</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Notiek zvanu vēstures dzēšana…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Balss pasts"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojums(-i)"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="zero"><xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojumi </item>
+ <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojums </item>
+ <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojumi </item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Atskaņot"</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">"Jauns b. pasta ziņ. no: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +80,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Rādīt tikai neatbildētos zvanus"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Rādīt tikai balss pasta ziņ."</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Rādīt visus zvanus"</string>
- <string name="add_contact" msgid="4579643070374941999">"Pievienot kontaktpersonām"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Pievienot 2 sekundes ilgu pauzi"</string>
<string name="add_wait" msgid="3360818652790319634">"Pievienot gaidīšanu"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Iestatījumi"</string>
@@ -141,14 +140,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Izveidot jaunu kontaktpersonu"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Pievienot esošai kontaktpersonai"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Sūtīt īsziņu"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Veikt videozvanu"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Visas zvanu vēstures skatīšana"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"Jauni neatbildēti zvani: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Izmantojot ātros zvanus, varat ar vienu pieskārienu zvanīt kontaktpersonām, kuras ir pievienotas jūsu izlasei vai kurām bieži zvanāt."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Nav kontaktpersonu"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Pieskarieties attēlam, lai skatītu visus numurus, vai pieskarieties attēlam un turiet to, lai veiktu pārkārtošanu."</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Noraidīt"</string>
<string name="remove_contact" msgid="1080555335283662961">"Noņemt"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"VISAS KONTAKTPERSONAS"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ATZVANĪT"</string>
@@ -166,7 +166,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Klausīties balss pasta ziņojumu no: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Zvanu informācija par šādu numuru: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Dzēsts no zvanu vēstures."</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numurs tika nosūtīts Google serveriem."</string>
<string name="call_log_action_report" msgid="561229827189128879">"ZIŅOT"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Šodien"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Vakar"</string>
@@ -178,13 +177,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Atskaņot lēnāk."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Sākt vai apturēt atskaņošanu."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Vispārīgi"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kontaktpersonu rādīšanas opcijas"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Skaņas un vibrācija"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Attēlojuma opcijas"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Skaņas un vibrācija"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Pieejamība"</string>
<string name="ringtone_title" msgid="760362035635084653">"Tālruņa zvana signāls"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Izmantot vibrozvanu zvaniem"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Numura sast. tastatūras toņi"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Citi"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Numuru tastatūras signāla ilgums"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Parasts"</item>
+ <item msgid="6177579030803486015">"Ilgs"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Ātrās atbildes"</string>
<string name="call_settings_label" msgid="313434211353070209">"Zvani"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Zvanu konti"</string>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index f999c0bd0..8328b47fd 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Историја на повици"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Испрати СМС"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Избришете историја на повици?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ова ќе ги избрише сите повици од историјата"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Се чисти историјата на повици…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Говорна пошта"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> говорни пораки"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> говорна порака </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> говорни пораки </item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"Додај во контакти"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Додај пауза од 2 сек"</string>
<string name="add_wait" msgid="3360818652790319634">"Додај почекај"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Поставки"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"Создај нов контакт"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Додај во постоечки контакт"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Испрати СМС"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Остварете видеоповик"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Погледнете цела историја на повик"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> нови пропуштени повици"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Брзото бирање е бирање со еден допир на омилените и броевите кои често ги повикувате"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Нема контакти"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Допрете ја сликата за да ги видите сите броеви или допрете и држете за промена на редоследот"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Отфрли"</string>
<string name="remove_contact" msgid="1080555335283662961">"Отстрани"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"СИТЕ КОНТАКТИ"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ПОВИКАЈ НАЗАД"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Слушајте говорна пошта од <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Информации на повикот за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Избришано од историјата на повици"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Бројот е пријавен во Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ПРИЈАВИ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Денес"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Вчера"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Репродуцирајте побавно."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Запрете ја или паузирајте ја репродукцијата."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Општо"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Опции за прикажување контакт"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Звуци и вибрации"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Опции за екран"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуци и вибрации"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Пристапност"</string>
<string name="ringtone_title" msgid="760362035635084653">"Мелодија на телефон"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибрации и за повици"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Тонови на подлогата за бирање"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Друго"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Должина на тонот на подлогата за бирање"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Нормално"</item>
+ <item msgid="6177579030803486015">"Долго"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Брзи одговори"</string>
<string name="call_settings_label" msgid="313434211353070209">"Повици"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Сметки за повикување"</string>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index 2cd29991d..434107d10 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"ഫോണ്‍"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"ഫോണ്‍"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"കോള്‍‌ ചരിത്രം"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS അയയ്ക്കുക"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"കോൾ ചരിത്രം മായ്‌ക്കണോ?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"ഇത് നിങ്ങളുടെ ചരിത്രത്തിൽ നിന്ന് എല്ലാ കോളുകളും ഇല്ലാതാക്കും"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"കോൾ ചരിത്രം മായ്‌ക്കുന്നു..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"വോയ്‌സ്‌മെയിൽ"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> വോയ്‌സ്മെയിലുകൾ"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> വോയ്‌സ്‌മെയിലുകൾ </item>
+ <item quantity="one">വോയ്‌സ്‌മെയിൽ</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"കോൺടാക്‌റ്റുകളിൽ ചേർക്കുക"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2 സെക്കൻഡ് താൽക്കാലികമായി നിർത്തൽ ചേർക്കുക"</string>
<string name="add_wait" msgid="3360818652790319634">"കാത്തിരിക്കൽ ചേർക്കുക"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"ക്രമീകരണങ്ങൾ"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"പുതിയ കോൺടാക്റ്റ് സൃഷ്‌ടിക്കുക"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"നിലവിലുള്ള കോൺടാക്റ്റിലേക്ക് ചേർക്കുക"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS അയയ്ക്കുക"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"വീഡിയോ കോൾ ചെയ്യുക"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"മുഴുവൻ കോൾ ചരിത്രവും കാണുക"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> പുതിയ മിസ്‌ഡ് കോളുകൾ"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"നിങ്ങൾ ഇടയ്ക്കിടെ വിളിക്കുന്ന പ്രിയപ്പെട്ടവർക്കും നമ്പറുകൾക്കുമായി ഒരൊറ്റ സ്പർശനത്തിൽ ഡയൽ ചെയ്യുന്ന സവിശേഷതയാണ് സ്‌പീഡ് ഡയൽ"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"കോൺടാക്റ്റുകളൊന്നുമില്ല"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"എല്ലാ നമ്പറുകളും കാണാൻ ചിത്രം സ്‌പർശിക്കുക അല്ലെങ്കിൽ വീണ്ടും ക്രമീകരിക്കാൻ സ്‌പർശിച്ച് പിടിക്കുക"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"നിരസിക്കുക"</string>
<string name="remove_contact" msgid="1080555335283662961">"നീക്കംചെയ്യുക"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"എല്ലാ കോൺ‌ടാക്റ്റുകളും"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"തിരിച്ചുവിളിക്കുക"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്നയാളിൽ നിന്നുള്ള വോയ്‌സ്മെയിൽ കേൾക്കുക"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്നയാളുടെ കോൾ വിശദാംശങ്ങൾ"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"കോൾ ചരിത്രത്തിൽ നിന്ന് ഇല്ലാതാക്കി"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google-ലേക്ക് നമ്പർ റിപ്പോർട്ടുചെയ്‌തു"</string>
<string name="call_log_action_report" msgid="561229827189128879">"റിപ്പോർട്ടുചെയ്യുക"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"ഇന്ന്"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"ഇന്നലെ"</string>
@@ -178,14 +176,18 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"കുറഞ്ഞവേഗതയിൽ പ്ലേചെയ്യുക."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"പ്ലേബാക്ക് ആരംഭിക്കുകയോ താൽക്കാലികമായി നിർത്തുകയോ ചെയ്യുക."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"പൊതുവായത്"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"കോൺടാക്‌റ്റ് ഡിസ്പ്ലേ ഓപ്ഷനുകൾ"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ശബ്‌ദങ്ങളും വൈബ്രേറ്റുചെയ്യലും"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"ഡിസ്‌പ്ലേ ഓപ്‌ഷനുകൾ"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ശബ്‌ദവും വൈബ്രേഷനും"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"പ്രവേശനക്ഷമത"</string>
<string name="ringtone_title" msgid="760362035635084653">"ഫോൺ റിംഗ്ടോൺ"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"കോളുകൾക്കായും വൈബ്രേറ്റ് ചെയ്യും"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ഡയൽപാഡ് ടോണുകൾ"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"മറ്റുള്ളവ"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ഡയൽപാഡ് ടോണിന്റെ ദൈർഘ്യം"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"സാധാരണം"</item>
+ <item msgid="6177579030803486015">"ദൈർഘ്യമുള്ളത്"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ദ്രുത പ്രതികരണങ്ങൾ"</string>
<string name="call_settings_label" msgid="313434211353070209">"കോളുകൾ"</string>
- <string name="phone_account_settings_label" msgid="5864322009841175294">"കോൾ ചെയ്യാനുള്ള അക്കൗണ്ടുകൾ"</string>
+ <string name="phone_account_settings_label" msgid="5864322009841175294">"കോളുചെയ്യാനുള്ള അക്കൗണ്ട്"</string>
</resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 855e45f22..7f053bb7d 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Утас"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Утас"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Дуудлагын түүх"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Мессеж илгээх"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Дуудлагын түүхийг устгах уу?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Энэ нь таны хийсэн бүх дуудлагыг түүхээс устгана."</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Дуудлагын түүхийг устгаж байна..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Дуут шуудан"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Дуут шуудан"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Дуут шуудан </item>
+ <item quantity="one">Дуут шуудан</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"Харилцагчдад нэмэх"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2-сек зогсолт нэмэх"</string>
<string name="add_wait" msgid="3360818652790319634">"Хүлээлт нэмэх"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Тохиргоо"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"Шинэ хаяг үүсгэх"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Байгаа хаяганд нэмэх"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Мессеж илгээх"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Видео дуудлага хийх"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Дуудлагын түүхийг бүхэлд нь харах"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> шинэ аваагүй дуудлага"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Түргэн залгалт нь шууд автоматаар таныг дотнын хүмүүс болон байнга холбогддог дугааруудтай чинь холбож өгнө."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Харилцагчид байхгүй"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Бүх дугаарыг харахын тулд зурган дээр дарна уу эсвэл жагсаалтыг өөрчлөхийн тулд удаан дарна уу."</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Хаах"</string>
<string name="remove_contact" msgid="1080555335283662961">"Хасах"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"БҮХ ХАРИЛЦАГЧИД"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"БУЦААЖ ЗАЛГАХ"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-н дуут шууданг сонсох"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> дуудлагын дэлгэрэнгүй мэдээлэл"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Дуудлагын түүхээс устгагдсан"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Тус дугаарын талаар Google-д мэдээллээ"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ТАЙЛАН"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Өнөөдөр"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Өчигдөр"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Удаан тоглуулах."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Тоглуулахыг эхлүүлэх буюу түр зогсоох."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Ерөнхий"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Харилцагчийн харагдах сонголт"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Хонхны ая болон чичиргээ"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Сонголтуудыг харуулах"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Дуу болон чичиргээ"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Хандалт"</string>
<string name="ringtone_title" msgid="760362035635084653">"Утасны хонхны ая"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Дуудлагад бас чичрэх"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Диалпадын ая"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Бусад"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Дугаар цуглуулах хэсгийн дохионы урт"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Энгийн"</item>
+ <item msgid="6177579030803486015">"Урт"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Шуурхай хариунууд"</string>
<string name="call_settings_label" msgid="313434211353070209">"Дуудлага"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Дуудах акаунт"</string>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index efdb5c945..a0eaf59bc 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"फोन"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"फोन"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"कॉल इतिहास"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS पाठवा"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"कॉल इतिहास साफ करायचा?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"हे आपल्या कॉल इतिहासातून सर्व कॉल हटवेल"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"कॉल इतिहास साफ करत आहे…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"व्हॉइसमेल"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> व्‍हॉइसमेल"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> व्हॉइसमेल </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> व्हॉइसमेल </item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"संपर्कांमध्ये जोडा"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2-सेकंद विराम जोडा"</string>
<string name="add_wait" msgid="3360818652790319634">"प्रतीक्षा करा जोडा"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"सेटिंग्ज"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"नवीन संपर्क तयार करा"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"विद्यमान संपर्कामध्‍ये जोडा"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS पाठवा"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"व्‍हिडिओ कॉल करा"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"संपूर्ण कॉल इतिहास पहा"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> नवीन सुटलेले कॉल"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"स्पीड डायल हे आवडींसाठी आणि आपण नेहमी कॉल करता त्या नंबरसाठी एकदाच-स्पर्श करण्याचे डायलिंग आहे"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"कोणतेही संपर्क नाहीत"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"सर्व नंबर पाहण्यासाठी प्रतिमेस स्पर्श करा किंवा पुन्हा क्रम लावण्यासाठी स्पर्श करा आणि धरून ठेवा"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"डिसमिस करा"</string>
<string name="remove_contact" msgid="1080555335283662961">"काढा"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"सर्व संपर्क"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"परत कॉल करा"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> कडील व्हॉइसमेल ऐका"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> साठी कॉल तपशील"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"कॉल इतिहासातून हटविले"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google कडे नंबरचा अहवाल दिला"</string>
<string name="call_log_action_report" msgid="561229827189128879">"अहवाल द्या"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"आज"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"काल"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"अधिक धीमे प्ले करा."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"प्लेबॅक प्रारंभ करा किंवा त्यास विराम द्या."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"सामान्य"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"संपर्क प्रदर्शन पर्याय"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ध्वनी आणि कंपन"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"पर्याय प्रदर्शित करा"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ध्वनी आणि कंपने"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"प्रवेशयोग्यता"</string>
<string name="ringtone_title" msgid="760362035635084653">"फोन रिंगटोन"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"कॉल साठी कंपन देखील करा"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"डायलपॅड टोन"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"अन्य"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"डायलपॅड टोन लांबी"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"सामान्य"</item>
+ <item msgid="6177579030803486015">"लांब"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"द्रुत प्रतिसाद"</string>
<string name="call_settings_label" msgid="313434211353070209">"कॉल"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"कॉल करण्याची खाती"</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 874e30c2f..db4d5732c 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Sejarah panggilan"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Hantar SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Panggil <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit nombor sebelum panggilan"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Tambah ke kenalan"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Kosongkan sejarah panggilan?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Langkah ini akan memadamkan semua panggilan dari sejarah anda"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Mengosongkan sejarah panggilan..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mel suara"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Mel suara"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Mel suara </item>
+ <item quantity="one">Mel suara</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Main"</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">"Mel suara baru daripada <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Tunjuk panggilan terlepas shj"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Tunjukkan mel suara sahaja"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Tunjukkan semua panggilan"</string>
- <string name="add_contact" msgid="4579643070374941999">"Tambahkan pada kenalan"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Tambah jeda 2 saat"</string>
<string name="add_wait" msgid="3360818652790319634">"Tambah penungguan"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Tetapan"</string>
@@ -141,14 +139,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Dialih keluar daripada kegemaran"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Buat asal"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Tambahkan pada kenalan"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Buat kenalan baharu"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Tambah kepada kenalan sedia ada"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Hantar SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Buat panggilan video"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Lihat sejarah panggilan penuh"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> panggilan terlepas baharu"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Dail laju ialah pendailan satu sentuhan untuk kegemaran dan nombor yang kerap anda hubungi"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Tiada kenalan"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Sentuh imej untuk melihat semua nombor atau sentuh &amp; tahan untuk menyusun semula"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Ketepikan"</string>
<string name="remove_contact" msgid="1080555335283662961">"Alih keluar"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"SEMUA KENALAN"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"PANGGIL BALIK"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Dengar mel suara daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Butiran panggilan untuk <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Dipadamkan dari sejarah panggilan"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nombor dilaporkan kepada Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"LAPORKAN"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Hari ini"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Semalam"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Main lebih perlahan."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Mulakan atau jeda main balik."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Umum"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Pilihan paparan kenalan"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Bunyi dan getaran"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Pilihan paparan"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Bunyi dan getaran"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Kebolehaksesan"</string>
<string name="ringtone_title" msgid="760362035635084653">"Nada dering telefon"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Juga bergetar untuk panggilan"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Nada pad dail"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Lain-lain"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Panjang nada pad dail"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Biasa"</item>
+ <item msgid="6177579030803486015">"Panjang"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respons pantas"</string>
<string name="call_settings_label" msgid="313434211353070209">"Panggilan"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Akaun panggilan"</string>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index dde4b25b2..a93eb6b0e 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"ဖုန်း"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"ဖုန်း"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"ခေါ်ဆိုမှု မှတ်တမ်း"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"စာတို ပို့ရန်"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ခေါ်ဆိုမှု မှတ်တမ်းကို ရှင်းပစ်ရမလား?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"ဒါက သင့် မှတ်တမ်းထဲက ခေါ်ဆိုမှုများ အားလုံးကို ဖျက်ပစ်မည်"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"ခေါ်ဆိုမှု မှတ်တမ်းကို ရှင်းနေ…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"အသံစာပို့စနစ်"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> အသံစာများ"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> အသံမေးလ်များ </item>
+ <item quantity="one"> အသံမေးလ်</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"အဆက်အသွယ်များ ထဲသို့ ထည့်ရန်"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"၂စက္ကန့်ရပ်ဆိုင်းရန် ထည့်ပါ"</string>
<string name="add_wait" msgid="3360818652790319634">"စောင့်ဆိုင်းခြင်း ထည့်ပါ"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"ဆက်တင်များ"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"အဆက်အသွယ် အသစ် ဖန်တီးရန်"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"လက်ရှိ အဆက်အသွယ်တွင်း ထည့်ရန်"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"စာတို ပို့ရန်"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ဗီဒီယို ခေါ်ဆိုမှု ပြုလုပ်ရန်"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"ခေါ်ဆိုမှု မှတ်တမ်း အပြည့်ကို ကြည့်ရန်"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"လွတ်သွားသောဖုန်း <xliff:g id="NUMBER">%s</xliff:g> ခါ"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"အမြန် နံပါတ်လှည့်မှုမှာ စိတ်ကြိုက်များ နှင့် သင်မကြာခဏ ခေါ်သည့် နံပါတ်များကို တစ်ချက်နှိပ် နံပါတ်လှည့်မှု ဖြစ်သည်"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"အဆက်အသွယ်များ မရှိ"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"နံပါတ်များ အားလုံးကိုကြည့်ရန် ပုံကို ထိပါ သို့မဟုတ် ပြန်စီရန် ထိလျက် &amp; ကိုင်ထားပါ"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"လွှတ်လိုက်သည်"</string>
<string name="remove_contact" msgid="1080555335283662961">"ဖယ်ရှာခြင်း"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"အဆက်အသွယ်များအားလုံး"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ပြန် ခေါ်ဆိုမှု"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>ထံမှ အသံစာကို နားထောင်ရန်"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>၏ ခေါ်ဆိုမှု အသေးစိတ်များ"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"ခေါ်ဆိုမှု မှတ်တမ်းထဲမှ ဖျက်ပစ်ခဲ့"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"နံပါတ်ကို Google ထံသို့ အစီရင်ခံပြီး"</string>
<string name="call_log_action_report" msgid="561229827189128879">"အစီရင်ခံရန်"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"ယနေ့"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"မနေ့က"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"ပိုနှေးစွာ ကစားရန်"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"ဖွင့်မှု စတင် သို့မဟုတ် ဆိုင်းငံ့ရန်"</string>
<string name="list_delimeter" msgid="4571593167738725100">"၊ "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"အထွေထွေ"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"အဆက်အသွယ် ပြသမှု ရွေးစရာများ"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"အသံနှင့် တုန်ခါမှု"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"ပြသမှုအတွက်ရွေးစရာများ"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"အသံများနှင့် တုန်ခါမှု"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"ရယူသုံးနိုင်မှု"</string>
<string name="ringtone_title" msgid="760362035635084653">"ဖုန်း သံစဉ်"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"ဖုန်းဝင်လျှင် တုန်ခါရန်"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ဖုန်းဒိုင်ခွက် အသံ"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"အခြား"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"နံပါတ်ကွက် နှိပ်သံ ချိန်ညှိ"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"ပုံမှန်"</item>
+ <item msgid="6177579030803486015">"အရှည်"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"အမြန် တုံ့ပြန်ချက်များ"</string>
<string name="call_settings_label" msgid="313434211353070209">"ခေါ်ဆိုမှုများ"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"ခေါ်ဆိုသော အကောင့်များ"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 70ce879da..1702fa5ea 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Anropslogg"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Send SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Rediger nummer før anrop"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Legg til kontakter"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vil du slette anropsloggen?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Dette sletter alle anrop fra loggen"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Sletter anropsloggen …"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Talepostkasse"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> talemeldinger"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> talemeldinger </item>
+ <item quantity="one">talemelding</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spill av"</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">"Nye talemeldinger fra <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Vis bare tapte"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Vis bare talemeldinger"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Vis alle samtaler"</string>
- <string name="add_contact" msgid="4579643070374941999">"Legg til i kontakter"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Legg til pause på 2 sek."</string>
<string name="add_wait" msgid="3360818652790319634">"Legg til Vent"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Innstillinger"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Opprett ny kontakt"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Legg til i eksisterende kontakt"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Start en videosamtale"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Se hele anropsloggen"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nye tapte anrop"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Hurtigoppringing ringer til favorittene dine og numrene du ringer ofte, med bare ett trykk"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Ingen kontakter"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Trykk på bildet for å se alle numre, eller trykk på og hold nede for å omorganisere"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Fjern"</string>
<string name="remove_contact" msgid="1080555335283662961">"Fjern"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLE KONTAKTER"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"RING TILBAKE"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Lytt til talepostkasse fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Samtaledetaljer for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Slettet fra anropsloggen"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nummeret er rapportert til Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"RAPPORTÉR"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"I dag"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"I går"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Spill av saktere."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start eller stopp avspillingen."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Generelt"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Visningsalternativer for kontakter"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Lyder og vibrering"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Visningsalternativer"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Lyder og vibrasjon"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Tilgjengelighet"</string>
<string name="ringtone_title" msgid="760362035635084653">"Telefonringetone"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrer også når det ringer"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tastetoner for tastaturet"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Annet"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tonelengde for tastaturet"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Lang"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hurtigsvar"</string>
<string name="call_settings_label" msgid="313434211353070209">"Anrop"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Ringe kontoer"</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index d1d19c14f..8d2c55203 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"फोन"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"फोन"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"कल इतिहास"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS पठाउनुहोस्"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"कल इतिहास हटाउने हो?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"यस कार्यले तपाईँको इतिहासबाट सबै कल मेट्नेछ"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"कल इतिहास हाटउँदै..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"भ्वाइसमेल"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> भ्वाइसमेलहरू"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> भ्वाइसमेलहरू </item>
+ <item quantity="one">भ्वाइसमेल</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"सम्पर्कहरूमा थप्नुहोस्"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"२ सेकन्डको रोकाइ थप्नुहोस्"</string>
<string name="add_wait" msgid="3360818652790319634">"पर्खाइ थप्नुहोस्"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"सेटिङ्हरू"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"नयाँ सम्पर्क सिर्जना गर्नुहोस्"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"अवस्थित सम्पर्कमा थप्नुहोस्"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS पठाउनुहोस्"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"भिडियो कल बनाउनुहोस्"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"पूर्ण कल इतिहास हेर्नुहोस्"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> नयाँ छुटेका कलहरु"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"द्रूत डायल मनपर्नेका लागि एक-टच डाइलिङ र तपाईंले प्राय: कल गर्ने नम्बर हुन्।"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"कुनै सम्पर्कहरू छैन।"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"सबै संख्या हेर्न छविलाई छुनुहोस् वा पुन:क्रमबद्ध गर्न समात्नुहोस्"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"खारेज गर्नुहोस्"</string>
<string name="remove_contact" msgid="1080555335283662961">"हटाउँनुहोस्"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"सबै सम्पर्कहरू"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"कल फर्काउने"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> बाट भ्वाइसमेल सुन्नुहोस्"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> का लागि कल विवरणहरू"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"कल इतिहासबाट मेटाइयो"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google लाई नम्बर रिपोर्ट गरियो"</string>
<string name="call_log_action_report" msgid="561229827189128879">"REPORT"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"आज"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"हिजो"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"ढिलो चलाउनुहोस्।"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"दोहर्याउने सुरु गर्नुहोस् वा रोक्नुहोस्।"</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"सामान्य"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"सम्पर्क प्रदर्शन विकल्पहरू"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ध्वनि र कम्पन"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"विकल्पहरू प्रदर्शन गर्नुहोस्"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ध्वनि र कम्पन"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"पहुँचता"</string>
<string name="ringtone_title" msgid="760362035635084653">"फोन रिङटोन"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"कलका लागि कम्पन पनि गर्नुहोस्"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"डायलप्याड ध्वनि"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"अन्य"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"डायलप्याड टोन लम्बाइ"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"सामान्य"</item>
+ <item msgid="6177579030803486015">"लामो"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"द्रुत प्रतिक्रियाहरू"</string>
<string name="call_settings_label" msgid="313434211353070209">"कलहरू"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"खाता कलिङ"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 715e2a522..c9a1c7571 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefoon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefoon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Oproepgeschiedenis"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Sms verzenden"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> bellen"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Nummer bewerken voor bellen"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Toevoegen aan contacten"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Oproepgeschiedenis wissen?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Hiermee worden alle oproepen uit uw geschiedenis verwijderd"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Oproepgeschiedenis 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>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> voicemails </item>
+ <item quantity="one">Voicemail</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Afspelen"</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">"Nieuwe voicemail van <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Alleen gemist weergeven"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Alleen voicemails weergeven"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Alle oproepen weergeven"</string>
- <string name="add_contact" msgid="4579643070374941999">"Toevoegen aan contacten"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Pauze van 2 seconden toevoegen"</string>
<string name="add_wait" msgid="3360818652790319634">"Wachten toevoegen"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Instellingen"</string>
@@ -117,7 +115,7 @@
<string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
<string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Kan dit nummer niet bellen"</string>
<string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Voor het instellen van voicemail, gaat u naar \'Menu\' &gt; \'Instellingen\'."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Als u uw voicemail wilt bellen, moet u eerst de Vliegmodus uitschakelen."</string>
+ <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Als u uw voicemail wilt bellen, moet u eerst de Vliegtuigmodus uitschakelen."</string>
<string name="contact_list_loading" msgid="5488620820563977329">"Laden..."</string>
<string name="imei" msgid="3045126336951684285">"IMEI-nummer"</string>
<string name="meid" msgid="6210568493746275750">"MEID"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Nieuw contact maken"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Toevoegen aan bestaand contact"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Sms verzenden"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videogesprek starten"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Volledige oproepgeschiedenis bekijken"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nieuwe gemiste oproepen"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Met snelkeuze kunt u met één tik op een knop favorieten en nummers kiezen die u vaak belt"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Geen contacten"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Tik op de afbeelding om alle nummers te bekijken of blijf de afbeelding aanraken om opnieuw te rangschikken"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Sluiten"</string>
<string name="remove_contact" msgid="1080555335283662961">"Verwijderen"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLE CONTACTEN"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"TERUGBELLEN"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Voicemail beluisteren van <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Oproepgegevens voor <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Verwijderd uit oproepgeschiedenis"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nummer gemeld aan Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"MELDEN"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Vandaag"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Gisteren"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Langzamer afspelen."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Afspelen starten of onderbreken."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Algemeen"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Weegaveopties voor contacten"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Geluiden en trillen"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Weergaveopties"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Geluiden en trillingen"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Toegankelijkheid"</string>
<string name="ringtone_title" msgid="760362035635084653">"Beltoon telefoon"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Ook trillen voor oproepen"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonen bij toetsaanslag"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Anders"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Toonduur toetsenblok"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normaal"</item>
+ <item msgid="6177579030803486015">"Lang"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Snelle reacties"</string>
<string name="call_settings_label" msgid="313434211353070209">"Oproepen"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Oproepaccounts"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 8f63dafc5..98e4dd1e4 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Historia połączeń"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Wyślij SMS-a"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Zadzwoń do: <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edytuj numer przed nawiązaniem połączenia"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Dodaj do kontaktów"</string>
@@ -33,10 +32,12 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Wyczyścić historię połączeń?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Spowoduje to usunięcie wszystkich połączeń z historii"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Czyszczę historię połączeń…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Poczta głosowa"</item>
- <item quantity="other" msgid="5513481419205061254">"Wiadomości głosowe: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> wiadomości głosowe </item>
+ <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> wiadomości głosowych </item>
+ <item quantity="other"> Wiadomości głosowe: <xliff:g id="COUNT">%1$d</xliff:g> </item>
+ <item quantity="one">Wiadomość głosowa</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Odtwórz"</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">"Nowa poczta głosowa od: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Pokaż tylko nieodebrane"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Pokaż tylko pocztę głosową"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Pokaż wszystkie połączenia"</string>
- <string name="add_contact" msgid="4579643070374941999">"Dodaj do kontaktów"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj 2-sekundową pauzę"</string>
<string name="add_wait" msgid="3360818652790319634">"Dodaj oczekiwanie"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Ustawienia"</string>
@@ -141,14 +141,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Utwórz nowy kontakt"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Dodaj do istniejącego kontaktu"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Wyślij SMS-a"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Rozmowa wideo"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Wyświetl pełną historię połączeń"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"Nowe nieodebrane połączenia: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Szybkie wybieranie pozwala jednym kliknięciem zadzwonić pod ulubione lub częste numery"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Brak kontaktów"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Kliknij obraz, by zobaczyć wszystkie numery, lub kliknij go i przytrzymaj, by zmienić kolejność"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Zamknij"</string>
<string name="remove_contact" msgid="1080555335283662961">"Usuń"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"WSZYSTKIE KONTAKTY"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ODDZWOŃ"</string>
@@ -166,7 +167,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Posłuchaj wiadomości głosowej od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Szczegóły połączeń: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Usunięto z historii połączeń"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numer został zgłoszony do Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ZGŁOŚ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Dzisiaj"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Wczoraj"</string>
@@ -178,13 +178,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Odtwarzaj wolniej."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Rozpocznij lub wstrzymaj odtwarzanie."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Ogólne"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opcje wyświetlania kontaktów"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Dźwięki i wibracje"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Opcje wyświetlania"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Dźwięki i wibracje"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Ułatwienia dostępu"</string>
<string name="ringtone_title" msgid="760362035635084653">"Dzwonek telefonu"</string>
- <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Wibracja podczas połączeń"</string>
+ <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Wibracja przy połączeniach"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dźwięki klawiatury"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Inne"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tony klawiatury"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normalne"</item>
+ <item msgid="6177579030803486015">"Długie"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Szybkie odpowiedzi"</string>
<string name="call_settings_label" msgid="313434211353070209">"Połączenia"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Konta telefoniczne"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 07a99163d..2d609adc4 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telemóvel"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefone"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Histórico de chamadas"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Enviar SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Ligar a <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes de efectuar a chamada"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Adicionar aos contactos"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Limpar histórico de chamadas?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Todas as chamadas serão eliminadas do histórico"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"A limpar histórico de chamadas…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Correio de voz"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Mensagens de correio de voz"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensagens de correio de voz </item>
+ <item quantity="one">Mensagem de correio de voz</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduzir"</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">"Nova msg de correio de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar apenas cham. n. atend."</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostrar apenas msgs corr. voz"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
- <string name="add_contact" msgid="4579643070374941999">"Adicionar aos contactos"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Adicionar pausa de 2 seg."</string>
<string name="add_wait" msgid="3360818652790319634">"Adicionar espera"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Definições"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Criar novo contacto"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Adicionar ao contacto existente"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fazer videochamada"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Ver histórico de chamadas completo"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> chamadas não atendidas novas"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"A marcação rápida é uma marcação de um toque dos favoritos e dos números mais frequentes"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Sem contactos"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Toque na imagem para ver todos os números ou toque sem soltar para reordenar"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Ignorar"</string>
<string name="remove_contact" msgid="1080555335283662961">"Remover"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TODOS OS CONTACTOS"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"TELEFONAR DE VOLTA"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Ouvir o correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Detalhes de chamadas de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Eliminado do histórico de chamadas"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Número comunicado à Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"DENUNCIAR"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Hoje"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Ontem"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Reproduzir mais lento."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar ou interromper a reprodução."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Geral"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opções de visualização de contactos"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons e vibração"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Opções de visualização"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons e vibração"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Acessibilidade"</string>
<string name="ringtone_title" msgid="760362035635084653">"Toque do telemóvel"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar também para chamadas"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons do teclado"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Outras"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duração do tom do teclado"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Longa"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostas rápidas"</string>
<string name="call_settings_label" msgid="313434211353070209">"Chamadas"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Contas de chamadas"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 13672eef1..14ccc81d3 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefone"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefone"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Histórico de chamadas"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Enviar SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Ligar para <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes da chamada"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Adicionar aos contatos"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Limpar histórico de chamadas?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Esta ação excluirá todas as chamadas do seu histórico"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Limpando histórico de chamadas…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mensagem de voz"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> mensagens de voz"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduzir"</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">"Nova mensagem de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar apenas perdidas"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Exibir apenas mensagens de voz"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
- <string name="add_contact" msgid="4579643070374941999">"Adicionar aos contatos"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Adicionar pausa de 2 segundos"</string>
<string name="add_wait" msgid="3360818652790319634">"Adicionar espera"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Configurações"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Criar novo contato"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Adicionar a contato já existente"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fazer vídeo chamada"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Ver todo o histórico de chamadas"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> novas chamadas perdidas"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"A discagem rápida é feita com apenas um toque para favoritos e números para os quais você liga com frequência"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Nenhum contato"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Toque na imagem para ver todos os números ou toque e segure para reordenar"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Descartar"</string>
<string name="remove_contact" msgid="1080555335283662961">"Remover"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TODOS OS CONTATOS"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"RETORNAR CHAMADA"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Ouvir mensagem de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Detalhes de chamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Excluída do histórico de chamadas"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Número informado ao Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"DENUNCIAR"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Hoje"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Ontem"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Reprodução mais lenta."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Inicie ou pause a reprodução."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Geral"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opções de exibição de contato"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons e vibração"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Opções de exibição"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons e vibração"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Acessibilidade"</string>
<string name="ringtone_title" msgid="760362035635084653">"Toque do telefone"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Também vibrar para chamadas"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons de teclado"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Outras"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duração do tom do teclado"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normais"</item>
+ <item msgid="6177579030803486015">"Longos"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostas rápidas"</string>
<string name="call_settings_label" msgid="313434211353070209">"Chamadas"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Contas de chamadas"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 0a84b982e..59e895b54 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Istoricul apelurilor"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Trimiteți SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Apelaţi <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modificaţi numărul înainte de apelare"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Adăugaţi la persoane din agendă"</string>
@@ -33,10 +32,11 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Ștergeți istoricul apelurilor?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Astfel vor fi șterse toate apelurile din istoric"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Se șterge istoricul apelurilor…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mesaj vocal"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> (de) mesaje vocale"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> mesaje vocale </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> de mesaje vocale </item>
+ <item quantity="one">Mesaj vocal</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Redaţi"</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">"Mesaj vocal nou de la <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,11 +80,10 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Numai apelurile nepreluate"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Afişaţi numai mesajele vocale"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Afişaţi toate apelurile"</string>
- <string name="add_contact" msgid="4579643070374941999">"Adăugați în Agendă"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Pauză 2 secunde"</string>
+ <string name="add_2sec_pause" msgid="9214012315201040129">"Adăugați o pauză de 2 secunde"</string>
<string name="add_wait" msgid="3360818652790319634">"Adăugaţi interval de aşteptare"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Setări"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Persoană nouă în agendă"</string>
+ <string name="menu_newContact" msgid="1209922412763274638">"Intrare nouă în agendă"</string>
<string name="menu_allContacts" msgid="6948308384034051670">"Toată agenda"</string>
<string name="callDetailTitle" msgid="5340227785196217938">"Detaliile apelului"</string>
<string name="toast_call_detail_error" msgid="6947041258280380832">"Nu sunt disponibile detalii"</string>
@@ -134,21 +133,22 @@
<string name="call_log_activity_title" msgid="4612824396355272023">"Istoric"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Toate"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Nepreluate"</string>
- <string name="call_log_voicemail_title" msgid="940422274047025948">"Mes. vocal"</string>
+ <string name="call_log_voicemail_title" msgid="940422274047025948">"Mesagerie vocală"</string>
<string name="tab_speed_dial" msgid="7552166276545648893">"Apelare rapidă"</string>
<string name="tab_recents" msgid="929949073851377206">"Recente"</string>
<string name="tab_all_contacts" msgid="1410922767166533690">"Agendă"</string>
<string name="favorite_hidden" msgid="5011234945140912047">"S-a eliminat din preferate"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Anulați"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Apelați <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Adăugați în Agendă"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Creați o persoană de contact nouă"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Adăugați la o persoană de contact"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Trimiteți SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Inițiați un apel video"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Vedeți istoricul complet al apelurilor"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> (de) apeluri nepreluate noi"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Apelarea rapidă este apelarea printr-o singură atingere a numerelor preferate și a numerelor pe care le apelați frecvent"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Nu există persoane de contact"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Atingeți imaginea pentru a vedea toate numerele sau atingeți lung pentru reordonare"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Închideți"</string>
<string name="remove_contact" msgid="1080555335283662961">"Eliminați"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TOATĂ AGENDA"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"SUNAȚI"</string>
@@ -166,7 +166,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Ascultați mesajul vocal de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Detaliile apelului pentru <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"S-a șters din istoricul apelurilor"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numărul a fost raportat la Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"RAPORTAȚI"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Astăzi"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Ieri"</string>
@@ -178,13 +177,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Jucați mai lent."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Porniți sau întrerupeți redarea."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Generale"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opțiuni de afișare a agendei"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sunete și vibrații"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Opțiuni de afișare"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sunete și vibrații"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilitate"</string>
<string name="ringtone_title" msgid="760362035635084653">"Ton de apel al telefonului"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrează și pentru apeluri"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonuri pt. tastatura numerică"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Altele"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Lungimea tonului tastaturii numerice"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normală"</item>
+ <item msgid="6177579030803486015">"Lungă"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Răspunsuri rapide"</string>
<string name="call_settings_label" msgid="313434211353070209">"Apeluri"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Conturi pentru apelare"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 1247be867..10810a0a2 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -21,22 +21,23 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Кнопки"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Журнал звонков."</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Отправить SMS"</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_removeFromRecentList" msgid="5551148439199439404">"Удалить из журнала звонков"</string>
- <string name="recentCalls_deleteAll" msgid="5157887960461979812">"Очистить журнал звонков"</string>
+ <string name="recentCalls_deleteAll" msgid="5157887960461979812">"Очистить историю звонков"</string>
<string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Удалить голосовое сообщение"</string>
<string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Поделиться"</string>
<string name="recentCalls_empty" msgid="8555115547405030734">"Вызовов нет."</string>
- <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Очистить журнал звонков?"</string>
+ <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Очистить историю звонков?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"История звонков будет удалена."</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Очистка журнала звонков…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Голосовая почта"</item>
- <item quantity="other" msgid="5513481419205061254">"Голосовые сообщения: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> голосовое сообщение </item>
+ <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> голосовых сообщения </item>
+ <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> голосовых сообщений </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> голосового сообщения </item>
+ </plurals>
<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>
@@ -80,13 +81,12 @@
<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_contact" msgid="4579643070374941999">"Добавить в контакты"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Добавить двухсекундную паузу"</string>
<string name="add_wait" msgid="3360818652790319634">"Добавить паузу"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Настройки"</string>
<string name="menu_newContact" msgid="1209922412763274638">"Новый контакт"</string>
<string name="menu_allContacts" msgid="6948308384034051670">"Все контакты"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Сведения о вызове"</string>
+ <string name="callDetailTitle" msgid="5340227785196217938">"Вызов"</string>
<string name="toast_call_detail_error" msgid="6947041258280380832">"Данные недоступны"</string>
<string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Использовать тональный набор"</string>
<string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Вернуться к ожидающему вызову"</string>
@@ -141,14 +141,15 @@
<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_create_new_contact" msgid="1679917465521554093">"Создать контакт"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Добавить к контакту"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Отправить SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Начать видеовстречу"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Посмотреть весь журнал звонков"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"Пропущенных вызовов: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Настройте быстрый набор, чтобы вам было удобнее звонить на часто используемые номера."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Ничего не найдено."</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Коснитесь изображения, чтобы увидеть все номера, или нажмите и удерживайте, чтобы изменить порядок"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Закрыть"</string>
<string name="remove_contact" msgid="1080555335283662961">"Удалить"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ВСЕ КОНТАКТЫ"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ВЫЗОВ"</string>
@@ -166,7 +167,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Прослушать сообщение от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> – сведения о вызове"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Вызов удален из журнала"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Жалоба отправлена в Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"СООБЩИТЬ ОБ ОШИБКЕ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Сегодня"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Вчера"</string>
@@ -178,13 +178,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Уменьшить скорость воспроизведения."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Начать или приостановить воспроизведение."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Общие"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Отображение контактов"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Звук и вибросигнал"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Упорядочить"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуки и вибрация"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Специальные возможности"</string>
<string name="ringtone_title" msgid="760362035635084653">"Рингтон"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибросигнал при вызове"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Звук при наборе номера"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Другие настройки"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Длительность сигналов при наборе номера"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Обычная"</item>
+ <item msgid="6177579030803486015">"Большая"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Быстрые ответы"</string>
<string name="call_settings_label" msgid="313434211353070209">"Вызовы"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Аккаунты для звонков"</string>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 2d862cb86..47e6510a9 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"දුරකථනය"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"දුරකථනය"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"ඇමතුම් ඉතිහාසය"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS යවන්න"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ඇමතුම් ඉතිහාසය හිස් කරන්නද?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"මෙය ඔබේ ඉතිහාසයෙන් සියලු ඇමතුම් මකනු ඇත"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"ඇමතුම් ඉතිහාසය හිස් කරමින්…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"හඬ තැපෑල"</item>
- <item quantity="other" msgid="5513481419205061254">"හඬ තැපැල් <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one">හඬ තැපැල් <xliff:g id="COUNT">%1$d</xliff:g> </item>
+ <item quantity="other">හඬ තැපැල් <xliff:g id="COUNT">%1$d</xliff:g> </item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"සම්බන්ධතා වලට එක් කරන්න"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"තත්පර 2 ක විරාමයක් එක් කරන්න"</string>
<string name="add_wait" msgid="3360818652790319634">"රැඳී සිටීම එක් කරන්න"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"සැකසීම්"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"නව සම්බන්ධතාවයක් සාදන්න"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"පවතින සම්බන්ධතාව වෙත එක් කරන්න"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS යවන්න"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"වීඩියෝ ඇමතුමක් ලබාගන්න"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"සම්පූර්ණ ඇමතුම් ඉතිහාසය බලන්න"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"නව මඟ හැරුණු ඇමතුම් <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"වේග ඩයලනය යනු ප්‍රියතමයන් සහ ඔබ නිතර අමතන අංක සඳහා එක්-ස්පර්ශ ඩයල් කිරීමකි"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"සබඳතා නැත"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"සියලු අංක බැලීමට අනුරුව ස්පර්ශ කරන්න නැතහොත් &amp; යළි ඇණවුම් කිරීමට අල්ලාගෙන සිටින්න"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"ඉවතලන්න"</string>
<string name="remove_contact" msgid="1080555335283662961">"ඉවත් කරන්න"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"සියලු සම්බන්ධතා"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"නැවත අමතන්න"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> වෙතින් හඬ තැපෑලට සවන් දෙන්න"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> සඳහා ඇමතුම් විස්තර"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"ඇමතුම් ඉතිහාසයෙන් මකන ලදී"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google වෙත වාර්තා කළ අංකය"</string>
<string name="call_log_action_report" msgid="561229827189128879">"වාර්තාව"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"අද"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"ඊයේ"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"හෙමින් ධාවනය කරන්න."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"නැවත ධාවනයෙදී ආරම්භ කරන්න හෝ විරාමය කරන්න."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"පොදු"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"සම්බන්ධතා දර්ශනය කිරීමේ විකල්ප"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"හඬ සහ කම්පන"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"විකල්ප පෙන්වන්න"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ශබ්ද සහ කම්පන"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"ප්‍රවේශ්‍යතාවය"</string>
<string name="ringtone_title" msgid="760362035635084653">"දුරකථන රිගින්ටෝනය"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"ඇමතුම් සඳහා කම්පනයද කරන්න"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ඩයල්පෑඩ ස්පර්ශක හඬ"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"වෙනත්"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ඇමතුම් පෑඩයේ නාද දිග"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"සාමාන්‍ය"</item>
+ <item msgid="6177579030803486015">"දීර්ඝ"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ක්ෂණික ප්‍රතිචාර"</string>
<string name="call_settings_label" msgid="313434211353070209">"ඇමතුම්"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"ගිණුම් ඇමතීම"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 1cbb44a64..35c33ee94 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefón"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefón"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"História hovorov"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Odoslať SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Zavolať kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Pred volaním upraviť číslo"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Pridať medzi kontakty"</string>
@@ -33,10 +32,12 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Chcete vymazať históriu hovorov?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Týmto sa z histórie odstránia všetky hovory"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Vymazáva sa história hovorov..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Hlasová správa"</item>
- <item quantity="other" msgid="5513481419205061254">"Počet hlasových správ: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> odkazy v hlasovej schránke </item>
+ <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> odkazu v hlasovej schránke </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> odkazov v hlasovej schránke </item>
+ <item quantity="one">Odkaz v hlasovej schránke</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Prehrať"</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">"Nová hlasová správa – <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Zobraziť len zmeškané"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Zobraziť len hlasové správy"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Zobraziť všetky hovory"</string>
- <string name="add_contact" msgid="4579643070374941999">"Pridať do kontaktov"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Pridať dvojsekundovú pauzu"</string>
<string name="add_wait" msgid="3360818652790319634">"Pridať čakanie"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Nastavenia"</string>
@@ -141,14 +141,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Odstránené z obľúbených"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Späť"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Volať na číslo <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Pridať do kontaktov"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Vytvoriť nový kontakt"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Pridať k existujúcemu kontaktu"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Odoslať správu SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Uskutočniť videohovor"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Zobraziť úplnú históriu hovorov"</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="speed_dial_empty" msgid="1931474498966072849">"Rýchla voľba je funkcia umožňujúca jedným klepnutím vytočiť obľúbené osoby a často volané čísla."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Žiadne kontakty"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Klepnutím na obrázok si môžete zobraziť všetky čísla. Ak naň klepnete a podržíte ho, môžete zmeniť ich poradie."</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Zatvoriť"</string>
<string name="remove_contact" msgid="1080555335283662961">"Odstrániť"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"VŠETKY KONTAKTY"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ZAVOLAŤ SPÄŤ"</string>
@@ -166,7 +167,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Vypočuť si správu v hlasovej schránke od používateľa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Podrobnosti hovoru pre kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Odstránené z histórie hovorov"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Číslo bolo nahlásené Googlu"</string>
<string name="call_log_action_report" msgid="561229827189128879">"NAHLÁSIŤ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Dnes"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Včera"</string>
@@ -178,13 +178,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Prehrať pomalšie"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Spustiť alebo pozastaviť prehrávanie"</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Všeobecné"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Možnosti zobrazenia kontaktov"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Zvuky a vibrovanie"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Možnosti zobrazenia"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvuky a vibrovanie"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Dostupnosť"</string>
<string name="ringtone_title" msgid="760362035635084653">"Tón zvonenia telefónu"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrovať aj pri hovoroch"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tóny číselnej klávesnice"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Ďalšie"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dĺžka zvukov číselnej klávesnice"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normálne"</item>
+ <item msgid="6177579030803486015">"Dlhé"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Rýchle odpovede"</string>
<string name="call_settings_label" msgid="313434211353070209">"Hovory"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Telefónne účty"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index b291b5a61..eeb1ffbc1 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Zgodovina klicev"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Pošlji SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Pokliči <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Pred klicanjem uredi številko"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Dodaj med stike"</string>
@@ -33,10 +32,12 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Želite izbrisati zgodovino klicev?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"S tem boste iz zgodovine izbrisali vse klice"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Izbris zgodovine klicev …"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Sporočila glasovne pošte"</item>
- <item quantity="other" msgid="5513481419205061254">"Št. sporočil glasovne pošte: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> sporočilo v odzivniku </item>
+ <item quantity="two"> <xliff:g id="COUNT">%1$d</xliff:g> sporočili v odzivniku </item>
+ <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> sporočila v odzivniku </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> sporočil v odzivniku </item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Predvajaj"</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">"Nova glasovna pošta od <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Pokaži samo neodgovorjene"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Pokaži samo spor. glasovne pošte"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Pokaži vse klice"</string>
- <string name="add_contact" msgid="4579643070374941999">"Dodaj med stike"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj 2 sekundi premora"</string>
<string name="add_wait" msgid="3360818652790319634">"Dodaj premor"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Nastavitve"</string>
@@ -141,14 +141,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Odstranjeno iz priljubljenih"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Razveljavi"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Pokliči <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Dodaj med stike"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Ustvari nov stik"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Dodaj obstoječemu stiku"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Pošljite SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Opravi videoklic"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Prikaz celotne zgodovine klicev"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"Št. novih zgrešenih klicev: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Hitro izbiranje je klicanje priljubljenih številk in tistih, ki jih kličete najpogosteje, z enim dotikom."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Ni stikov"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Dotaknite se slike, če želite videti vse številke, ali pa se je dotaknite in pridržite, če želite spremeniti vrstni red."</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Opusti"</string>
<string name="remove_contact" msgid="1080555335283662961">"Odstrani"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"VSI STIKI"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"POVRATNI KLIC"</string>
@@ -166,7 +167,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Poslušajte sporočilo v odzivniku od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Podrobnosti klica za: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Izbrisano iz zgodovine klicev"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Številka sporočena Googlu"</string>
<string name="call_log_action_report" msgid="561229827189128879">"PRIJAVI"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Danes"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Včeraj"</string>
@@ -178,13 +178,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Predvajaj počasneje."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Začni ali zaustavi predvajanje."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Splošno"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Možnosti prikaza stikov"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Zvoki in vibriranje"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Možnosti prikaza"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvoki in vibriranje"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Funkcije za ljudi s posebnimi potrebami"</string>
<string name="ringtone_title" msgid="760362035635084653">"Ton zvonjenja telefona"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibriranje tudi za klice"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Toni tipkovnice"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Drugo"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dolžina tonov tipk"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Običajno"</item>
+ <item msgid="6177579030803486015">"Dolgo"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hitri odgovori"</string>
<string name="call_settings_label" msgid="313434211353070209">"Klici"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Računi za klicanje"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 92b6eb001..f916fede8 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Историја позива"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Пошаљи SMS"</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>
@@ -33,10 +32,11 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Желите да обришете историју позива?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ово ће избрисати све позиве из историје"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Брише се историја позива…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Говорна пошта"</item>
- <item quantity="other" msgid="5513481419205061254">"Говорних порука: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> говорна порука </item>
+ <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> говорне поруке </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> говорних порука </item>
+ </plurals>
<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>
@@ -80,7 +80,6 @@
<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_contact" msgid="4579643070374941999">"Додај у контакте"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Додај паузу од 2 секунде"</string>
<string name="add_wait" msgid="3360818652790319634">"Додај чекање"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Подешавања"</string>
@@ -141,14 +140,15 @@
<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_create_new_contact" msgid="1679917465521554093">"Направи нови контакт"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Додај постојећем контакту"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Пошаљи SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Упути видео позив"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Приказ пуне историје позива"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"Нових пропуштених позива: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Брзо бирање је бирање једним додиром за омиљене контакте и бројеве које често зовете"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Нема контаката"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Додирните слику да бисте видели све бројеве или додирните и задржите да бисте променили распоред"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Одбаци"</string>
<string name="remove_contact" msgid="1080555335283662961">"Уклони"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"СВИ КОНТАКТИ"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"УПУТИ ПОВРАТНИ ПОЗИВ"</string>
@@ -166,7 +166,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Пусти говорну пошту од <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Детаљи позива за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Избрисано из историје позива"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Број је пријављен Google-у"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ПРИЈАВИ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Данас"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Јуче"</string>
@@ -178,13 +177,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Спорија репродукција."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Започните или паузирајте репродукцију."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Опште"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Опције приказивања контаката"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Звуци и вибрација"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Опције приказа"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуци и вибрација"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Приступачност"</string>
<string name="ringtone_title" msgid="760362035635084653">"Звук звона телефона"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибрирај и за позиве"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Звуци нумеричке тастатуре"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Друго"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Трајање тонова нумеричке тастатуре"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Нормално"</item>
+ <item msgid="6177579030803486015">"Дугачко"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Брзи одговори"</string>
<string name="call_settings_label" msgid="313434211353070209">"Позиви"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Налози за позивање"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 5dc058796..e2b3e9308 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Samtalshistorik"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Skicka sms"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Redigera nummer före samtal"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Lägg till i Kontakter"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vill du rensa samtalshistoriken?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Alla samtal raderas från historiken"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Rensar samtalshistoriken ..."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Röstmeddelanden"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> röstmeddelanden"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> röstmeddelanden </item>
+ <item quantity="one">röstmeddelande</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spela upp"</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">"Nytt röstmeddelande från <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Visa endast missade samtal"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Visa bara röstmeddelanden"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Visa alla samtal"</string>
- <string name="add_contact" msgid="4579643070374941999">"Lägg till i Kontakter"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Lägg till en paus på 2 sek."</string>
<string name="add_wait" msgid="3360818652790319634">"Lägg till väntetid"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Inställningar"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Skapa ny kontakt"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Lägg till i befintlig kontakt"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Skicka sms"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Ring videosamtal"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Visa hela samtalshistoriken"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nya missade samtal"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Kortnummer är snabbval för favoritkontakter och nummer du ringer till ofta"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Inga kontakter"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Tryck på bilden och visa alla nummer eller tryck länge om du vill ändra ordningen"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Avvisa"</string>
<string name="remove_contact" msgid="1080555335283662961">"Ta bort"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLA KONTAKTER"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"RING UPP"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Lyssna på ett röstmeddelande från <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Samtalsinformation för <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Har raderats från samtalshistoriken"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nummer som har rapporterats till Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"RAPPORTERA"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"I dag"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"I går"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Spela upp långsammare."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Starta eller pausa uppspelning."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Allmänt"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Visningsalternativ för kontakter"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Ljud och vibrationer"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Visningsalternativ"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ljud och vibration"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Tillgänglighet"</string>
<string name="ringtone_title" msgid="760362035635084653">"Ringsignal"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrera också vid samtal"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Knappsatsljud"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Övrigt"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tonlängd för knappsats"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Lång"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Snabbsvar"</string>
<string name="call_settings_label" msgid="313434211353070209">"Samtal"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Konton för samtal"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 78e8a4185..b489be276 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Nambari ya simu"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Simu"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Rekodi ya simu zilizopigwa"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Tuma SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Pigia <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Hariri nambari kabla ya kupiga"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Ongeza kwa anwani"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Je, ungependa kufuta rekodi ya simu zilizopigwa?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Hii itafuta simu zote kutoka rekodi zako"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Inafuta rekodi ya simu zilizopigwa..."</string>
- <plurals name="notification_voicemail_title">
- <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>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other">Ujumbe <xliff:g id="COUNT">%1$d</xliff:g> wa sauti </item>
+ <item quantity="one">Ujumbe wa sauti</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>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Onyesha zilizokosa kupokewa pekee"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Onyesha barua za sauti pekee"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Onyesha simu zote"</string>
- <string name="add_contact" msgid="4579643070374941999">"Ongeza kwenye anwani"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Ongeza usitishaji wa sekunde 2"</string>
<string name="add_wait" msgid="3360818652790319634">"Ongeza kusubiri"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Mipangilio"</string>
@@ -141,14 +139,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Imeondolowa kwenye vipendwa"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Tendua"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Piga simu <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Ongeza kwenye anwani"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Ongeza anwani mpya"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Ongeza kwenye anwani iliyopo"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Tuma SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Piga Hangout ya video"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Angalia historia kamili ya simu zilizopigwa"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"Simu <xliff:g id="NUMBER">%s</xliff:g> za karibuni ambazo hazikujibiwa"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Unaowasiliana nao zaidi ni upigaji simu wa kugusa mara moja kwa vipendeleo na nambari unazopiga mara kwa mara"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Hakuna anwani"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Gusa picha ili uone nambari zote au gusa na ushikilie ili upange upya"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Ondoa"</string>
<string name="remove_contact" msgid="1080555335283662961">"Ondoa"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"ANWANI ZOTE"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"PIGA SIMU"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Sikiliza ujumbe wa sauti kutoka kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Maelezo ya simu ya <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Ilifutwa kutoka rekodi ya simu zilizopigwa"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nambari iliripotiwa kwa Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"RIPOTI"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Leo"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Jana"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Cheza polepole."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Anzisha au usitishe kucheza."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Jumla"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Chaguo za onyesho la anwani"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sauti na mtetemo"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Chaguo za onyesho"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sauti na mtetemo"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Zana za walio na matatizo ya kuona au kusikia"</string>
<string name="ringtone_title" msgid="760362035635084653">"Mlio wa simu"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Tetema simu zinapoingia pia"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Milio ya vitufe vya kupiga simu"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Nyingine"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Urefu wa toni ya vitufe vya kupiga simu"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Kawaida"</item>
+ <item msgid="6177579030803486015">"Ndefu"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Majibu ya haraka"</string>
<string name="call_settings_label" msgid="313434211353070209">"Simu zilizopigwa"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Akaunti za simu"</string>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 813ebfdc1..5cc7da869 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"ஃபோன்"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"ஃபோன்"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"அழைப்பு வரலாறு"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS அனுப்பு"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"அழைப்பு வரலாற்றை அழிக்கவா?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"வரலாற்றிலிருந்து இது எல்லா அழைப்புகளையும் நீக்கும்"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"அழைப்பு வரலாற்றை அழிக்கிறது…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"குரலஞ்சல்"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> குரலஞ்சல்கள்"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> குரலஞ்சல்கள் </item>
+ <item quantity="one">குரலஞ்சல்</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"தொடர்புகளில் சேர்"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2-வினாடி இடைநிறுத்தத்தைச் சேர்"</string>
<string name="add_wait" msgid="3360818652790319634">"காத்திருப்பைச் சேர்"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"அமைப்பு"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"புதிய தொடர்பை உருவாக்கு"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"இருக்கும் தொடர்பில் சேர்"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS அனுப்பு"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"வீடியோவில் அழை"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"அழைப்பு பட்டியல் முழுவதையும் காட்டு"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> புதிய தவறிய அழைப்புகள்"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"விரைவு டயல் என்பது பிடித்த மற்றும் நீங்கள் அடிக்கடி அழைக்கும் எண்களை ஒரே தொடுதலின் மூலம் டயல் செய்யும் அம்சமாகும்."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"தொடர்புகள் இல்லை"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"எல்லா எண்களையும் பார்க்க, படத்தைத் தொடவும் அல்லது மறுவரிசைப்படுத்த தொட்டுப் பிடித்திருக்கவும்"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"விலக்கு"</string>
<string name="remove_contact" msgid="1080555335283662961">"அகற்று"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"எல்லா தொடர்புகளும்"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"திரும்ப அழை"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> இன் குரலஞ்சலைக் கேள்"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> இன் அழைப்பு விவரங்கள்"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"அழைப்பு வரலாற்றிலிருந்து நீக்கப்பட்டது"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Googleக்கு எண் அறிக்கையிடப்பட்டது"</string>
<string name="call_log_action_report" msgid="561229827189128879">"புகாரளி"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"இன்று"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"நேற்று"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"மெதுவாக இயக்கு."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"பிளேபேக்கைத் தொடங்கு அல்லது இடைநிறுத்து."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"பொது"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"தொடர்பின் காட்சி விருப்பங்கள்"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ஒலிகளும் அதிர்வுறுதலும்"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"திரை விருப்பங்கள்"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ஒலிகளும் அதிர்வும்"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"அணுகல் தன்மை"</string>
<string name="ringtone_title" msgid="760362035635084653">"மொபைலின் ரிங்டோன்"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"அழைப்புகளுக்கும் அதிர்வுறு"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"டயல்பேட் ஒலிகள்"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"பிற"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"டயல்பேட் டோன் நீளம்"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"இயல்பு"</item>
+ <item msgid="6177579030803486015">"நீளமானது"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"விரைவு பதில்கள்"</string>
<string name="call_settings_label" msgid="313434211353070209">"அழைப்புகள்"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"அழைப்பு கணக்குகள்"</string>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 49a178785..403248f99 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"ఫోన్"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"ఫోన్"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"కాల్ చరిత్ర"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS పంపు"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"కాల్ చరిత్రను క్లియర్ చేయాలా?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"దీని వలన మీ చరిత్ర నుండి అన్ని కాల్‌లు తొలగించబడతాయి"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"కాల్ చరిత్రను క్లియర్ చేస్తోంది…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"వాయిస్ మెయిల్"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> వాయిస్ మెయిల్‌లు"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> వాయిస్ మెయిల్‌లు </item>
+ <item quantity="one">వాయిస్ మెయిల్</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"పరిచయాలకు జోడించు"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2-సెకన్ల పాజ్‌ను జోడించండి"</string>
<string name="add_wait" msgid="3360818652790319634">"నిరీక్షణ సమయాన్ని జోడించు"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"సెట్టింగ్‌లు"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"కొత్త పరిచయాన్ని సృష్టించు"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"ఇప్పటికే ఉన్న పరిచయానికి జోడించు"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS పంపు"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"వీడియో కాల్ చేయండి"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"పూర్తి కాల్ చరిత్రను వీక్షించండి"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> కొత్త సమాధానం ఇవ్వని కాల్‌లు"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"స్పీడ్ డయల్ అనేది మీరు ఇష్టమైనవిగా జోడించిన మరియు తరచుగా కాల్ చేసే నంబర్‌లకు ఒక్కసారి తాకడం ద్వారా డయల్ చేయగల సదుపాయం"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"పరిచయాలు లేవు"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"అన్ని నంబర్‌లను చూడటానికి చిత్రాన్ని తాకండి లేదా మళ్లీ క్రమం చేయడానికి తాకి, ఉంచండి"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"తీసివేయి"</string>
<string name="remove_contact" msgid="1080555335283662961">"తీసివేయి"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"అన్ని పరిచయాలు"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"తిరిగి కాల్ చేయి"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> నుండి వచ్చిన వాయిస్ మెయిల్‌ను వినండి"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> యొక్క కాల్ వివరాలు"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"కాల్ చరిత్ర నుండి తొలగించబడింది"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Googleకి నంబర్ నివేదించబడింది"</string>
<string name="call_log_action_report" msgid="561229827189128879">"నివేదించండి"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"ఈ రోజు"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"నిన్న"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"నెమ్మదిగా ప్లే చేయి."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"ప్లేబ్యాక్‌ను ప్రారంభించు లేదా పాజ్ చేయి."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"సాధారణం"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"పరిచయ ప్రదర్శన ఎంపికలు"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ధ్వనులు మరియు వైబ్రేట్"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"ప్రదర్శన ఎంపికలు"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ధ్వనులు మరియు వైబ్రేషన్"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"ప్రాప్యత సామర్థ్యం"</string>
<string name="ringtone_title" msgid="760362035635084653">"ఫోన్ రింగ్‌టోన్"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"కాల్‌ల కోసం వైబ్రేట్ కూడా చేయి"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"డయల్‌ప్యాడ్ టోన్‌లు"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"ఇతరం"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"డయల్‌ప్యాడ్ టోన్ నిడివి"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"సాధారణం"</item>
+ <item msgid="6177579030803486015">"ఎక్కువ నిడివి"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"శీఘ్ర ప్రతిస్పందనలు"</string>
<string name="call_settings_label" msgid="313434211353070209">"కాల్‌లు"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"కాల్ చేసే ఖాతాలు"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 91816b82c..bdb9c54e2 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"โทรศัพท์"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"โทรศัพท์"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"ประวัติการโทร"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"ส่ง SMS"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ล้างประวัติการโทรไหม"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"การดำเนินการนี้จะลบการโทรทั้งหมดออกจากประวัติของคุณ"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"กำลังล้างประวัติการโทร…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"ข้อความเสียง"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ข้อความเสียง"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ข้อความเสียง </item>
+ <item quantity="one">ข้อความเสียง</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"เพิ่มในสมุดติดต่อ"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"เพิ่มช่วงคั่น 2 วินาที"</string>
<string name="add_wait" msgid="3360818652790319634">"เพิ่มการรอ"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"การตั้งค่า"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"สร้างรายชื่อติดต่อใหม่"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"เพิ่มไปยังรายชื่อติดต่อที่มีอยู่"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ส่ง SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ใช้แฮงเอาท์วิดีโอ"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"ดูประวัติการโทรแบบเต็ม"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"สายที่ไม่ได้รับใหม่ <xliff:g id="NUMBER">%s</xliff:g> สาย"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"การโทรด่วนเป็นการโทรแบบแตะครั้งเดียวสำหรับรายการโปรดและหมายเลขที่คุณโทรบ่อย"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"ไม่มีรายชื่อติดต่อ"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"แตะรูปภาพเพื่อดูหมายเลขทั้งหมด หรือแตะค้างไว้เพื่อเรียงลำดับใหม่"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"ปิด"</string>
<string name="remove_contact" msgid="1080555335283662961">"ลบ"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"รายชื่อติดต่อทั้งหมด"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"โทรกลับ"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"ฟังข้อความเสียงจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"รายละเอียดการโทรสำหรับ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"ลบออกจากประวัติการโทรแล้ว"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"หมายเลขที่รายงานไปยัง Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"รายงาน"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"วันนี้"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"เมื่อวานนี้"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"เล่นช้าลง"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"เริ่มหรือหยุดเล่นชั่วคราว"</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"ทั่วไป"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"ตัวเลือกการแสดงรายชื่อติดต่อ"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"เสียงและสั่น"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"ตัวเลือกการแสดง"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"เสียงและการสั่น"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"การเข้าถึง"</string>
<string name="ringtone_title" msgid="760362035635084653">"เสียงเรียกเข้า"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"สั่นเมื่อมีสายเรียกเข้าด้วย"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"เสียงแป้นหมายเลข"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"อื่นๆ"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ระยะเวลาของเสียงแป้นหมายเลข"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"ปกติ"</item>
+ <item msgid="6177579030803486015">"ยาว"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"คำตอบด่วน"</string>
<string name="call_settings_label" msgid="313434211353070209">"การโทร"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"บัญชีการโทร"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 20c4b1fc1..1aa15ae80 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telepono"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telepono"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"History ng tawag"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Magpadala ng SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Tawagan si <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"I-edit ang numero bago tumawag"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Idagdag sa mga contact"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"I-clear ang history ng tawag?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ide-delete nito ang lahat ng tawag mula sa iyong history"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Kini-clear ang history ng tawag…"</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> (na) Voicemail"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemail </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> na Voicemail </item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"I-play"</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">"Bagong voicemail mula kay <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -71,7 +70,7 @@
<string name="description_playback_seek" msgid="4509404274968530055">"Hanapin ang posisyon ng playback"</string>
<string name="description_rate_decrease" msgid="3161652589401708284">"Bagalan ang playback"</string>
<string name="description_rate_increase" msgid="6324606574127052385">"Bilisan ang playback"</string>
- <string name="action_menu_call_history_description" msgid="9018442816219748968">"Kasaysayan ng Tawag"</string>
+ <string name="action_menu_call_history_description" msgid="9018442816219748968">"History ng Tawag"</string>
<string name="action_menu_overflow_description" msgid="2303272250613084574">"Higit pang mga pagpipilian"</string>
<string name="action_menu_dialpad_button" msgid="1425910318049008136">"dial pad"</string>
<string name="menu_copy" msgid="6108677035381940698">"Kopyahin"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Ipakita lang ang hindi nasagot"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Ipakita lamang ang mga voicemail"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Ipakita ang lahat ng tawag"</string>
- <string name="add_contact" msgid="4579643070374941999">"Idagdag sa mga contact"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Magdagdag ng pag-pause na 2-seg"</string>
<string name="add_wait" msgid="3360818652790319634">"Magdagdag ng paghihintay"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Mga Setting"</string>
@@ -131,7 +129,7 @@
<string name="recentMissed_empty" msgid="4901789420356796156">"Walang mga tawag"</string>
<string name="recentVoicemails_empty" msgid="8582424947259156664">"Walang mga kamakailang voicemail"</string>
<string name="show_favorites_only" msgid="5520072531022614595">"Mga paborito lang ang ipakita"</string>
- <string name="call_log_activity_title" msgid="4612824396355272023">"Kasaysayan"</string>
+ <string name="call_log_activity_title" msgid="4612824396355272023">"History"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Lahat"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Di nasagot"</string>
<string name="call_log_voicemail_title" msgid="940422274047025948">"Voicemail"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Gumawa ng bagong contact"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Idagdag sa umiiral nang contact"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Magpadala ng SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Gumawa ng video call"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Tingnan ang buong kasaysayan ng tawag"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> (na) bagong hindi nasagot na tawag"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Ang speed dial ay one‑touch na pagda-dial para sa mga paborito at mga numerong madalas mong tinatawag"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Walang mga contact"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Pindutin ang larawan upang makita ang lahat ng numero o pindutin nang matagal upang ayusing muli"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"I-dismiss"</string>
<string name="remove_contact" msgid="1080555335283662961">"Alisin"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"LAHAT NG CONTACT"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"TUMAWAG"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Makinig sa voicemail mula sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Mga detalye ng tawag para sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Na-delete mula sa history ng tawag"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Naiulat ang numero sa Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"IULAT"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Ngayon"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Kahapon"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Mag-play nang mas mabagal."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Simulan o i-pause ang pag-playback."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Pangkalahatan"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Mga opsyon ng display ng contact"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Mga tunog at pag-vibrate"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Mga opsyon sa pagpapakita"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Tunog at pag-vibrate"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Pagiging Naa-access"</string>
<string name="ringtone_title" msgid="760362035635084653">"Ringtone ng telepono"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Mag-vibrate din para sa tawag"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Mga dialpad tone"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Iba pa"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tagal ng tunog ng dialpad"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Mahaba"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Mga mabilisang tugon"</string>
<string name="call_settings_label" msgid="313434211353070209">"Mga Tawag"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Mga account sa pagtawag"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 2d9463af0..944d1d83f 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Çağrı geçmişi"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS gönder"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Ara: <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Önce numarayı düzenle"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Kişilere ekle"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Çağrı geçmişi temizlensin mi?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Bu işlem, geçmişinizdeki bütün çağrıları silecek"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Çağrı geçmişi temizleniyor…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Sesli mesaj"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Sesli mesaj"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Sesli Mesaj </item>
+ <item quantity="one">Sesli Mesaj</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Oynat"</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">"Yeni sesli mesj gönderen: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Yalnızca cevapsızları göster"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Yalnızca sesli msajları göster"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Tüm çağrıları göster"</string>
- <string name="add_contact" msgid="4579643070374941999">"Rehbere ekle"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2 saniyelik duraklama ekle"</string>
<string name="add_wait" msgid="3360818652790319634">"Bekleme ekle"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Ayarlar"</string>
@@ -141,14 +139,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Favorilerden kaldırıldı"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Geri al"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefon et: <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Kişilere ekle"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Yeni kişi oluştur"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Mevcut kişiye ekle"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS gönder"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Video görüşmesi yap"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Tüm çağrı geçmişini görüntüle"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> yeni cevapsız çağrı"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Hızlı arama, favorilerinizin ve sık kullandığınız numaraların tek tuşla aranmasıdır."</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Kişi yok"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Tüm numaraları görmek için resme dokunun veya yeniden sıralamak için dokunup basılı tutun"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Kapat"</string>
<string name="remove_contact" msgid="1080555335283662961">"Kaldır"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TÜM KİŞİLER"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"GERİ ARA"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Şu numaradan gelen sesli mesajı dinle: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> için çağrı ayrıntıları"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Çağrı geçmişinden silindi"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numara Google\'a bildirildi"</string>
<string name="call_log_action_report" msgid="561229827189128879">"BİLDİR"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Bugün"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Dün"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Daha yavaş çalın."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Çalmayı başlatın veya duraklatın."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Genel"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kişi görüntüleme seçenekleri"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sesler ve titreşim"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Görüntüleme seçenekleri"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ses ve titreşim"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Erişilebilirlik"</string>
<string name="ringtone_title" msgid="760362035635084653">"Telefon zil sesi"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Çağrılarda ayrıca titret"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tuş takımı tonları"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Diğer"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tuş takımı ses uzunluğu"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Normal"</item>
+ <item msgid="6177579030803486015">"Uzun"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hızlı yanıtlar"</string>
<string name="call_settings_label" msgid="313434211353070209">"Çağrılar"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Çağrı hesapları"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 6fe2f8b19..aa40a43fb 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -21,10 +21,9 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Тел."</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Історія дзвінків"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Надіслати SMS"</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="5551148439199439404">"Видалити з історії дзвінків"</string>
<string name="recentCalls_deleteAll" msgid="5157887960461979812">"Очистити історію дзвінків"</string>
<string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Видалити голосову пошту"</string>
@@ -33,10 +32,12 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Очистити історію дзвінків?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"З історії буде видалено всі дзвінки"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Очищення історії дзвінків…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Голосова пошта"</item>
- <item quantity="other" msgid="5513481419205061254">"Повідомлень голос. пошти: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> голосове повідомлення </item>
+ <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> голосові повідомлення </item>
+ <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> голосових повідомлень </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> голосових повідомлень </item>
+ </plurals>
<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>
@@ -80,7 +81,6 @@
<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_contact" msgid="4579643070374941999">"Додати в контакти"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Додати 2-сек. паузу"</string>
<string name="add_wait" msgid="3360818652790319634">"Додати паузу"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Налаштування"</string>
@@ -141,14 +141,15 @@
<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_create_new_contact" msgid="1679917465521554093">"Створити новий контакт"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Додати до наявного контакта"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Надіслати SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Здійснити відеодзвінок"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Переглянути всю історію дзвінків"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"Нових пропущених дзвінків: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Швидкий набір – це набір вибраних номерів і номерів, на які ви часто телефонуєте, одним дотиком"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Немає контактів"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Торкніться зображення, щоб побачити всі номери, або натисніть і утримуйте, щоб змінити порядок"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Закрити"</string>
<string name="remove_contact" msgid="1080555335283662961">"Видалити"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"УСІ КОНТАКТИ"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"ТЕЛЕФОНУВАТИ"</string>
@@ -166,7 +167,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Слухати голосову пошту: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>: деталі виклику"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Видалено з історії дзвінків"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Номер надіслано в Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"ПОСКАРЖИТИСЯ"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Сьогодні"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Учора"</string>
@@ -178,14 +178,18 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Відтворювати повільніше."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Почати або призупинити відтворення."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Загальні налаштування"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Параметри відображення контактів"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Звуки та вібросигнал"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Параметри відображення"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуки та вібрація"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Спеціальні можливості"</string>
<string name="ringtone_title" msgid="760362035635084653">"Сигнал дзвінка телефона"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Також вібрувати для дзвінків"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Звуки цифрової клавіатури"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Інше"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Тривалість сигналу цифрової клавіатури"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Стандартний сигнал"</item>
+ <item msgid="6177579030803486015">"Довгий сигнал"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Швидкі відповіді"</string>
<string name="call_settings_label" msgid="313434211353070209">"Дзвінки"</string>
- <string name="phone_account_settings_label" msgid="5864322009841175294">"Облікові записи для дзвінків"</string>
+ <string name="phone_account_settings_label" msgid="5864322009841175294">"Обл. записи для дзвінків"</string>
</resources>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index e82562446..1c0b37c1b 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"فون"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"فون"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"کال کی سرگزشت"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"‏SMS بھیجیں"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"کال کی سرگزشت صاف کریں؟"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"یہ آپ کی سرگزشت سے سبھی کالز کو حذف کر دے گا"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"کال کی سرگزشت صاف کی جا رہی ہے…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"صوتی میل"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> صوتی میلز"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> صوتی میلز </item>
+ <item quantity="one">صوتی میل</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"رابطوں میں شامل کریں"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2 سیکنڈ کا توقف شامل کریں"</string>
<string name="add_wait" msgid="3360818652790319634">"انتظار شامل کریں"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"ترتیبات"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"نیا رابطہ بنائیں"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"موجودہ رابطے میں شامل کریں"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"‏SMS بھیجیں"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ویڈیو کال کریں"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"کال کی مکمل سرگزشت دیکھیں"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> نئی چھوٹی ہوئی کالیں"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"اسپیڈ ڈائل ان پسندیدگیوں اور نمبرز کیلئے جنہیں آپ اکثر کال کرتے ہیں ایک ٹچ ڈائلنگ ہے"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"کوئی رابطے نہیں ہیں"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"سبھی نمبرز دیھکنے کیلئے تصویر ٹچ کریں یا دوبارہ ترتیب دینے کیلئے ٹچ کریں اور دبائے رکھیں"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"کالعدم کریں"</string>
<string name="remove_contact" msgid="1080555335283662961">"ہٹائیں"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"سبھی رابطے"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"واپس کال کریں"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> سے صوتی میل سنیں"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> کیلئے کال کی تفصیلات"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"کال کی سرگزشت سے حذف کر دیا گیا"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"‏Google کو نمبر کی اطلاع دی گئی"</string>
<string name="call_log_action_report" msgid="561229827189128879">"اطلاع دیں"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"ﺁﺝ"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"گزشتہ کل"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"آہستہ چلائیں۔"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"پلے بیک شروع یا موقوف کریں۔"</string>
<string name="list_delimeter" msgid="4571593167738725100">"، "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"عام"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"رابطہ کے ڈسپلے کے اختیارات"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"آوازیں اور وائبریٹ"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"ڈسپلے کے اختیارات"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"آوازیں اور وائبریشن"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
<string name="ringtone_title" msgid="760362035635084653">"فون رِنگ ٹون"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"کالز کیلئے وائبریٹ بھی کرے"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ڈائل پیڈ ٹونز"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"دیگر"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ڈائل پیڈ ٹون کی لمبائی"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"حسب معمول"</item>
+ <item msgid="6177579030803486015">"طویل"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"فوری جوابات"</string>
<string name="call_settings_label" msgid="313434211353070209">"کالز"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"کالنگ اکاؤنٹس"</string>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index e054bc921..22081b6dd 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Qo‘ng‘iroqlar tarixi"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS yuborish"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g>ga qo‘ng‘iroq qilish"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Qo‘ng‘iroq qilishdan oldin raqamni tahrirlang"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Kontaktlarga qo‘shish"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Qo‘ng‘iroqlar tarixi tozalansinmi?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Bu barcha qo‘ng‘iroqlar tarixini o‘chirib tashlaydi"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Qo‘ng‘iroqlar tarixi tozalanmoqda…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Ovozli xabar"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ta ovozli xabar"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ta ovozli xabar </item>
+ <item quantity="one">Ovozli xabar</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Tinglash"</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>dan yangi ovozli xabar"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Javobsiz qo‘n-larni ko‘rsatish"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Ovozli xabarlarni ko‘rsatish"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Barcha qo‘n-larni ko‘rsatish"</string>
- <string name="add_contact" msgid="4579643070374941999">"Kontaktlarga qo‘shish"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"2 soniyalik pauza qo‘shish"</string>
<string name="add_wait" msgid="3360818652790319634">"Kutishni qo‘shish"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Sozlamalar"</string>
@@ -141,14 +139,15 @@
<string name="favorite_hidden" msgid="5011234945140912047">"Tanlanganlardan o‘chirilgan"</string>
<string name="favorite_hidden_undo" msgid="2508998611039406474">"Qaytarish"</string>
<string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>ga qo‘ng‘iroq qilish"</string>
- <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Kontaktlarga qo‘shish"</string>
+ <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Yangi kontakt yaratish"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Mavjud kontaktga qo‘shish"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS yuborish"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videoqo‘ng‘iroq qilish"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"To‘liq qo‘ng‘iroqlar tarixini ko‘rish"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ta javobsiz qo‘ng‘iroq"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Tezkor terish bu – sevimli kontaktlaringiz va ko‘p foydalaniladigan raqamlarga bir marta bosish orqali qo‘ng‘iroq qilish vositasidir"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Kontaktlar yo‘q"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Barcha raqamlarni ko‘rish uchun rasm ustiga bosing. Joyini o‘zgartirish uchun uni bosib turing."</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Ahamiyatsiz qoldirish"</string>
<string name="remove_contact" msgid="1080555335283662961">"O‘chirish"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"BARCHA KONTAKTLAR"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"CHAQIRUV"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> kontaktidan kelgan ovozli xabarni tinglash"</string>
<string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> – qo‘ng‘iroq tafsilotlari"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Qo‘ng‘iroqlar tarixidan o‘chirib tashlandi"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Raqam haqidagi ma’lumotlar Google’ga yuborildi"</string>
<string name="call_log_action_report" msgid="561229827189128879">"GOOGLE’GA XABAR BERISH"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Bugun"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Kecha"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Sekinroq ijro etish."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Ijroni boshlash yoki to‘xtatish"</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Umumiy"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kontaktlarni ko‘rsatish uchun tanlamalar"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Ovoz va tebranish"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Ko‘rsatish sozlamalari"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ovozlar va tebranish"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Maxsus imkoniyatlar"</string>
<string name="ringtone_title" msgid="760362035635084653">"Telefon uchun rington"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Qo‘ng‘iroq vaqtida tebranish"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tugmalar tovushi"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Boshqa"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Klaviatura ohangi uzunligi"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"O‘rtacha"</item>
+ <item msgid="6177579030803486015">"Uzun"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Tezkor javoblar"</string>
<string name="call_settings_label" msgid="313434211353070209">"Qo‘ng‘iroqlar"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Qo‘ng‘iroq uchun hisoblar"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 4e46eaa2e..ffddeadfe 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Điện thoại"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Điện thoại"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Nhật ký cuộc gọi"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Gửi SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Gọi <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Chỉnh sửa số trước khi gọi"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Thêm vào danh bạ"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Xóa nhật ký cuộc gọi?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Thao tác này sẽ xóa tất cả cuộc gọi khỏi nhật ký của bạn"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Đang xóa nhật ký cuộc gọi…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Thư thoại"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Thư thoại"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Thư thoại </item>
+ <item quantity="one">Thư thoại</item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Phát"</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">"Thư thoại mới từ <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Chỉ hiển thị cuộc gọi nhỡ"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Chỉ hiển thị thư thoại"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Hiển thị tất cả cuộc gọi"</string>
- <string name="add_contact" msgid="4579643070374941999">"Thêm vào danh bạ"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Thêm 2 giây dừng"</string>
<string name="add_wait" msgid="3360818652790319634">"Thêm chờ"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Cài đặt"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Tạo liên hệ mới"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Thêm vào liên hệ hiện có"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Gửi SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Gọi điện video"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Xem lịch sử cuộc gọi đầy đủ"</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="speed_dial_empty" msgid="1931474498966072849">"Quay số nhanh là quay số bằng một lần chạm đối với các liên hệ yêu thích và các số bạn thường xuyên gọi"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Không có liên hệ nào"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Chạm vào hình ảnh để xem tất cả các số hoặc chạm và giữ để sắp xếp lại"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Loại bỏ"</string>
<string name="remove_contact" msgid="1080555335283662961">"Xóa"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"TẤT CẢ NGƯỜI LIÊN HỆ"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"GỌI LẠI"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Nghe thư thoại từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Chi tiết cuộc gọi cho <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Đã xóa khỏi nhật ký cuộc gọi"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Đã báo cáo số cho Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"BÁO CÁO"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Hôm nay"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Hôm qua"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Phát chậm hơn."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Bắt đầu hoặc tạm dừng phát lại."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Chung"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Tùy chọn hiển thị liên hệ"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Âm thanh và rung"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Tùy chọn hiển thị"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Âm thanh và rung"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Trợ năng"</string>
<string name="ringtone_title" msgid="760362035635084653">"Nhạc chuông điện thoại"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Đồng thời rung khi có cuộc gọi"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Âm bàn phím số"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Khác"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Độ dài âm bàn phím số"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Thường"</item>
+ <item msgid="6177579030803486015">"Dài"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Trả lời nhanh"</string>
<string name="call_settings_label" msgid="313434211353070209">"Cuộc gọi"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Tài khoản gọi"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index b4d2d63ae..62b349de2 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"电话"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"拨号"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"通话记录"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"发送短信"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"要清除通话记录吗?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"这会删除您的所有通话记录"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"正在清除通话记录…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"语音邮件"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> 封语音邮件"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> 封语音邮件</item>
+ <item quantity="one">1 封语音邮件</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"添加到通讯录"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"延长暂停时间2秒"</string>
<string name="add_wait" msgid="3360818652790319634">"延长等待时间"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"设置"</string>
@@ -121,7 +119,7 @@
<string name="contact_list_loading" msgid="5488620820563977329">"正在加载..."</string>
<string name="imei" msgid="3045126336951684285">"移动通信国际识别码"</string>
<string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"正从SIM卡中加载..."</string>
+ <string name="simContacts_emptyLoading" msgid="6700035985448642408">"正从 SIM 卡中加载..."</string>
<string name="simContacts_title" msgid="27341688347689769">"SIM卡联系人"</string>
<string name="add_contact_not_available" msgid="5547311613368004859">"没有可用的通讯录应用"</string>
<string name="voice_search_not_available" msgid="2977719040254285301">"无法使用语音搜索"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"新建联系人"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"添加到现有联系人"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"发送短信"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"发起视频通话"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"查看全部通话记录"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>个新的未接电话"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"使用快速拨号功能,只需轻轻一点即可拨打收藏联系人的电话号码以及经常拨打的电话号码。"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"没有联系人"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"触摸图片可查看所有号码,触摸并按住可重新排序"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"关闭"</string>
<string name="remove_contact" msgid="1080555335283662961">"移除"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"所有联系人"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"回电"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"听取来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>的语音邮件"</string>
<string name="description_details_action" msgid="2433827152749491785">"与<xliff:g id="NAMEORNUMBER">^1</xliff:g>的通话详情"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"已从通话记录中删除"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"电话号码已报告给 Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"报告问题"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"今天"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"昨天"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"慢放。"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"开始或暂停播放。"</string>
<string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"常规"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"联系人显示选项"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"提示音和振动"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"显示选项"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"提示音和振动"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"无障碍功能"</string>
<string name="ringtone_title" msgid="760362035635084653">"手机铃声"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"有来电时响铃并振动"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"拨号键盘提示音"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"其他"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"拨号键盘提示音长度"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"标准"</item>
+ <item msgid="6177579030803486015">"长"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"快速回复"</string>
<string name="call_settings_label" msgid="313434211353070209">"通话"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"通话帐户"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 2f492a7f4..4f86a0898 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"電話"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"電話"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"通話記錄"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"傳送短訊"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"要清除通話記錄嗎?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"這會刪除所有通話記錄"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"正在清除通話記錄…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"話音留言"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> 個語音留言"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> 個留言</item>
+ <item quantity="one">留言</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"加入通訊錄"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"新增 2 秒暫停功能"</string>
<string name="add_wait" msgid="3360818652790319634">"新增插播功能"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"設定"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"建立新聯絡人"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"加到現有的聯絡人"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"傳送短訊"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"進行視像通話"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"查看完整通話記錄"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> 個新的未接來電"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"使用快速撥號,只需點一下螢幕就能撥出常用電話號碼並致電最愛的親友"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"沒有聯絡人"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"輕觸圖像以查看所有電話號碼,或輕觸並按住圖像以重新排序"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"關閉"</string>
<string name="remove_contact" msgid="1080555335283662961">"移除"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"所有聯絡人"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"回撥電話"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"收聽來自「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」的留言信箱"</string>
<string name="description_details_action" msgid="2433827152749491785">"與「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」通話的詳細資料"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"已從通話記錄中刪除"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"已向 Google 報告電話號碼"</string>
<string name="call_log_action_report" msgid="561229827189128879">"報告"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"今天"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"昨天"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"放慢播放速度。"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"開始或暫停播放。"</string>
<string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"一般"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"聯絡人顯示選項"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"音效和震動"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"顯示選項"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"聲音和震動"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"無障礙功能"</string>
<string name="ringtone_title" msgid="760362035635084653">"手機鈴聲"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"來電時同時震動"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"撥號盤音效"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"其他"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"撥號音長度"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"正常"</item>
+ <item msgid="6177579030803486015">"長"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"快速回應"</string>
<string name="call_settings_label" msgid="313434211353070209">"通話"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"通話帳戶"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 322309e53..f521bb75e 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"電話"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"電話"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"通話紀錄"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"傳送簡訊"</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>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"清除通話紀錄?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"這項操作會將所有通話從您的紀錄中刪除"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"正在清除通話紀錄…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"語音留言"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> 則語音留言"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> 則語音留言</item>
+ <item quantity="one">語音留言</item>
+ </plurals>
<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>
@@ -80,7 +79,6 @@
<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_contact" msgid="4579643070374941999">"新增為聯絡人"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"暫停時間延長 2 秒"</string>
<string name="add_wait" msgid="3360818652790319634">"延長等待時間"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"設定"</string>
@@ -141,14 +139,15 @@
<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_create_new_contact" msgid="1679917465521554093">"建立新聯絡人"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"新增到現有的聯絡人"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"傳送簡訊"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"進行視訊通話"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"查看完整通話紀錄"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> 通新的未接來電"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"快速撥號功能可讓您輕觸一下即撥打電話給最愛聯絡人和經常通話的號碼"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"沒有聯絡人"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"輕觸圖片即可查看所有號碼,輕觸並按住則可重新排序"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"關閉"</string>
<string name="remove_contact" msgid="1080555335283662961">"移除"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"所有聯絡人"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"回電"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"聽取「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」的語音留言"</string>
<string name="description_details_action" msgid="2433827152749491785">"與「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」通話的詳細資料"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"已從通話紀錄中刪除"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"已將號碼回報給 Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"檢舉"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"今天"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"昨天"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"放慢播放速度。"</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"開始或暫停播放。"</string>
<string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"一般"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"聯絡人顯示選項"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"音效和震動"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"顯示選項"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"音效與振動"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"協助工具"</string>
<string name="ringtone_title" msgid="760362035635084653">"手機鈴聲"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"來電時同時震動"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"撥號鍵盤音效"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"其他"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"撥號音長度"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"一般"</item>
+ <item msgid="6177579030803486015">"長"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"快速回應"</string>
<string name="call_settings_label" msgid="313434211353070209">"通話"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"通話帳戶"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index b49ceb565..4a9eb0359 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -21,7 +21,6 @@
<string name="launcherActivityLabel" msgid="1129729740601172692">"Ifoni"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"Ifoni"</string>
<string name="recentCallsIconLabel" msgid="2639489159797075507">"Umlando wekholi"</string>
- <string name="menu_sendTextMessage" msgid="8682056943960339239">"Thumela i-SMS"</string>
<string name="recentCalls_callNumber" msgid="1756372533999226126">"Shayela <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Hlela inombolo ngaphambi kokushaya ucingo"</string>
<string name="recentCalls_addToContact" msgid="1429899535546487008">"Engeza kothintana nabo"</string>
@@ -33,10 +32,10 @@
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Sula umlando wekholi?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Lokhu kuzosusa wonke amakholi kusukela kumlando wakho"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Isula umlando wekholi…"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Ivoyisimeyili"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ama-meyli ezwi"</item>
- </plurals>
+ <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+ <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Amavoyisimeyili </item>
+ <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Amavoyisimeyili </item>
+ </plurals>
<string name="notification_action_voicemail_play" msgid="6113133136977996863">"Dlala"</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">"I-imeyli entsha esuka ku <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
<string name="menu_show_missed_only" msgid="154473166059743996">"Bonisa okugejiwe kuphela"</string>
<string name="menu_show_voicemails_only" msgid="1898421289561435703">"Bonisa ama-imeyli ezwi kuphela"</string>
<string name="menu_show_all_calls" msgid="7560347482073345885">"Bonisa zonke izingcingo ezenziwe"</string>
- <string name="add_contact" msgid="4579643070374941999">"Engeza koxhumana nabo"</string>
<string name="add_2sec_pause" msgid="9214012315201040129">"Faka ukumisa okwesikhashana kwamasekhondi angu-2"</string>
<string name="add_wait" msgid="3360818652790319634">"Yengeza ukulinda"</string>
<string name="dialer_settings_label" msgid="4305043242594150479">"Izilungiselelo"</string>
@@ -141,14 +139,15 @@
<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="search_shortcut_create_new_contact" msgid="1679917465521554093">"Dala oxhumana naye omusha"</string>
+ <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Engeza koxhumana naye okhona"</string>
+ <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Thumela i-SMS"</string>
<string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Yenza ikholi yevidiyo"</string>
<string name="recents_footer_text" msgid="7315554578957453359">"Buka wonke umlando wekholi"</string>
<string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> amakholi amasha owaphuthelwe"</string>
<string name="speed_dial_empty" msgid="1931474498966072849">"Ukudayela ngokushesha ukudayela kokuthinta okukodwa kwezintandokazi nezinombolo ovamise ukuzishayela"</string>
<string name="all_contacts_empty" msgid="2299508125100209367">"Abekho oxhumana nabo"</string>
<string name="contact_tooltip" msgid="2019777545923635266">"Thinta isithombe ukuze ubone zonke izinombolo noma uthinte uphinde ubambe ukuze uhlele kabusha"</string>
- <string name="description_dismiss" msgid="2146276780562549643">"Cashisa"</string>
<string name="remove_contact" msgid="1080555335283662961">"Susa"</string>
<string name="favorites_menu_all_contacts" msgid="992506284449891186">"BONKE OXHUMANA NABO"</string>
<string name="call_log_action_call_back" msgid="4944463006859852473">"SHAYA FUTHI"</string>
@@ -166,7 +165,6 @@
<string name="description_voicemail_action" msgid="8054891873788903063">"Lalela ivoyisimeyili esuka ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="description_details_action" msgid="2433827152749491785">"Imininingwane yekholi ye-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
<string name="toast_entry_removed" msgid="8010830299576311534">"Isusiwe kusukela kumlando wekholi"</string>
- <string name="toast_caller_id_reported" msgid="2240847358945525483">"Inombolo ibikwe ku-Google"</string>
<string name="call_log_action_report" msgid="561229827189128879">"BIKA"</string>
<string name="call_log_header_today" msgid="3225248682434212981">"Namhlanje"</string>
<string name="call_log_header_yesterday" msgid="9139172458834033092">"Izolo"</string>
@@ -178,13 +176,17 @@
<string name="voicemail_play_slower" msgid="4544796503902818832">"Dlala ngokungasheshi."</string>
<string name="voicemail_play_start_pause" msgid="3687447935787768983">"Qala noma misa isikhashana ukudlala."</string>
<string name="list_delimeter" msgid="4571593167738725100">", "</string>
- <string name="general_settings_label" msgid="5748319557716674189">"Okujwayelekile"</string>
- <string name="contact_display_options_category_title" msgid="5719485933817512769">"Izinketho zokubonisa oxhumana naye"</string>
- <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Imisindo nokudlidliza"</string>
+ <string name="display_options_title" msgid="7812852361055667468">"Izinketho zokubukeka"</string>
+ <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Imisindo nokudlidliza"</string>
+ <string name="accessibility_settings_title" msgid="6068141142874046249">"Ukufinyeleleka"</string>
<string name="ringtone_title" msgid="760362035635084653">"Ithoni yokukhala yefoni"</string>
<string name="vibrate_on_ring_title" msgid="3362916460327555241">"Iyadlidliza futhi ngamakholi"</string>
<string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Ukukhala kwephedi yokudayela"</string>
- <string name="other_settings_title" msgid="7976283601445863248">"Okunye"</string>
+ <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Ubude bethoni bephedi yokudayela"</string>
+ <string-array name="dtmf_tone_length_entries">
+ <item msgid="1036113889050195575">"Okujwayelekile"</item>
+ <item msgid="6177579030803486015">"Kude"</item>
+ </string-array>
<string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Izimpendulo ezisheshayo"</string>
<string name="call_settings_label" msgid="313434211353070209">"Amakholi"</string>
<string name="phone_account_settings_label" msgid="5864322009841175294">"Ama-akhawunti wokushaya"</string>
diff --git a/res/values/animation_constants.xml b/res/values/animation_constants.xml
index b8b2a59f4..4e4bc36e1 100644
--- a/res/values/animation_constants.xml
+++ b/res/values/animation_constants.xml
@@ -27,16 +27,4 @@
<dimen name="min_swipe">0dip</dimen>
<dimen name="min_vert">10dip</dimen>
<dimen name="min_lock">20dip</dimen>
-
- <!-- Expand/collapse of call log entry duration. -->
- <integer name="call_log_expand_collapse_duration">200</integer>
-
- <!-- Start delay for the fade in of the call log actions. -->
- <integer name="call_log_actions_fade_start">150</integer>
-
- <!-- Duration of the fade in of the call log actions. -->
- <integer name="call_log_actions_fade_in_duration">50</integer>
-
- <!-- Duration of the fade out of the call log actions. -->
- <integer name="call_log_actions_fade_out_duration">20</integer>
</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 6e44f8b44..f697cc8cc 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -26,6 +26,7 @@
<color name="setting_primary_color">@color/dialtacts_primary_text_color</color>
<!-- Color for the setting description text. -->
<color name="setting_secondary_color">@color/dialtacts_secondary_text_color</color>
+ <color name="setting_disabled_color">#aaaaaa</color>
<color name="setting_background_color">#ffffff</color>
<color name="setting_button_color">#eee</color>
@@ -37,7 +38,6 @@
<!-- Tint of the recent card phone icon -->
<color name="recent_call_log_item_phone_icon_tint">#000000</color>
- <color name="call_log_extras_text_color">#0277bd</color>
<!--
Colour of voicemail progress bar to the right of position indicator.
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index b8b93cb0a..9de20f310 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -64,21 +64,6 @@
<dimen name="favorites_row_end_padding">0dp</dimen>
<dimen name="favorites_row_undo_text_side_padding">32dp</dimen>
- <!-- Dimensions for most recent call shortcut cards -->
- <dimen name="recent_call_log_item_translation_z">3dp</dimen>
- <dimen name="recent_call_log_item_margin_horizontal">8dp</dimen>
- <dimen name="recent_call_log_item_margin_top">4dp</dimen>
- <dimen name="recent_call_log_item_margin_bottom">6dp</dimen>
-
- <!-- The maximum amount to clip on the left and right of the recent call shortcut card -->
- <dimen name="recent_call_log_item_horizontal_clip_limit">20dp</dimen>
- <dimen name="recent_call_log_item_padding_start">8dp</dimen>
- <dimen name="recent_call_log_item_padding_top">12dp</dimen>
- <dimen name="recent_call_log_item_padding_bottom">11dp</dimen>
-
- <dimen name="call_log_item_extra_padding_vertical">4dp</dimen>
-
-
<!-- Size of the star icon on the favorites tile. -->
<dimen name="favorites_star_icon_size">12dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5d0685227..4c4921d31 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -42,9 +42,6 @@
[CHAR LIMIT=NONE] -->
<string name="recentCallsIconLabel">Call history</string>
- <!-- Menu item used to send an SMS or MMS message to a phone number -->
- <string name="menu_sendTextMessage">Send SMS</string>
-
<!-- Menu item used to call a contact from the call log -->
<string name="recentCalls_callNumber">Call
<xliff:g id="name">%s</xliff:g>
@@ -262,7 +259,6 @@
<string name="menu_show_all_calls">Show all calls</string>
<!-- Menu items for dialpad options as part of Pause and Wait ftr [CHAR LIMIT=30] -->
- <string name="add_contact">Add to contacts</string>
<string name="add_2sec_pause">Add 2-sec pause</string>
<string name="add_wait">Add wait</string>
@@ -502,8 +498,16 @@
<xliff:g id="number">%s</xliff:g>
</string>
- <!-- Shortcut item used to add a number directly from search -->
- <string name="search_shortcut_add_to_contacts">Add to contacts</string>
+ <!-- Shortcut item used to add a number directly to a new contact from search.
+ [CHAR LIMIT=40] -->
+ <string name="search_shortcut_create_new_contact">Create new contact</string>
+
+ <!-- Shortcut item used to add a number to an existing contact directly from search.
+ [CHAR LIMIT=40] -->
+ <string name="search_shortcut_add_to_existing_contact">Add to existing contact</string>
+
+ <!-- Shortcut item used to send a text message directly from search. [CHAR LIMIT=40] -->
+ <string name="search_shortcut_send_sms_message">Send SMS</string>
<!-- Shortcut item used to make a video call directly from search. -->
<string name="search_shortcut_make_video_call">Make video call</string>
@@ -526,9 +530,6 @@
-->
<string name="contact_tooltip">Touch image to see all numbers or touch &amp; hold to reorder</string>
- <!-- Content description for dismiss button on badge. [CHAR LIMIT=NONE] -->
- <string name="description_dismiss">Dismiss</string>
-
<!-- Remove button that shows up when contact is long-pressed. [CHAR LIMIT=NONE] -->
<string name="remove_contact">Remove</string>
@@ -626,10 +627,6 @@
[CHAR LIMIT=NONE] -->
<string name="toast_entry_removed">Deleted from call history</string>
- <!-- Toast message which appears when a call log contact is reported.
- [CHAR LIMIT=NONE] -->
- <string name="toast_caller_id_reported">Number reported to Google</string>
-
<!-- Button text for the "report" button displayed underneath an entry in the call log.
Tapping causes the call log entry to be reported to Google as a bad id.
[CHAR LIMIT=30] -->
@@ -690,16 +687,17 @@
<!-- Dialer settings related strings-->
- <!-- Label for the general dialer settings section [CHAR LIMIT=30]-->
- <string name="general_settings_label">General</string>
+ <!-- Title for "Display options" category, which controls how contacts are shown.
+ [CHAR LIMIT=40] -->
+ <string name="display_options_title">Display options</string>
- <!-- Title for "Contact display options" category, which is shown above options which
- manipulate how contacts are shown. [CHAR LIMIT=40] -->
- <string name="contact_display_options_category_title">Contact display options</string>
+ <!-- Title for the "Sounds and vibration" settings control settings related to ringtones,
+ dialpad tones, and vibration for incoming calls. [CHAR LIMIT=40] -->
+ <string name="sounds_and_vibration_title">Sounds and vibration</string>
- <!-- Title for the category "sounds", which is shown above sounds and vibration related
- settings. [CHAR LIMIT=30] -->
- <string name="sounds_and_vibrate_category_title">Sounds and vibrate</string>
+ <!-- Title for "Accessibility" category, which controls settings such as TTY mode and hearing
+ aid compatability. [CHAR LIMIT=40] -->
+ <string name="accessibility_settings_title">Accessibility</string>
<!-- Setting option name to pick ringtone (a list dialog comes up). [CHAR LIMIT=30] -->
<string name="ringtone_title">Phone ringtone</string>
@@ -710,9 +708,18 @@
<!-- Setting option name to enable or disable DTMF tone sound [CHAR LIMIT=30] -->
<string name="dtmf_tone_enable_title">Dialpad tones</string>
-
- <!-- Label for section of general call settings where miscellaneous settings are listed. -->
- <string name="other_settings_title">Other</string>
+ <!-- Label for setting to adjust the length of DTMF tone sounds. [CHAR LIMIT=40] -->
+ <string name="dtmf_tone_length_title">Dialpad tone length</string>
+ <!-- Options displayed for the length of DTMF tone sounds. [CHAR LIMIT=40] -->
+ <string-array name="dtmf_tone_length_entries">
+ <item>Normal</item>
+ <item>Long</item>
+ </string-array>
+ <!-- Do not translate. -->
+ <string-array name="dtmf_tone_length_entry_values" translatable="false">
+ <item>0</item>
+ <item>1</item>
+ </string-array>
<!-- Title of settings screen for managing the "Respond via SMS" feature. [CHAR LIMIT=30] -->
<string name="respond_via_sms_setting_title">Quick responses</string>
@@ -722,4 +729,13 @@
<!-- Label for the phone account settings [CHAR LIMIT=30] -->
<string name="phone_account_settings_label">Calling accounts</string>
+
+ <!-- DO NOT TRANSLATE. Internal key for ringtone preference. -->
+ <string name="ringtone_preference_key" translatable="false">button_ringtone_key</string>
+ <!-- DO NOT TRANSLATE. Internal key for vibrate when ringing preference. -->
+ <string name="vibrate_on_preference_key" translatable="false">button_vibrate_on_ring</string>
+ <!-- DO NOT TRANSLATE. Internal key for vibrate when ringing preference. -->
+ <string name="play_dtmf_preference_key" translatable="false">button_play_dtmf_tone</string>
+ <!-- DO NOT TRANSLATE. Internal key for DTMF tone length preference. -->
+ <string name="dtmf_tone_length_preference_key" translatable="false">button_dtmf_settings</string>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 82df4ec0f..8bd5f9d8e 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -166,9 +166,9 @@
<!-- Style applied to the "Settings" screen. Keep in sync with SettingsLight in Telephony. -->
<style name="SettingsStyle" parent="DialtactsThemeWithoutActionBarOverlay">
<!-- Setting text. -->
- <item name="android:textColor">@color/setting_primary_color</item>
+ <item name="android:textColorPrimary">@color/settings_text_color_primary</item>
<!-- Setting description. -->
- <item name="android:textColorSecondary">@color/setting_secondary_color</item>
+ <item name="android:textColorSecondary">@color/settings_text_color_secondary</item>
<item name="android:windowBackground">@color/setting_background_color</item>
<item name="android:colorAccent">@color/dialtacts_theme_color</item>
<item name="android:textColorLink">@color/dialtacts_theme_color</item>
diff --git a/res/xml/display_options_settings.xml b/res/xml/display_options_settings.xml
new file mode 100644
index 000000000..07aadf758
--- /dev/null
+++ b/res/xml/display_options_settings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ Copyright (C) 2015 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
+ -->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <com.android.contacts.common.preference.SortOrderPreference
+ android:key="sortOrder"
+ android:title="@string/display_options_sort_list_by"
+ android:dialogTitle="@string/display_options_sort_list_by" />
+
+ <com.android.contacts.common.preference.DisplayOrderPreference
+ android:key="displayOrder"
+ android:title="@string/display_options_view_names_as"
+ android:dialogTitle="@string/display_options_view_names_as" />
+
+</PreferenceScreen>
diff --git a/res/xml/general_settings.xml b/res/xml/general_settings.xml
deleted file mode 100644
index b1a78c1f2..000000000
--- a/res/xml/general_settings.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- ~ Copyright (C) 2014 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-
- <PreferenceCategory
- android:key="dialer_contact_display_options_category_key"
- android:title="@string/contact_display_options_category_title"
- android:persistent="false">
-
- <com.android.contacts.common.preference.SortOrderPreference
- android:key="sortOrder"
- android:title="@string/display_options_sort_list_by"
- android:dialogTitle="@string/display_options_sort_list_by" />
-
- <com.android.contacts.common.preference.DisplayOrderPreference
- android:key="displayOrder"
- android:title="@string/display_options_view_names_as"
- android:dialogTitle="@string/display_options_view_names_as" />
-
- </PreferenceCategory>
-
- <PreferenceCategory
- android:key="dialer_general_sounds_category_key"
- android:title="@string/sounds_and_vibrate_category_title"
- android:persistent="false">
-
- <com.android.dialer.settings.DefaultRingtonePreference
- android:key="button_ringtone_key"
- android:title="@string/ringtone_title"
- android:dialogTitle="@string/ringtone_title"
- android:persistent="false"
- android:ringtoneType="ringtone" />
-
- <CheckBoxPreference
- android:key="button_play_dtmf_tone"
- android:title="@string/dtmf_tone_enable_title"
- android:persistent="false"
- android:defaultValue="true" />
-
- <CheckBoxPreference
- android:key="button_vibrate_on_ring"
- android:title="@string/vibrate_on_ring_title"
- android:persistent="false"
- android:defaultValue="false" />
-
- </PreferenceCategory>
-
- <PreferenceCategory
- android:key="dialer_general_other_settings_category_key"
- android:title="@string/other_settings_title"
- android:persistent="false" >
-
- <PreferenceScreen
- android:key="button_respond_via_sms_key"
- android:title="@string/respond_via_sms_setting_title"
- android:persistent="false">
-
- <intent
- android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.server.telecom"
- android:targetClass="com.android.server.telecom.RespondViaSmsSettings$Settings" />
-
- </PreferenceScreen>
-
- </PreferenceCategory>
-
-</PreferenceScreen> \ No newline at end of file
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
new file mode 100644
index 000000000..80fad626a
--- /dev/null
+++ b/res/xml/sound_settings.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ Copyright (C) 2014 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <com.android.dialer.settings.DefaultRingtonePreference
+ android:key="@string/ringtone_preference_key"
+ android:title="@string/ringtone_title"
+ android:dialogTitle="@string/ringtone_title"
+ android:persistent="false"
+ android:ringtoneType="ringtone" />
+
+ <CheckBoxPreference
+ android:key="@string/vibrate_on_preference_key"
+ android:title="@string/vibrate_on_ring_title"
+ android:persistent="false"
+ android:defaultValue="false" />
+
+ <CheckBoxPreference
+ android:key="@string/play_dtmf_preference_key"
+ android:title="@string/dtmf_tone_enable_title"
+ android:persistent="false"
+ android:defaultValue="true" />
+
+ <ListPreference
+ android:key="@string/dtmf_tone_length_preference_key"
+ android:title="@string/dtmf_tone_length_title"
+ android:entries="@array/dtmf_tone_length_entries"
+ android:entryValues="@array/dtmf_tone_length_entry_values" />
+
+</PreferenceScreen>
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 6c576508c..5dae9d07d 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -27,6 +27,7 @@ import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.os.PowerManager;
import android.provider.CallLog;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -50,9 +51,9 @@ import android.widget.TextView;
import android.widget.Toast;
import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.CallUtil;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.CallUtil;
import com.android.dialer.calllog.CallDetailHistoryAdapter;
import com.android.dialer.calllog.CallTypeHelper;
import com.android.dialer.calllog.ContactInfo;
@@ -62,6 +63,7 @@ import com.android.dialer.calllog.PhoneNumberDisplayHelper;
import com.android.dialer.calllog.PhoneNumberUtilsWrapper;
import com.android.dialer.util.AsyncTaskExecutor;
import com.android.dialer.util.AsyncTaskExecutors;
+import com.android.dialer.util.PrivilegedCallUtil;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.voicemail.VoicemailPlaybackFragment;
import com.android.dialer.voicemail.VoicemailStatusHelper;
@@ -82,11 +84,6 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware
private static final char LEFT_TO_RIGHT_EMBEDDING = '\u202A';
private static final char POP_DIRECTIONAL_FORMATTING = '\u202C';
- /** The time to wait before enabling the blank the screen due to the proximity sensor. */
- private static final long PROXIMITY_BLANK_DELAY_MILLIS = 100;
- /** The time to wait before disabling the blank the screen due to the proximity sensor. */
- private static final long PROXIMITY_UNBLANK_DELAY_MILLIS = 500;
-
/** The enumeration of {@link AsyncTask} objects used in this class. */
public enum Tasks {
MARK_VOICEMAIL_READ,
@@ -143,59 +140,7 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware
/** Whether we should show "remove from call log" in the options menu. */
private boolean mHasRemoveFromCallLogOption;
- private ProximitySensorManager mProximitySensorManager;
- private final ProximitySensorListener mProximitySensorListener = new ProximitySensorListener();
-
- /** Listener to changes in the proximity sensor state. */
- private class ProximitySensorListener implements ProximitySensorManager.Listener {
- /** Used to show a blank view and hide the action bar. */
- private final Runnable mBlankRunnable = new Runnable() {
- @Override
- public void run() {
- View blankView = findViewById(R.id.blank);
- blankView.setVisibility(View.VISIBLE);
- getActionBar().hide();
- }
- };
- /** Used to remove the blank view and show the action bar. */
- private final Runnable mUnblankRunnable = new Runnable() {
- @Override
- public void run() {
- View blankView = findViewById(R.id.blank);
- blankView.setVisibility(View.GONE);
- getActionBar().show();
- }
- };
-
- @Override
- public synchronized void onNear() {
- clearPendingRequests();
- postDelayed(mBlankRunnable, PROXIMITY_BLANK_DELAY_MILLIS);
- }
-
- @Override
- public synchronized void onFar() {
- clearPendingRequests();
- postDelayed(mUnblankRunnable, PROXIMITY_UNBLANK_DELAY_MILLIS);
- }
-
- /** Removed any delayed requests that may be pending. */
- public synchronized void clearPendingRequests() {
- View blankView = findViewById(R.id.blank);
- blankView.removeCallbacks(mBlankRunnable);
- blankView.removeCallbacks(mUnblankRunnable);
- }
-
- /** Post a {@link Runnable} with a delay on the main thread. */
- private synchronized void postDelayed(Runnable runnable, long delayMillis) {
- // Post these instead of executing immediately so that:
- // - They are guaranteed to be executed on the main thread.
- // - If the sensor values changes rapidly for some time, the UI will not be
- // updated immediately.
- View blankView = findViewById(R.id.blank);
- blankView.postDelayed(runnable, delayMillis);
- }
- }
+ private PowerManager.WakeLock mProximityWakeLock;
static final String[] CALL_LOG_PROJECTION = new String[] {
CallLog.Calls.DATE,
@@ -244,12 +189,20 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware
mQuickContactBadge = (QuickContactBadge) findViewById(R.id.quick_contact_photo);
mQuickContactBadge.setOverlay(null);
+ mQuickContactBadge.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
mCallerName = (TextView) findViewById(R.id.caller_name);
mCallerNumber = (TextView) findViewById(R.id.caller_number);
mAccountLabel = (TextView) findViewById(R.id.phone_account_label);
mDefaultCountryIso = GeoUtil.getCurrentCountryIso(this);
mContactPhotoManager = ContactPhotoManager.getInstance(this);
- mProximitySensorManager = new ProximitySensorManager(this, mProximitySensorListener);
+ final PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
+ if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
+ mProximityWakeLock = powerManager.newWakeLock(
+ PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, TAG);
+ } else {
+ mProximityWakeLock = null;
+ }
+
mContactInfoHelper = new ContactInfoHelper(this, GeoUtil.getCurrentCountryIso(this));
getActionBar().setDisplayHomeAsUpEnabled(true);
@@ -364,8 +317,8 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware
getSystemService(Context.TELEPHONY_SERVICE);
if (tm.getCallState() == TelephonyManager.CALL_STATE_IDLE) {
DialerUtils.startActivityWithErrorToast(this,
- CallUtil.getCallIntent(Uri.fromParts(PhoneAccount.SCHEME_TEL, mNumber,
- null)), R.string.call_not_available);
+ PrivilegedCallUtil.getCallIntent(Uri.fromParts(PhoneAccount.SCHEME_TEL,
+ mNumber, null)), R.string.call_not_available);
return true;
}
}
@@ -414,7 +367,8 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware
// We know that all calls are from the same number and the same contact, so pick the
// first.
PhoneCallDetails firstDetails = details[0];
- mNumber = firstDetails.number.toString();
+ mNumber = TextUtils.isEmpty(firstDetails.number) ?
+ null : firstDetails.number.toString();
final int numberPresentation = firstDetails.numberPresentation;
final Uri contactUri = firstDetails.contactUri;
final Uri photoUri = firstDetails.photoUri;
@@ -750,18 +704,34 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware
protected void onPause() {
// Immediately stop the proximity sensor.
disableProximitySensor(false);
- mProximitySensorListener.clearPendingRequests();
super.onPause();
}
@Override
public void enableProximitySensor() {
- mProximitySensorManager.enable();
+ if (mProximityWakeLock == null) {
+ return;
+ }
+ if (!mProximityWakeLock.isHeld()) {
+ Log.i(TAG, "Acquiring proximity wake lock");
+ mProximityWakeLock.acquire();
+ } else {
+ Log.i(TAG, "Proximity wake lock already acquired");
+ }
}
@Override
public void disableProximitySensor(boolean waitForFarState) {
- mProximitySensorManager.disable(waitForFarState);
+ if (mProximityWakeLock == null) {
+ return;
+ }
+ if (mProximityWakeLock.isHeld()) {
+ Log.i(TAG, "Releasing proximity wake lock");
+ int flags = (waitForFarState ? PowerManager.RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY : 0);
+ mProximityWakeLock.release(flags);
+ } else {
+ Log.i(TAG, "Proximity wake lock already released");
+ }
}
private void closeSystemDialogs() {
diff --git a/src/com/android/dialer/DialerApplication.java b/src/com/android/dialer/DialerApplication.java
index c64530829..7bc3bb4d3 100644
--- a/src/com/android/dialer/DialerApplication.java
+++ b/src/com/android/dialer/DialerApplication.java
@@ -17,6 +17,7 @@
package com.android.dialer;
import android.app.Application;
+import android.os.Trace;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.extensions.ExtensionsFactory;
@@ -24,26 +25,19 @@ import com.android.contacts.commonbind.analytics.AnalyticsUtil;
public class DialerApplication extends Application {
+ private static final String TAG = "DialerApplication";
private ContactPhotoManager mContactPhotoManager;
@Override
public void onCreate() {
+ Trace.beginSection(TAG + " onCreate");
super.onCreate();
+ Trace.beginSection(TAG + " ExtensionsFactory initialization");
ExtensionsFactory.init(getApplicationContext());
+ Trace.endSection();
+ Trace.beginSection(TAG + " Analytics initialization");
AnalyticsUtil.initialize(this);
- }
-
- @Override
- public Object getSystemService(String name) {
- if (ContactPhotoManager.CONTACT_PHOTO_SERVICE.equals(name)) {
- if (mContactPhotoManager == null) {
- mContactPhotoManager = ContactPhotoManager.createContactPhotoManager(this);
- registerComponentCallbacks(mContactPhotoManager);
- mContactPhotoManager.preloadPhotosInBackground();
- }
- return mContactPhotoManager;
- }
-
- return super.getSystemService(name);
+ Trace.endSection();
+ Trace.endSection();
}
}
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 95b72157e..787b6fae4 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -28,6 +28,7 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
+import android.os.Trace;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Intents;
import android.speech.RecognizerIntent;
@@ -58,7 +59,6 @@ import android.widget.ImageButton;
import android.widget.PopupMenu;
import android.widget.Toast;
-import com.android.contacts.common.CallUtil;
import com.android.contacts.common.activity.TransactionSafeActivity;
import com.android.contacts.common.dialog.ClearFrequentsDialog;
import com.android.contacts.common.interactions.ImportExportDialogFragment;
@@ -82,6 +82,7 @@ import com.android.dialer.list.SearchFragment;
import com.android.dialer.list.SmartDialSearchFragment;
import com.android.dialer.list.SpeedDialFragment;
import com.android.dialer.settings.DialerSettingsActivity;
+import com.android.dialer.util.PrivilegedCallUtil;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.widget.ActionBarController;
import com.android.dialer.widget.SearchEditTextLayout;
@@ -90,6 +91,8 @@ import com.android.dialerbind.DatabaseHelperManager;
import com.android.phone.common.animation.AnimUtils;
import com.android.phone.common.animation.AnimationListenerAdapter;
+import junit.framework.Assert;
+
import java.util.ArrayList;
import java.util.List;
@@ -235,7 +238,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
*/
private String mVoiceSearchQuery;
- private class OptionsPopupMenu extends PopupMenu {
+ protected class OptionsPopupMenu extends PopupMenu {
public OptionsPopupMenu(Context context, View anchor) {
super(context, anchor, Gravity.END);
}
@@ -350,27 +353,30 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
@Override
protected void onCreate(Bundle savedInstanceState) {
+ Trace.beginSection(TAG + " onCreate");
super.onCreate(savedInstanceState);
mFirstLaunch = true;
final Resources resources = getResources();
mActionBarHeight = resources.getDimensionPixelSize(R.dimen.action_bar_height_large);
+ Trace.beginSection(TAG + " setContentView");
setContentView(R.layout.dialtacts_activity);
+ Trace.endSection();
getWindow().setBackgroundDrawable(null);
+ Trace.beginSection(TAG + " setup Views");
final ActionBar actionBar = getActionBar();
actionBar.setCustomView(R.layout.search_edittext);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setBackgroundDrawable(null);
- mActionBarController = new ActionBarController(this,
- (SearchEditTextLayout) actionBar.getCustomView());
-
SearchEditTextLayout searchEditTextLayout =
- (SearchEditTextLayout) actionBar.getCustomView();
+ (SearchEditTextLayout) actionBar.getCustomView().findViewById(R.id.search_view_container);
searchEditTextLayout.setPreImeKeyListener(mSearchEditTextLayoutListener);
+ mActionBarController = new ActionBarController(this, searchEditTextLayout);
+
mSearchView = (EditText) searchEditTextLayout.findViewById(R.id.search_view);
mSearchView.addTextChangedListener(mPhoneSearchQueryTextListener);
mVoiceSearchButton = searchEditTextLayout.findViewById(R.id.voice_search_button);
@@ -401,12 +407,11 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
mOverflowMenu = buildOptionsMenu(searchEditTextLayout);
optionsMenuButton.setOnTouchListener(mOverflowMenu.getDragToOpenListener());
- // Add the favorites fragment, and the dialpad fragment, but only if savedInstanceState
- // is null. Otherwise the fragment manager takes care of recreating these fragments.
+ // Add the favorites fragment but only if savedInstanceState is null. Otherwise the
+ // fragment manager is responsible for recreating it.
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.dialtacts_frame, new ListsFragment(), TAG_FAVORITES_FRAGMENT)
- .add(R.id.dialtacts_container, new DialpadFragment(), TAG_DIALPAD_FRAGMENT)
.commit();
} else {
mSearchQuery = savedInstanceState.getString(KEY_SEARCH_QUERY);
@@ -453,8 +458,13 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
setupActivityOverlay();
+ Trace.endSection();
+
+ Trace.beginSection(TAG + " initialize smart dialing");
mDialerDatabaseHelper = DatabaseHelperManager.getDatabaseHelper(this);
SmartDialPrefix.initializeNanpSettings(this);
+ Trace.endSection();
+ Trace.endSection();
}
private void setupActivityOverlay() {
@@ -472,6 +482,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
@Override
protected void onResume() {
+ Trace.beginSection(TAG + " onResume");
super.onResume();
mStateSaved = false;
if (mFirstLaunch) {
@@ -506,6 +517,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
prepareVoiceSearchButton();
mDialerDatabaseHelper.startSmartDialUpdateThread();
updateFloatingActionButtonControllerAlignment(false /* animate */);
+ Trace.endSection();
}
@Override
@@ -542,7 +554,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
public void onAttachFragment(Fragment fragment) {
if (fragment instanceof DialpadFragment) {
mDialpadFragment = (DialpadFragment) fragment;
- if (!mShowDialpadOnResume) {
+ if (!mIsDialpadShown && !mShowDialpadOnResume) {
final FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.hide(mDialpadFragment);
transaction.commit();
@@ -655,12 +667,19 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
return;
}
mIsDialpadShown = true;
- mDialpadFragment.setAnimate(animate);
+
mListsFragment.setUserVisibleHint(false);
- AnalyticsUtil.sendScreenView(mDialpadFragment);
final FragmentTransaction ft = getFragmentManager().beginTransaction();
- ft.show(mDialpadFragment);
+ if (mDialpadFragment == null) {
+ mDialpadFragment = new DialpadFragment();
+ ft.add(R.id.dialtacts_container, mDialpadFragment, TAG_DIALPAD_FRAGMENT);
+ } else {
+ ft.show(mDialpadFragment);
+ }
+
+ mDialpadFragment.setAnimate(animate);
+ AnalyticsUtil.sendScreenView(mDialpadFragment);
ft.commit();
if (animate) {
@@ -679,6 +698,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
* Callback from child DialpadFragment when the dialpad is shown.
*/
public void onDialpadShown() {
+ Assert.assertNotNull(mDialpadFragment);
if (mDialpadFragment.getAnimate()) {
mDialpadFragment.getView().startAnimation(mSlideIn);
} else {
@@ -730,7 +750,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
* Finishes hiding the dialpad fragment after any animations are completed.
*/
private void commitDialpadFragmentHide() {
- if (!mStateSaved && !mDialpadFragment.isHidden()) {
+ if (!mStateSaved && mDialpadFragment != null && !mDialpadFragment.isHidden()) {
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.hide(mDialpadFragment);
ft.commit();
@@ -788,7 +808,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
}
}
- private OptionsPopupMenu buildOptionsMenu(View invoker) {
+ protected OptionsPopupMenu buildOptionsMenu(View invoker) {
final OptionsPopupMenu popupMenu = new OptionsPopupMenu(this, invoker);
popupMenu.inflate(R.menu.dialtacts_options);
final Menu menu = popupMenu.getMenu();
@@ -838,14 +858,12 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
return;
}
- if (mDialpadFragment != null) {
- final boolean phoneIsInUse = phoneIsInUse();
- if (phoneIsInUse || (intent.getData() != null && isDialIntent(intent))) {
- mDialpadFragment.setStartedFromNewIntent(true);
- if (phoneIsInUse && !mDialpadFragment.isVisible()) {
- mInCallDialpadUp = true;
- }
- showDialpadFragment(false);
+ final boolean phoneIsInUse = phoneIsInUse();
+ if (phoneIsInUse || (intent.getData() != null && isDialIntent(intent))) {
+ showDialpadFragment(false);
+ mDialpadFragment.setStartedFromNewIntent(true);
+ if (phoneIsInUse && !mDialpadFragment.isVisible()) {
+ mInCallDialpadUp = true;
}
}
}
@@ -947,7 +965,11 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
}
mSearchView.setText(null);
- mDialpadFragment.clearDialpad();
+
+ if (mDialpadFragment != null) {
+ mDialpadFragment.clearDialpad();
+ }
+
setNotInSearchUi();
final FragmentTransaction transaction = getFragmentManager().beginTransaction();
@@ -960,7 +982,8 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
transaction.commit();
mListsFragment.getView().animate().alpha(1).withLayer();
- if (!mDialpadFragment.isVisible()) {
+
+ if (mDialpadFragment == null || !mDialpadFragment.isVisible()) {
// If the dialpad fragment wasn't previously visible, then send a screen view because
// we are exiting regular search. Otherwise, the screen view will be sent by
// {@link #hideDialpadFragment}.
@@ -1090,9 +1113,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
*/
@Override
public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
- if (mListsFragment.isPaneOpen()) {
- mActionBarController.setAlpha(ListsFragment.REMOVE_VIEW_SHOWN_ALPHA);
- }
mListsFragment.showRemoveView(true);
}
@@ -1105,9 +1125,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
*/
@Override
public void onDragFinished(int x, int y) {
- if (mListsFragment.isPaneOpen()) {
- mActionBarController.setAlpha(ListsFragment.REMOVE_VIEW_HIDDEN_ALPHA);
- }
mListsFragment.showRemoveView(false);
}
@@ -1141,8 +1158,8 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
@Override
public void onCallNumberDirectly(String phoneNumber, boolean isVideoCall) {
Intent intent = isVideoCall ?
- CallUtil.getVideoCallIntent(phoneNumber, getCallOrigin()) :
- CallUtil.getCallIntent(phoneNumber, getCallOrigin());
+ PrivilegedCallUtil.getVideoCallIntent(phoneNumber, getCallOrigin()) :
+ PrivilegedCallUtil.getCallIntent(phoneNumber, getCallOrigin());
DialerUtils.startActivityWithErrorToast(this, intent);
mClearSearchOnPause = true;
}
diff --git a/src/com/android/dialer/PhoneCallDetailsHelper.java b/src/com/android/dialer/PhoneCallDetailsHelper.java
index b4e817174..7855a1d13 100644
--- a/src/com/android/dialer/PhoneCallDetailsHelper.java
+++ b/src/com/android/dialer/PhoneCallDetailsHelper.java
@@ -28,7 +28,6 @@ import android.text.format.DateUtils;
import android.view.View;
import android.widget.TextView;
-import com.android.contacts.common.CallUtil;
import com.android.contacts.common.testing.NeededForTesting;
import com.android.contacts.common.util.PhoneNumberHelper;
import com.android.dialer.calllog.ContactInfo;
diff --git a/src/com/android/dialer/ProximitySensorManager.java b/src/com/android/dialer/ProximitySensorManager.java
deleted file mode 100644
index 42d740fc1..000000000
--- a/src/com/android/dialer/ProximitySensorManager.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer;
-
-import android.content.Context;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-
-import javax.annotation.concurrent.GuardedBy;
-
-/**
- * Manages the proximity sensor and notifies a listener when enabled.
- */
-public class ProximitySensorManager {
- /**
- * Listener of the state of the proximity sensor.
- * <p>
- * This interface abstracts two possible states for the proximity sensor, near and far.
- * <p>
- * The actual meaning of these states depends on the actual sensor.
- */
- public interface Listener {
- /** Called when the proximity sensor transitions from the far to the near state. */
- public void onNear();
- /** Called when the proximity sensor transitions from the near to the far state. */
- public void onFar();
- }
-
- public static enum State {
- NEAR, FAR
- }
-
- private final ProximitySensorEventListener mProximitySensorListener;
-
- /**
- * The current state of the manager, i.e., whether it is currently tracking the state of the
- * sensor.
- */
- private boolean mManagerEnabled;
-
- /**
- * The listener to the state of the sensor.
- * <p>
- * Contains most of the logic concerning tracking of the sensor.
- * <p>
- * After creating an instance of this object, one should call {@link #register()} and
- * {@link #unregister()} to enable and disable the notifications.
- * <p>
- * Instead of calling unregister, one can call {@link #unregisterWhenFar()} to unregister the
- * listener the next time the sensor reaches the {@link State#FAR} state if currently in the
- * {@link State#NEAR} state.
- */
- private static class ProximitySensorEventListener implements SensorEventListener {
- private static final float FAR_THRESHOLD = 5.0f;
-
- private final SensorManager mSensorManager;
- private final Sensor mProximitySensor;
- private final float mMaxValue;
- private final Listener mListener;
-
- /**
- * The last state of the sensor.
- * <p>
- * Before registering and after unregistering we are always in the {@link State#FAR} state.
- */
- @GuardedBy("this") private State mLastState;
- /**
- * If this flag is set to true, we are waiting to reach the {@link State#FAR} state and
- * should notify the listener and unregister when that happens.
- */
- @GuardedBy("this") private boolean mWaitingForFarState;
-
- public ProximitySensorEventListener(SensorManager sensorManager, Sensor proximitySensor,
- Listener listener) {
- mSensorManager = sensorManager;
- mProximitySensor = proximitySensor;
- mMaxValue = proximitySensor.getMaximumRange();
- mListener = listener;
- // Initialize at far state.
- mLastState = State.FAR;
- mWaitingForFarState = false;
- }
-
- @Override
- public void onSensorChanged(SensorEvent event) {
- // Make sure we have a valid value.
- if (event.values == null) return;
- if (event.values.length == 0) return;
- float value = event.values[0];
- // Convert the sensor into a NEAR/FAR state.
- State state = getStateFromValue(value);
- synchronized (this) {
- // No change in state, do nothing.
- if (state == mLastState) return;
- // Keep track of the current state.
- mLastState = state;
- // If we are waiting to reach the far state and we are now in it, unregister.
- if (mWaitingForFarState && mLastState == State.FAR) {
- unregisterWithoutNotification();
- }
- }
- // Notify the listener of the state change.
- switch (state) {
- case NEAR:
- mListener.onNear();
- break;
-
- case FAR:
- mListener.onFar();
- break;
- }
- }
-
- @Override
- public void onAccuracyChanged(Sensor sensor, int accuracy) {
- // Nothing to do here.
- }
-
- /** Returns the state of the sensor given its current value. */
- private State getStateFromValue(float value) {
- // Determine if the current value corresponds to the NEAR or FAR state.
- // Take case of the case where the proximity sensor is binary: if the current value is
- // equal to the maximum, we are always in the FAR state.
- return (value > FAR_THRESHOLD || value == mMaxValue) ? State.FAR : State.NEAR;
- }
-
- /**
- * Unregister the next time the sensor reaches the {@link State#FAR} state.
- */
- public synchronized void unregisterWhenFar() {
- if (mLastState == State.FAR) {
- // We are already in the far state, just unregister now.
- unregisterWithoutNotification();
- } else {
- mWaitingForFarState = true;
- }
- }
-
- /** Register the listener and call the listener as necessary. */
- public synchronized void register() {
- // It is okay to register multiple times.
- mSensorManager.registerListener(this, mProximitySensor, SensorManager.SENSOR_DELAY_UI);
- // We should no longer be waiting for the far state if we are registering again.
- mWaitingForFarState = false;
- }
-
- public void unregister() {
- State lastState;
- synchronized (this) {
- unregisterWithoutNotification();
- lastState = mLastState;
- // Always go back to the FAR state. That way, when we register again we will get a
- // transition when the sensor gets into the NEAR state.
- mLastState = State.FAR;
- }
- // Notify the listener if we changed the state to FAR while unregistering.
- if (lastState != State.FAR) {
- mListener.onFar();
- }
- }
-
- @GuardedBy("this")
- private void unregisterWithoutNotification() {
- mSensorManager.unregisterListener(this);
- mWaitingForFarState = false;
- }
- }
-
- public ProximitySensorManager(Context context, Listener listener) {
- SensorManager sensorManager =
- (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
- Sensor proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
- if (proximitySensor == null) {
- // If there is no sensor, we should not do anything.
- mProximitySensorListener = null;
- } else {
- mProximitySensorListener =
- new ProximitySensorEventListener(sensorManager, proximitySensor, listener);
- }
- }
-
- /**
- * Enables the proximity manager.
- * <p>
- * The listener will start getting notifications of events.
- * <p>
- * This method is idempotent.
- */
- public void enable() {
- if (mProximitySensorListener != null && !mManagerEnabled) {
- mProximitySensorListener.register();
- mManagerEnabled = true;
- }
- }
-
- /**
- * Disables the proximity manager.
- * <p>
- * The listener will stop receiving notifications of events, possibly after receiving a last
- * {@link Listener#onFar()} callback.
- * <p>
- * If {@code waitForFarState} is true, if the sensor is not currently in the {@link State#FAR}
- * state, the listener will receive a {@link Listener#onFar()} callback the next time the sensor
- * actually reaches the {@link State#FAR} state.
- * <p>
- * If {@code waitForFarState} is false, the listener will receive a {@link Listener#onFar()}
- * callback immediately if the sensor is currently not in the {@link State#FAR} state.
- * <p>
- * This method is idempotent.
- */
- public void disable(boolean waitForFarState) {
- if (mProximitySensorListener != null && mManagerEnabled) {
- if (waitForFarState) {
- mProximitySensorListener.unregisterWhenFar();
- } else {
- mProximitySensorListener.unregister();
- }
- mManagerEnabled = false;
- }
- }
-}
diff --git a/src/com/android/dialer/SpecialCharSequenceMgr.java b/src/com/android/dialer/SpecialCharSequenceMgr.java
index f466c417c..1e686125f 100644
--- a/src/com/android/dialer/SpecialCharSequenceMgr.java
+++ b/src/com/android/dialer/SpecialCharSequenceMgr.java
@@ -18,6 +18,7 @@ package com.android.dialer;
import android.app.Activity;
import android.app.AlertDialog;
+import android.app.DialogFragment;
import android.app.KeyguardManager;
import android.app.ProgressDialog;
import android.content.ActivityNotFoundException;
@@ -33,6 +34,7 @@ import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;
+import android.text.TextUtils;
import android.util.Log;
import android.view.WindowManager;
import android.widget.EditText;
@@ -63,6 +65,8 @@ import java.util.List;
public class SpecialCharSequenceMgr {
private static final String TAG = "SpecialCharSequenceMgr";
+ private static final String TAG_SELECT_ACCT_FRAGMENT = "tag_select_acct_fragment";
+
private static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
private static final String MMI_IMEI_DISPLAY = "*#06#";
private static final String MMI_REGULATORY_INFO_DISPLAY = "*#07#";
@@ -228,9 +232,12 @@ public class SpecialCharSequenceMgr {
public void onDialogDismissed() {}
};
- SelectPhoneAccountDialogFragment.showAccountDialog(
- ((Activity) context).getFragmentManager(), subscriptionAccountHandles,
- listener);
+ // NOTE: If you want to support rotation of this dialog need
+ // to refactor the listener and set it in DialpadFragment.onCreate()
+ DialogFragment dialogFragment = SelectPhoneAccountDialogFragment.newInstance(
+ subscriptionAccountHandles, listener);
+ dialogFragment.show(((Activity) context).getFragmentManager(),
+ TAG_SELECT_ACCT_FRAGMENT);
} else {
return false;
}
@@ -289,9 +296,12 @@ public class SpecialCharSequenceMgr {
public void onDialogDismissed() {}
};
- SelectPhoneAccountDialogFragment.showAccountDialog(
- ((Activity) context).getFragmentManager(), subscriptionAccountHandles,
- listener);
+ // NOTE: If you want to support rotation of this dialog need
+ // to refactor the listener and set it in DialpadFragment.onCreate()
+ DialogFragment dialogFragment = SelectPhoneAccountDialogFragment.newInstance(
+ subscriptionAccountHandles, listener);
+ dialogFragment.show(((Activity) context).getFragmentManager(),
+ TAG_SELECT_ACCT_FRAGMENT);
}
return true;
}
@@ -310,13 +320,16 @@ public class SpecialCharSequenceMgr {
List<String> deviceIds = new ArrayList<String>();
for (int slot = 0; slot < telephonyManager.getPhoneCount(); slot++) {
- deviceIds.add(telephonyManager.getDeviceId(slot));
+ String deviceId = telephonyManager.getDeviceId(slot);
+ if (!TextUtils.isEmpty(deviceId)) {
+ deviceIds.add(deviceId);
+ }
}
AlertDialog alert = new AlertDialog.Builder(context)
.setTitle(labelResId)
.setItems(deviceIds.toArray(new String[deviceIds.size()]), null)
- .setPositiveButton(R.string.ok, null)
+ .setPositiveButton(android.R.string.ok, null)
.setCancelable(false)
.show();
return true;
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index 225d34948..3e8efa0b7 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -16,18 +16,12 @@
package com.android.dialer.calllog;
-import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
-import android.content.Loader;
import android.content.res.Resources;
import android.database.Cursor;
-import android.database.sqlite.SQLiteFullException;
import android.net.Uri;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.CallLog.Calls;
-import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.PhoneLookup;
import android.telecom.PhoneAccountHandle;
import android.telephony.PhoneNumberUtils;
@@ -37,34 +31,22 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View.AccessibilityDelegate;
import android.view.ViewGroup;
-import android.view.ViewStub;
import android.view.ViewTreeObserver;
import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
import android.widget.TextView;
-import android.widget.Toast;
-
-import com.android.common.widget.GroupingListAdapter;
-import com.android.contacts.common.CallUtil;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
-import com.android.contacts.common.util.PhoneNumberHelper;
-import com.android.contacts.common.model.Contact;
-import com.android.contacts.common.model.ContactLoader;
+
import com.android.contacts.common.util.UriUtils;
-import com.android.dialer.DialtactsActivity;
import com.android.dialer.PhoneCallDetails;
import com.android.dialer.PhoneCallDetailsHelper;
import com.android.dialer.R;
+import com.android.dialer.contactinfo.ContactInfoCache;
+import com.android.dialer.contactinfo.ContactInfoCache.OnContactInfoChangedListener;
import com.android.dialer.util.DialerUtils;
-import com.android.dialer.util.ExpirableCache;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Objects;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.LinkedList;
/**
* Adapter class to fill in data for the Call Log.
@@ -73,13 +55,6 @@ public class CallLogAdapter extends GroupingListAdapter
implements ViewTreeObserver.OnPreDrawListener, CallLogGroupBuilder.GroupCreator {
private static final String TAG = CallLogAdapter.class.getSimpleName();
- private static final int VOICEMAIL_TRANSCRIPTION_MAX_LINES = 10;
-
- /** The enumeration of {@link android.os.AsyncTask} objects used in this class. */
- public enum Tasks {
- REMOVE_CALL_LOG_ENTRIES,
- }
-
/** Interface used to inform a parent UI element that a list item has been expanded. */
public interface CallItemExpandedListener {
/**
@@ -108,68 +83,16 @@ public class CallLogAdapter extends GroupingListAdapter
public void onReportButtonClick(String number);
}
- /**
- * Stores a phone number of a call with the country code where it originally occurred.
- * <p>
- * Note the country does not necessarily specifies the country of the phone number itself, but
- * it is the country in which the user was in when the call was placed or received.
- */
- private static final class NumberWithCountryIso {
- public final String number;
- public final String countryIso;
-
- public NumberWithCountryIso(String number, String countryIso) {
- this.number = number;
- this.countryIso = countryIso;
- }
-
- @Override
- public boolean equals(Object o) {
- if (o == null) return false;
- if (!(o instanceof NumberWithCountryIso)) return false;
- NumberWithCountryIso other = (NumberWithCountryIso) o;
- return TextUtils.equals(number, other.number)
- && TextUtils.equals(countryIso, other.countryIso);
- }
-
- @Override
- public int hashCode() {
- return (number == null ? 0 : number.hashCode())
- ^ (countryIso == null ? 0 : countryIso.hashCode());
- }
- }
-
- /** The time in millis to delay starting the thread processing requests. */
- private static final int START_PROCESSING_REQUESTS_DELAY_MILLIS = 1000;
-
- /** The size of the cache of contact info. */
- private static final int CONTACT_INFO_CACHE_SIZE = 100;
-
/** Constant used to indicate no row is expanded. */
private static final long NONE_EXPANDED = -1;
protected final Context mContext;
private final ContactInfoHelper mContactInfoHelper;
private final CallFetcher mCallFetcher;
- private final Toast mReportedToast;
private final OnReportButtonClickListener mOnReportButtonClickListener;
private ViewTreeObserver mViewTreeObserver = null;
- /**
- * A cache of the contact details for the phone numbers in the call log.
- * <p>
- * The content of the cache is expired (but not purged) whenever the application comes to
- * the foreground.
- * <p>
- * The key is number with the country in which the call was placed or received.
- */
- private ExpirableCache<NumberWithCountryIso, ContactInfo> mContactInfoCache;
-
- /**
- * Tracks the call log row which was previously expanded. Used so that the closure of a
- * previously expanded call log entry can be animated on rebind.
- */
- private long mPreviouslyExpanded = NONE_EXPANDED;
+ protected ContactInfoCache mContactInfoCache;
/**
* Tracks the currently expanded call log row.
@@ -190,71 +113,11 @@ public class CallLogAdapter extends GroupingListAdapter
*/
private HashMap<Long,Integer> mDayGroups = new HashMap<Long, Integer>();
- /**
- * A request for contact details for the given number.
- */
- private static final class ContactInfoRequest {
- /** The number to look-up. */
- public final String number;
- /** The country in which a call to or from this number was placed or received. */
- public final String countryIso;
- /** The cached contact information stored in the call log. */
- public final ContactInfo callLogInfo;
-
- public ContactInfoRequest(String number, String countryIso, ContactInfo callLogInfo) {
- this.number = number;
- this.countryIso = countryIso;
- this.callLogInfo = callLogInfo;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) return true;
- if (obj == null) return false;
- if (!(obj instanceof ContactInfoRequest)) return false;
-
- ContactInfoRequest other = (ContactInfoRequest) obj;
-
- if (!TextUtils.equals(number, other.number)) return false;
- if (!TextUtils.equals(countryIso, other.countryIso)) return false;
- if (!Objects.equal(callLogInfo, other.callLogInfo)) return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((callLogInfo == null) ? 0 : callLogInfo.hashCode());
- result = prime * result + ((countryIso == null) ? 0 : countryIso.hashCode());
- result = prime * result + ((number == null) ? 0 : number.hashCode());
- return result;
- }
- }
-
- /**
- * List of requests to update contact details.
- * <p>
- * Each request is made of a phone number to look up, and the contact info currently stored in
- * the call log for this number.
- * <p>
- * The requests are added when displaying the contacts and are processed by a background
- * thread.
- */
- private final LinkedList<ContactInfoRequest> mRequests;
-
private boolean mLoading = true;
- private static final int REDRAW = 1;
- private static final int START_THREAD = 2;
-
- private QueryThread mCallerIdThread;
/** Instance of helper class for managing views. */
private final CallLogListItemHelper mCallLogViewsHelper;
- /** Helper to set up contact photos. */
- private final ContactPhotoManager mContactPhotoManager;
/** Helper to parse and process phone numbers. */
private PhoneNumberDisplayHelper mPhoneNumberHelper;
/** Helper to access Telephony phone number utils class */
@@ -264,20 +127,6 @@ public class CallLogAdapter extends GroupingListAdapter
private CallItemExpandedListener mCallItemExpandedListener;
- /** Can be set to true by tests to disable processing of requests. */
- private volatile boolean mRequestProcessingDisabled = false;
-
- private boolean mIsCallLog = true;
-
- private View mBadgeContainer;
- private ImageView mBadgeImageView;
- private TextView mBadgeText;
-
- private int mCallLogBackgroundColor;
- private int mExpandedBackgroundColor;
- private float mExpandedTranslationZ;
- private int mPhotoSize;
-
/** Listener for the primary or secondary actions in the list.
* Primary opens the call details.
* Secondary calls or plays.
@@ -285,7 +134,14 @@ public class CallLogAdapter extends GroupingListAdapter
private final View.OnClickListener mActionListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
- startActivityForAction(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) {
+ DialerUtils.startActivityWithErrorToast(mContext, intent);
+ }
+ }
}
};
@@ -297,94 +153,63 @@ public class CallLogAdapter extends GroupingListAdapter
@Override
public void onClick(View v) {
final View callLogItem = (View) v.getParent().getParent();
- handleRowExpanded(callLogItem, true /* animate */, false /* forceExpand */);
+ handleRowExpanded(callLogItem, false /* forceExpand */);
}
};
+ protected final OnContactInfoChangedListener mOnContactInfoChangedListener =
+ new OnContactInfoChangedListener() {
+ @Override
+ public void onContactInfoChanged() {
+ notifyDataSetChanged();
+ }
+ };
+
private AccessibilityDelegate mAccessibilityDelegate = new AccessibilityDelegate() {
@Override
public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child,
AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
- handleRowExpanded(host, false /* animate */,
- true /* forceExpand */);
+ handleRowExpanded(host, true /* forceExpand */);
}
return super.onRequestSendAccessibilityEvent(host, child, event);
}
};
- 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) {
- DialerUtils.startActivityWithErrorToast(mContext, intent);
- }
- }
- }
-
@Override
public boolean onPreDraw() {
// We only wanted to listen for the first draw (and this is it).
unregisterPreDrawListener();
- // Only schedule a thread-creation message if the thread hasn't been
- // created yet. This is purely an optimization, to queue fewer messages.
- if (mCallerIdThread == null) {
- mHandler.sendEmptyMessageDelayed(START_THREAD, START_PROCESSING_REQUESTS_DELAY_MILLIS);
- }
-
+ mContactInfoCache.start();
return true;
}
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case REDRAW:
- notifyDataSetChanged();
- break;
- case START_THREAD:
- startRequestProcessing();
- break;
- }
- }
- };
-
- public CallLogAdapter(Context context, CallFetcher callFetcher,
- ContactInfoHelper contactInfoHelper, CallItemExpandedListener callItemExpandedListener,
- OnReportButtonClickListener onReportButtonClickListener, boolean isCallLog) {
+ public CallLogAdapter(
+ Context context,
+ CallFetcher callFetcher,
+ ContactInfoHelper contactInfoHelper,
+ OnReportButtonClickListener onReportButtonClickListener) {
super(context);
mContext = context;
mCallFetcher = callFetcher;
mContactInfoHelper = contactInfoHelper;
- mIsCallLog = isCallLog;
- mCallItemExpandedListener = callItemExpandedListener;
mOnReportButtonClickListener = onReportButtonClickListener;
- mReportedToast = Toast.makeText(mContext, R.string.toast_caller_id_reported,
- Toast.LENGTH_SHORT);
- mContactInfoCache = ExpirableCache.create(CONTACT_INFO_CACHE_SIZE);
- mRequests = new LinkedList<ContactInfoRequest>();
+ mContactInfoCache = new ContactInfoCache(
+ mContactInfoHelper, mOnContactInfoChangedListener);
Resources resources = mContext.getResources();
CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
- mCallLogBackgroundColor = resources.getColor(R.color.background_dialer_list_items);
- mExpandedBackgroundColor = resources.getColor(R.color.call_log_expanded_background_color);
- mExpandedTranslationZ = resources.getDimension(R.dimen.call_log_expanded_translation_z);
- mPhotoSize = resources.getDimensionPixelSize(R.dimen.contact_photo_size);
- mContactPhotoManager = ContactPhotoManager.getInstance(mContext);
mPhoneNumberHelper = new PhoneNumberDisplayHelper(mContext, resources);
mPhoneNumberUtilsWrapper = new PhoneNumberUtilsWrapper(mContext);
PhoneCallDetailsHelper phoneCallDetailsHelper =
new PhoneCallDetailsHelper(mContext, resources, mPhoneNumberUtilsWrapper);
mCallLogViewsHelper =
- new CallLogListItemHelper(
- phoneCallDetailsHelper, mPhoneNumberHelper, resources);
+ new CallLogListItemHelper(phoneCallDetailsHelper, mPhoneNumberHelper, resources);
mCallLogGroupBuilder = new CallLogGroupBuilder(this);
}
@@ -411,37 +236,6 @@ public class CallLogAdapter extends GroupingListAdapter
}
/**
- * Starts a background thread to process contact-lookup requests, unless one
- * has already been started.
- */
- private synchronized void startRequestProcessing() {
- // For unit-testing.
- if (mRequestProcessingDisabled) return;
-
- // Idempotence... if a thread is already started, don't start another.
- if (mCallerIdThread != null) return;
-
- mCallerIdThread = new QueryThread();
- mCallerIdThread.setPriority(Thread.MIN_PRIORITY);
- mCallerIdThread.start();
- }
-
- /**
- * Stops the background thread that processes updates and cancels any
- * pending requests to start it.
- */
- public synchronized void stopRequestProcessing() {
- // Remove any pending requests to start the processing thread.
- mHandler.removeMessages(START_THREAD);
- if (mCallerIdThread != null) {
- // Stop the thread; we are finished with it.
- mCallerIdThread.stopProcessing();
- mCallerIdThread.interrupt();
- mCallerIdThread = null;
- }
- }
-
- /**
* Stop receiving onPreDraw() notifications.
*/
private void unregisterPreDrawListener() {
@@ -452,133 +246,14 @@ public class CallLogAdapter extends GroupingListAdapter
}
public void invalidateCache() {
- mContactInfoCache.expireAll();
+ mContactInfoCache.invalidate();
// Restart the request-processing thread after the next draw.
- stopRequestProcessing();
unregisterPreDrawListener();
}
- /**
- * Enqueues a request to look up the contact details for the given phone number.
- * <p>
- * It also provides the current contact info stored in the call log for this number.
- * <p>
- * If the {@code immediate} parameter is true, it will start immediately the thread that looks
- * 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}.
- */
- protected void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
- boolean immediate) {
- ContactInfoRequest request = new ContactInfoRequest(number, countryIso, callLogInfo);
- synchronized (mRequests) {
- if (!mRequests.contains(request)) {
- mRequests.add(request);
- mRequests.notifyAll();
- }
- }
- if (immediate) startRequestProcessing();
- }
-
- /**
- * Queries the appropriate content provider for the contact associated with the number.
- * <p>
- * Upon completion it also updates the cache in the call log, if it is different from
- * {@code callLogInfo}.
- * <p>
- * The number might be either a SIP address or a phone number.
- * <p>
- * It returns true if it updated the content of the cache and we should therefore tell the
- * view to update its content.
- */
- private boolean queryContactInfo(String number, String countryIso, ContactInfo callLogInfo) {
- final ContactInfo info = mContactInfoHelper.lookupNumber(number, countryIso);
-
- if (info == null) {
- // The lookup failed, just return without requesting to update the view.
- return false;
- }
-
- // Check the existing entry in the cache: only if it has changed we should update the
- // view.
- NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
- ContactInfo existingInfo = mContactInfoCache.getPossiblyExpired(numberCountryIso);
-
- final boolean isRemoteSource = info.sourceType != 0;
-
- // Don't force redraw if existing info in the cache is equal to {@link ContactInfo#EMPTY}
- // to avoid updating the data set for every new row that is scrolled into view.
- // see (https://googleplex-android-review.git.corp.google.com/#/c/166680/)
-
- // Exception: Photo uris for contacts from remote sources are not cached in the call log
- // cache, so we have to force a redraw for these contacts regardless.
- boolean updated = (existingInfo != ContactInfo.EMPTY || isRemoteSource) &&
- !info.equals(existingInfo);
-
- // Store the data in the cache so that the UI thread can use to display it. Store it
- // even if it has not changed so that it is marked as not expired.
- mContactInfoCache.put(numberCountryIso, info);
- // Update the call log even if the cache it is up-to-date: it is possible that the cache
- // contains the value from a different call log entry.
- updateCallLogContactInfoCache(number, countryIso, info, callLogInfo);
- return updated;
- }
-
- /*
- * Handles requests for contact name and number type.
- */
- private class QueryThread extends Thread {
- private volatile boolean mDone = false;
-
- public QueryThread() {
- super("CallLogAdapter.QueryThread");
- }
-
- public void stopProcessing() {
- mDone = true;
- }
-
- @Override
- public void run() {
- boolean needRedraw = false;
- while (true) {
- // Check if thread is finished, and if so return immediately.
- if (mDone) return;
-
- // Obtain next request, if any is available.
- // Keep synchronized section small.
- ContactInfoRequest req = null;
- synchronized (mRequests) {
- if (!mRequests.isEmpty()) {
- req = mRequests.removeFirst();
- }
- }
-
- if (req != null) {
- // Process the request. If the lookup succeeds, schedule a
- // redraw.
- needRedraw |= queryContactInfo(req.number, req.countryIso, req.callLogInfo);
- } else {
- // Throttle redraw rate by only sending them when there are
- // more requests.
- if (needRedraw) {
- needRedraw = false;
- mHandler.sendEmptyMessage(REDRAW);
- }
-
- // Wait until another request is available, or until this
- // thread is no longer needed (as indicated by being
- // interrupted).
- try {
- synchronized (mRequests) {
- mRequests.wait(1000);
- }
- } catch (InterruptedException ie) {
- // Ignore, and attempt to continue processing requests.
- }
- }
- }
- }
+ public void pauseCache() {
+ mContactInfoCache.stop();
}
@Override
@@ -602,7 +277,7 @@ public class CallLogAdapter extends GroupingListAdapter
View view = inflater.inflate(R.layout.call_log_list_item, parent, false);
// Get the views to bind to and cache them.
- CallLogListItemViews views = CallLogListItemViews.fromView(view);
+ CallLogListItemViews views = CallLogListItemViews.fromView(context, view);
view.setTag(views);
// Set text height to false on the TextViews so they don't have extra padding.
@@ -640,7 +315,7 @@ public class CallLogAdapter extends GroupingListAdapter
* @param c the cursor pointing to the entry in the call log
* @param count the number of entries in the current item, greater than 1 if it is a group
*/
- private void bindView(View callLogItemView, Cursor c, int count) {
+ public void bindView(View callLogItemView, Cursor c, int count) {
callLogItemView.setAccessibilityDelegate(mAccessibilityDelegate);
final CallLogListItemViews views = (CallLogListItemViews) callLogItemView.getTag();
@@ -660,17 +335,12 @@ public class CallLogAdapter extends GroupingListAdapter
final long rowId = c.getLong(CallLogQuery.ID);
views.rowId = rowId;
- // For entries in the call log, check if the day group has changed and display a header
- // if necessary.
- if (mIsCallLog) {
- int currentGroup = getDayGroupForCall(rowId);
- int previousGroup = getPreviousDayGroup(c);
- if (currentGroup != previousGroup) {
- views.dayGroupHeader.setVisibility(View.VISIBLE);
- views.dayGroupHeader.setText(getGroupDescription(currentGroup));
- } else {
- views.dayGroupHeader.setVisibility(View.GONE);
- }
+ // Check if the day group has changed and display a header if necessary.
+ int currentGroup = getDayGroupForCall(rowId);
+ int previousGroup = getPreviousDayGroup(c);
+ if (currentGroup != previousGroup) {
+ views.dayGroupHeader.setVisibility(View.VISIBLE);
+ views.dayGroupHeader.setText(getGroupDescription(currentGroup));
} else {
views.dayGroupHeader.setVisibility(View.GONE);
}
@@ -685,74 +355,22 @@ public class CallLogAdapter extends GroupingListAdapter
// Stash away the Ids of the calls so that we can support deleting a row in the call log.
views.callIds = getCallIds(c, count);
- final ContactInfo cachedContactInfo = getContactInfoFromCallLog(c);
+ final ContactInfo cachedContactInfo = mContactInfoHelper.getContactInfo(c);
final boolean isVoicemailNumber =
mPhoneNumberUtilsWrapper.isVoicemailNumber(accountHandle, number);
- // Where binding and not in the call log, use default behaviour of invoking a call when
- // tapping the primary view.
- if (!mIsCallLog) {
- views.primaryActionView.setOnClickListener(this.mActionListener);
-
- // Set return call intent, otherwise null.
- if (PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation)) {
- // Sets the primary action to call the number.
- if (isVoicemailNumber) {
- views.primaryActionView.setTag(
- IntentProvider.getReturnVoicemailCallIntentProvider());
- } else {
- views.primaryActionView.setTag(
- IntentProvider.getReturnCallIntentProvider(number));
- }
- } else {
- // Number is not callable, so hide button.
- views.primaryActionView.setTag(null);
- }
- } else {
- // In the call log, expand/collapse an actions section for the call log entry when
- // the primary view is tapped.
- views.primaryActionView.setOnClickListener(this.mExpandCollapseListener);
-
- // Note: Binding of the action buttons is done as required in configureActionViews
- // when the user expands the actions ViewStub.
- }
+ // Expand/collapse an actions section for the call log entry when the primary view is tapped.
+ views.primaryActionView.setOnClickListener(mExpandCollapseListener);
- // Lookup contacts with this number
- NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
- ExpirableCache.CachedValue<ContactInfo> cachedInfo =
- mContactInfoCache.getCachedValue(numberCountryIso);
- ContactInfo info = cachedInfo == null ? null : cachedInfo.getValue();
- if (!PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation)
- || isVoicemailNumber) {
- // If this is a number that cannot be dialed, there is no point in looking up a contact
- // for it.
- info = ContactInfo.EMPTY;
- } else if (cachedInfo == null) {
- mContactInfoCache.put(numberCountryIso, ContactInfo.EMPTY);
- // Use the cached contact info from the call log.
- info = cachedContactInfo;
- // The db request should happen on a non-UI thread.
- // Request the contact details immediately since they are currently missing.
- enqueueRequest(number, countryIso, cachedContactInfo, true);
- // We will format the phone number when we make the background request.
- } else {
- if (cachedInfo.isExpired()) {
- // The contact info is no longer up to date, we should request it. However, we
- // do not need to request them immediately.
- enqueueRequest(number, countryIso, cachedContactInfo, false);
- } else if (!callLogInfoMatches(cachedContactInfo, info)) {
- // The call log information does not match the one we have, look it up again.
- // We could simply update the call log directly, but that needs to be done in a
- // background thread, so it is easier to simply request a new lookup, which will, as
- // a side-effect, update the call log.
- enqueueRequest(number, countryIso, cachedContactInfo, false);
- }
+ // Note: Binding of the action buttons is done as required in configureActionViews when the
+ // user expands the actions ViewStub.
- if (info == ContactInfo.EMPTY) {
- // Use the cached contact info from the call log.
- info = cachedContactInfo;
- }
+ ContactInfo info = ContactInfo.EMPTY;
+ if (PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation)
+ && !isVoicemailNumber) {
+ // Lookup contacts with this number
+ info = mContactInfoCache.getValue(number, countryIso, cachedContactInfo);
}
final Uri lookupUri = info.lookupUri;
@@ -762,7 +380,7 @@ public class CallLogAdapter extends GroupingListAdapter
final long photoId = info.photoId;
final Uri photoUri = info.photoUri;
CharSequence formattedNumber = info.formattedNumber == null
- ? null : PhoneNumberUtils.ttsSpanAsPhoneNumber(info.formattedNumber);
+ ? null : PhoneNumberUtils.getPhoneTtsSpannable(info.formattedNumber);
final int[] callTypes = getCallTypes(c, count);
final String geocode = c.getString(CallLogQuery.GEOCODED_LOCATION);
final int sourceType = info.sourceType;
@@ -784,7 +402,12 @@ public class CallLogAdapter extends GroupingListAdapter
// Restore expansion state of the row on rebind. Inflate the actions ViewStub if required,
// and set its visibility state accordingly.
- expandOrCollapseActions(callLogItemView, isExpanded(rowId));
+ views.expandOrCollapseActions(
+ isExpanded(rowId),
+ mOnReportButtonClickListener,
+ mActionListener,
+ mPhoneNumberUtilsWrapper,
+ mCallLogViewsHelper);
if (TextUtils.isEmpty(name)) {
details = new PhoneCallDetails(number, numberPresentation, formattedNumber, countryIso,
@@ -798,17 +421,6 @@ public class CallLogAdapter extends GroupingListAdapter
mCallLogViewsHelper.setPhoneCallDetails(mContext, views, details);
- int contactType = ContactPhotoManager.TYPE_DEFAULT;
-
- if (isVoicemailNumber) {
- contactType = ContactPhotoManager.TYPE_VOICEMAIL;
- } else if (mContactInfoHelper.isBusiness(info.sourceType)) {
- contactType = ContactPhotoManager.TYPE_BUSINESS;
- }
-
- String lookupKey = lookupUri == null ? null
- : ContactInfoHelper.getLookupKeyFromUri(lookupUri);
-
String nameForDefaultImage = null;
if (TextUtils.isEmpty(name)) {
nameForDefaultImage = mPhoneNumberHelper.getDisplayNumber(details.accountHandle,
@@ -817,19 +429,15 @@ public class CallLogAdapter extends GroupingListAdapter
nameForDefaultImage = name;
}
- if (photoId == 0 && photoUri != null) {
- setPhoto(views, photoUri, lookupUri, nameForDefaultImage, lookupKey, contactType);
- } else {
- setPhoto(views, photoId, lookupUri, nameForDefaultImage, lookupKey, contactType);
- }
+ views.setPhoto(photoId, photoUri, lookupUri, nameForDefaultImage, isVoicemailNumber,
+ mContactInfoHelper.isBusiness(info.sourceType));
+ views.quickContactView.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
// Listen for the first draw
if (mViewTreeObserver == null) {
mViewTreeObserver = callLogItemView.getViewTreeObserver();
mViewTreeObserver.addOnPreDrawListener(this);
}
-
- bindBadge(callLogItemView, info, details, callType);
}
/**
@@ -864,6 +472,7 @@ public class CallLogAdapter extends GroupingListAdapter
}
return CallLogGroupBuilder.DAY_GROUP_NONE;
}
+
/**
* Determines if a call log row with the given Id is expanded.
* @param rowId The row Id of the call.
@@ -884,342 +493,16 @@ public class CallLogAdapter extends GroupingListAdapter
private boolean toggleExpansion(long rowId) {
if (rowId == mCurrentlyExpanded) {
// Collapsing currently expanded row.
- mPreviouslyExpanded = NONE_EXPANDED;
mCurrentlyExpanded = NONE_EXPANDED;
-
return false;
} else {
// Expanding a row (collapsing current expanded one).
-
- mPreviouslyExpanded = mCurrentlyExpanded;
mCurrentlyExpanded = rowId;
return true;
}
}
/**
- * Expands or collapses the view containing the CALLBACK/REDIAL, VOICEMAIL and DETAILS action
- * buttons.
- *
- * @param callLogItem The call log entry parent view.
- * @param isExpanded The new expansion state of the view.
- */
- private void expandOrCollapseActions(View callLogItem, boolean isExpanded) {
- final CallLogListItemViews views = (CallLogListItemViews)callLogItem.getTag();
-
- expandVoicemailTranscriptionView(views, isExpanded);
- if (isExpanded) {
- // Inflate the view stub if necessary, and wire up the event handlers.
- inflateActionViewStub(callLogItem);
-
- views.actionsView.setVisibility(View.VISIBLE);
- views.actionsView.setAlpha(1.0f);
- views.callLogEntryView.setBackgroundColor(mExpandedBackgroundColor);
- views.callLogEntryView.setTranslationZ(mExpandedTranslationZ);
- callLogItem.setTranslationZ(mExpandedTranslationZ); // WAR
- } else {
- // When recycling a view, it is possible the actionsView ViewStub was previously
- // inflated so we should hide it in this case.
- if (views.actionsView != null) {
- views.actionsView.setVisibility(View.GONE);
- }
-
- views.callLogEntryView.setBackgroundColor(mCallLogBackgroundColor);
- views.callLogEntryView.setTranslationZ(0);
- callLogItem.setTranslationZ(0); // WAR
- }
- }
-
- public static void expandVoicemailTranscriptionView(CallLogListItemViews views,
- boolean isExpanded) {
- if (views.callType != Calls.VOICEMAIL_TYPE) {
- return;
- }
-
- final TextView view = views.phoneCallDetailsViews.voicemailTranscriptionView;
- if (TextUtils.isEmpty(view.getText())) {
- return;
- }
- view.setMaxLines(isExpanded ? VOICEMAIL_TRANSCRIPTION_MAX_LINES : 1);
- view.setSingleLine(!isExpanded);
- }
-
- /**
- * Configures the action buttons in the expandable actions ViewStub. The ViewStub is not
- * inflated during initial binding, so click handlers, tags and accessibility text must be set
- * here, if necessary.
- *
- * @param callLogItem The call log list item view.
- */
- private void inflateActionViewStub(final View callLogItem) {
- final CallLogListItemViews views = (CallLogListItemViews)callLogItem.getTag();
-
- ViewStub stub = (ViewStub)callLogItem.findViewById(R.id.call_log_entry_actions_stub);
- if (stub != null) {
- views.actionsView = (ViewGroup) stub.inflate();
- }
-
- if (views.callBackButtonView == null) {
- views.callBackButtonView = (TextView)views.actionsView.findViewById(
- R.id.call_back_action);
- }
-
- if (views.videoCallButtonView == null) {
- views.videoCallButtonView = (TextView)views.actionsView.findViewById(
- R.id.video_call_action);
- }
-
- if (views.voicemailButtonView == null) {
- views.voicemailButtonView = (TextView)views.actionsView.findViewById(
- R.id.voicemail_action);
- }
-
- if (views.detailsButtonView == null) {
- views.detailsButtonView = (TextView)views.actionsView.findViewById(R.id.details_action);
- }
-
- if (views.reportButtonView == null) {
- views.reportButtonView = (TextView)views.actionsView.findViewById(R.id.report_action);
- views.reportButtonView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnReportButtonClickListener != null) {
- mOnReportButtonClickListener.onReportButtonClick(views.number);
- }
- }
- });
- }
-
- bindActionButtons(views);
- }
-
- /***
- * Binds text titles, click handlers and intents to the voicemail, details and callback action
- * buttons.
- *
- * @param views The call log item views.
- */
- private void bindActionButtons(CallLogListItemViews views) {
- boolean canPlaceCallToNumber =
- PhoneNumberUtilsWrapper.canPlaceCallsTo(views.number, views.numberPresentation);
- // Set return call intent, otherwise null.
- if (canPlaceCallToNumber) {
- boolean isVoicemailNumber =
- mPhoneNumberUtilsWrapper.isVoicemailNumber(views.accountHandle, views.number);
- if (isVoicemailNumber) {
- // Make a general call to voicemail to ensure that if there are multiple accounts
- // it does not call the voicemail number of a specific phone account.
- views.callBackButtonView.setTag(
- IntentProvider.getReturnVoicemailCallIntentProvider());
- } else {
- // Sets the primary action to call the number.
- views.callBackButtonView.setTag(
- IntentProvider.getReturnCallIntentProvider(views.number));
- }
- views.callBackButtonView.setVisibility(View.VISIBLE);
- views.callBackButtonView.setOnClickListener(mActionListener);
-
- final int titleId;
- if (views.callType == Calls.VOICEMAIL_TYPE || views.callType == Calls.OUTGOING_TYPE) {
- titleId = R.string.call_log_action_redial;
- } else {
- titleId = R.string.call_log_action_call_back;
- }
- views.callBackButtonView.setText(mContext.getString(titleId));
- } else {
- // Number is not callable, so hide button.
- views.callBackButtonView.setTag(null);
- views.callBackButtonView.setVisibility(View.GONE);
- }
-
- // If one of the calls had video capabilities, show the video call button.
- if (CallUtil.isVideoEnabled(mContext) && canPlaceCallToNumber &&
- views.phoneCallDetailsViews.callTypeIcons.isVideoShown()) {
- views.videoCallButtonView.setTag(
- IntentProvider.getReturnVideoCallIntentProvider(views.number));
- views.videoCallButtonView.setVisibility(View.VISIBLE);
- views.videoCallButtonView.setOnClickListener(mActionListener);
- } else {
- views.videoCallButtonView.setTag(null);
- views.videoCallButtonView.setVisibility(View.GONE);
- }
-
- // For voicemail calls, show the "VOICEMAIL" action button; hide otherwise.
- if (views.callType == Calls.VOICEMAIL_TYPE) {
- views.voicemailButtonView.setOnClickListener(mActionListener);
- views.voicemailButtonView.setTag(
- IntentProvider.getPlayVoicemailIntentProvider(
- views.rowId, views.voicemailUri));
- views.voicemailButtonView.setVisibility(View.VISIBLE);
-
- views.detailsButtonView.setVisibility(View.GONE);
- } else {
- views.voicemailButtonView.setTag(null);
- views.voicemailButtonView.setVisibility(View.GONE);
-
- views.detailsButtonView.setOnClickListener(mActionListener);
- views.detailsButtonView.setTag(
- IntentProvider.getCallDetailIntentProvider(
- views.rowId, views.callIds, null)
- );
-
- if (views.canBeReportedAsInvalid && !views.reported) {
- views.reportButtonView.setVisibility(View.VISIBLE);
- } else {
- views.reportButtonView.setVisibility(View.GONE);
- }
- }
-
- mCallLogViewsHelper.setActionContentDescriptions(views);
- }
-
- protected void bindBadge(
- View view, final ContactInfo info, final PhoneCallDetails details, int callType) {
- // Do not show badge in call log.
- if (!mIsCallLog) {
- final ViewStub stub = (ViewStub) view.findViewById(R.id.link_stub);
- if (UriUtils.isEncodedContactUri(info.lookupUri)) {
- if (stub != null) {
- mBadgeContainer = stub.inflate();
- } else {
- mBadgeContainer = view.findViewById(R.id.badge_container);
- }
-
- mBadgeContainer.setVisibility(View.VISIBLE);
- mBadgeImageView = (ImageView) mBadgeContainer.findViewById(R.id.badge_image);
- mBadgeText = (TextView) mBadgeContainer.findViewById(R.id.badge_text);
-
- final View clickableArea = mBadgeContainer.findViewById(R.id.badge_link_container);
- if (clickableArea != null) {
- clickableArea.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // If no lookup uri is provided, we need to rely on what information
- // we have available; namely the phone number and name.
- if (info.lookupUri == null) {
- final Intent intent =
- DialtactsActivity.getAddToContactIntent(details.name,
- details.number,
- details.numberType);
- DialerUtils.startActivityWithErrorToast(mContext, intent,
- R.string.add_contact_not_available);
- } else {
- addContactFromLookupUri(info.lookupUri);
- }
- }
- });
- }
- mBadgeImageView.setImageResource(R.drawable.ic_person_add_24dp);
- mBadgeText.setText(R.string.recentCalls_addToContact);
- } else {
- // Hide badge if it was previously shown.
- mBadgeContainer = view.findViewById(R.id.badge_container);
- if (mBadgeContainer != null) {
- mBadgeContainer.setVisibility(View.GONE);
- }
- }
- }
- }
-
- /** Checks whether the contact info from the call log matches the one from the contacts db. */
- private boolean callLogInfoMatches(ContactInfo callLogInfo, ContactInfo info) {
- // The call log only contains a subset of the fields in the contacts db.
- // Only check those.
- return TextUtils.equals(callLogInfo.name, info.name)
- && callLogInfo.type == info.type
- && TextUtils.equals(callLogInfo.label, info.label);
- }
-
- /** Stores the updated contact info in the call log if it is different from the current one. */
- private void updateCallLogContactInfoCache(String number, String countryIso,
- ContactInfo updatedInfo, ContactInfo callLogInfo) {
- final ContentValues values = new ContentValues();
- boolean needsUpdate = false;
-
- if (callLogInfo != null) {
- if (!TextUtils.equals(updatedInfo.name, callLogInfo.name)) {
- values.put(Calls.CACHED_NAME, updatedInfo.name);
- needsUpdate = true;
- }
-
- if (updatedInfo.type != callLogInfo.type) {
- values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
- needsUpdate = true;
- }
-
- if (!TextUtils.equals(updatedInfo.label, callLogInfo.label)) {
- values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
- needsUpdate = true;
- }
- if (!UriUtils.areEqual(updatedInfo.lookupUri, callLogInfo.lookupUri)) {
- values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
- needsUpdate = true;
- }
- // Only replace the normalized number if the new updated normalized number isn't empty.
- if (!TextUtils.isEmpty(updatedInfo.normalizedNumber) &&
- !TextUtils.equals(updatedInfo.normalizedNumber, callLogInfo.normalizedNumber)) {
- values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
- needsUpdate = true;
- }
- if (!TextUtils.equals(updatedInfo.number, callLogInfo.number)) {
- values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
- needsUpdate = true;
- }
- if (updatedInfo.photoId != callLogInfo.photoId) {
- values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
- needsUpdate = true;
- }
- if (!TextUtils.equals(updatedInfo.formattedNumber, callLogInfo.formattedNumber)) {
- values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
- needsUpdate = true;
- }
- } else {
- // No previous values, store all of them.
- values.put(Calls.CACHED_NAME, updatedInfo.name);
- values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
- values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
- values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
- values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
- values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
- values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
- values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
- needsUpdate = true;
- }
-
- if (!needsUpdate) return;
-
- try {
- if (countryIso == null) {
- mContext.getContentResolver().update(Calls.CONTENT_URI_WITH_VOICEMAIL, values,
- Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " IS NULL",
- new String[]{ number });
- } else {
- mContext.getContentResolver().update(Calls.CONTENT_URI_WITH_VOICEMAIL, values,
- Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " = ?",
- new String[]{ number, countryIso });
- }
- } catch (SQLiteFullException e) {
- Log.e(TAG, "Unable to update contact info in call log db", e);
- }
- }
-
- /** Returns the contact information as stored in the call log. */
- private ContactInfo getContactInfoFromCallLog(Cursor c) {
- ContactInfo info = new ContactInfo();
- info.lookupUri = UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_LOOKUP_URI));
- info.name = c.getString(CallLogQuery.CACHED_NAME);
- info.type = c.getInt(CallLogQuery.CACHED_NUMBER_TYPE);
- info.label = c.getString(CallLogQuery.CACHED_NUMBER_LABEL);
- String matchedNumber = c.getString(CallLogQuery.CACHED_MATCHED_NUMBER);
- info.number = matchedNumber == null ? c.getString(CallLogQuery.NUMBER) : matchedNumber;
- info.normalizedNumber = c.getString(CallLogQuery.CACHED_NORMALIZED_NUMBER);
- info.photoId = c.getLong(CallLogQuery.CACHED_PHOTO_ID);
- info.photoUri = null; // We do not cache the photo URI.
- info.formattedNumber = c.getString(CallLogQuery.CACHED_FORMATTED_NUMBER);
- return info;
- }
-
- /**
* Returns the call types for the given number of items in the cursor.
* <p>
* It uses the next {@code count} rows in the cursor to extract the types.
@@ -1256,55 +539,22 @@ public class CallLogAdapter extends GroupingListAdapter
return features;
}
- private void setPhoto(CallLogListItemViews views, long photoId, Uri contactUri,
- String displayName, String identifier, int contactType) {
- views.quickContactView.assignContactUri(contactUri);
- views.quickContactView.setOverlay(null);
- DefaultImageRequest request = new DefaultImageRequest(displayName, identifier,
- contactType, true /* isCircular */);
- mContactPhotoManager.loadThumbnail(views.quickContactView, photoId, false /* darkTheme */,
- true /* isCircular */, request);
- }
-
- private void setPhoto(CallLogListItemViews views, Uri photoUri, Uri contactUri,
- String displayName, String identifier, int contactType) {
- views.quickContactView.assignContactUri(contactUri);
- views.quickContactView.setOverlay(null);
- DefaultImageRequest request = new DefaultImageRequest(displayName, identifier,
- contactType, true /* isCircular */);
- mContactPhotoManager.loadPhoto(views.quickContactView, photoUri, mPhotoSize,
- false /* darkTheme */, true /* isCircular */, request);
- }
-
- /**
- * Bind a call log entry view for testing purposes. Also inflates the action view stub so
- * unit tests can access the buttons contained within.
- *
- * @param view The current call log row.
- * @param context The current context.
- * @param cursor The cursor to bind from.
- */
- @VisibleForTesting
- void bindViewForTest(View view, Context context, Cursor cursor) {
- bindStandAloneView(view, context, cursor);
- inflateActionViewStub(view);
- }
-
/**
* Sets whether processing of requests for contact details should be enabled.
- * <p>
+ *
* This method should be called in tests to disable such processing of requests when not
* needed.
*/
@VisibleForTesting
void disableRequestProcessingForTest() {
- mRequestProcessingDisabled = true;
+ // TODO: Remove this and test the cache directly.
+ mContactInfoCache.disableRequestProcessingForTest();
}
@VisibleForTesting
void injectContactInfoForTest(String number, String countryIso, ContactInfo contactInfo) {
- NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
- mContactInfoCache.put(numberCountryIso, contactInfo);
+ // TODO: Remove this and test the cache directly.
+ mContactInfoCache.injectContactInfoForTest(number, countryIso, contactInfo);
}
@Override
@@ -1333,48 +583,6 @@ public class CallLogAdapter extends GroupingListAdapter
mDayGroups.clear();
}
- /*
- * Get the number from the Contacts, if available, since sometimes
- * the number provided by caller id may not be formatted properly
- * depending on the carrier (roaming) in use at the time of the
- * incoming call.
- * Logic : If the caller-id number starts with a "+", use it
- * Else if the number in the contacts starts with a "+", use that one
- * Else if the number in the contacts is longer, use that one
- */
- public String getBetterNumberFromContacts(String number, String countryIso) {
- String matchingNumber = null;
- // Look in the cache first. If it's not found then query the Phones db
- NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
- ContactInfo ci = mContactInfoCache.getPossiblyExpired(numberCountryIso);
- if (ci != null && ci != ContactInfo.EMPTY) {
- matchingNumber = ci.number;
- } else {
- try {
- Cursor phonesCursor = mContext.getContentResolver().query(
- Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, number),
- PhoneQuery._PROJECTION, null, null, null);
- if (phonesCursor != null) {
- try {
- if (phonesCursor.moveToFirst()) {
- matchingNumber = phonesCursor.getString(PhoneQuery.MATCHED_NUMBER);
- }
- } finally {
- phonesCursor.close();
- }
- }
- } catch (Exception e) {
- // Use the number from the call log
- }
- }
- if (!TextUtils.isEmpty(matchingNumber) &&
- (matchingNumber.startsWith("+")
- || matchingNumber.length() > number.length())) {
- number = matchingNumber;
- }
- return number;
- }
-
/**
* Retrieves the call Ids represented by the current call log row.
*
@@ -1411,20 +619,14 @@ public class CallLogAdapter extends GroupingListAdapter
}
}
- public void onBadDataReported(String number) {
- mContactInfoCache.expireAll();
- mReportedToast.show();
- }
-
/**
* Manages the state changes for the UI interaction where a call log row is expanded.
*
* @param view The view that was tapped
- * @param animate Whether or not to animate the expansion/collapse
* @param forceExpand Whether or not to force the call log row into an expanded state regardless
* of its previous state
*/
- private void handleRowExpanded(View view, boolean animate, boolean forceExpand) {
+ private void handleRowExpanded(View view, boolean forceExpand) {
final CallLogListItemViews views = (CallLogListItemViews) view.getTag();
if (forceExpand && isExpanded(views.rowId)) {
@@ -1433,78 +635,20 @@ public class CallLogAdapter extends GroupingListAdapter
// Hide or show the actions view.
boolean expanded = toggleExpansion(views.rowId);
-
- // Trigger loading of the viewstub and visual expand or collapse.
- expandOrCollapseActions(view, expanded);
-
- // Animate the expansion or collapse.
- if (mCallItemExpandedListener != null) {
- if (animate) {
- mCallItemExpandedListener.onItemExpanded(view);
- }
-
- // Animate the collapse of the previous item if it is still visible on screen.
- if (mPreviouslyExpanded != NONE_EXPANDED) {
- View previousItem = mCallItemExpandedListener.getViewForCallId(
- mPreviouslyExpanded);
-
- if (previousItem != null) {
- expandOrCollapseActions(previousItem, false);
- if (animate) {
- mCallItemExpandedListener.onItemExpanded(previousItem);
- }
- }
- mPreviouslyExpanded = NONE_EXPANDED;
- }
- }
+ expandItem(views, expanded);
}
/**
- * Invokes the "add contact" activity given the expanded contact information stored in a
- * lookup URI. This can include, for example, address and website information.
- *
- * @param lookupUri The lookup URI.
+ * @param views The view holder for the item to expand or collapse.
+ * @param expand {@code true} to expand the item, {@code false} otherwise.
*/
- private void addContactFromLookupUri(Uri lookupUri) {
- Contact contactToSave = ContactLoader.parseEncodedContactEntity(lookupUri);
- if (contactToSave == null) {
- return;
- }
-
- // Note: This code mirrors code in Contacts/QuickContactsActivity.
- final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
- intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
-
- ArrayList<ContentValues> values = contactToSave.getContentValues();
- // Only pre-fill the name field if the provided display name is an nickname
- // or better (e.g. structured name, nickname)
- if (contactToSave.getDisplayNameSource()
- >= ContactsContract.DisplayNameSources.NICKNAME) {
- intent.putExtra(ContactsContract.Intents.Insert.NAME,
- contactToSave.getDisplayName());
- } else if (contactToSave.getDisplayNameSource()
- == ContactsContract.DisplayNameSources.ORGANIZATION) {
- // This is probably an organization. Instead of copying the organization
- // name into a name entry, copy it into the organization entry. This
- // way we will still consider the contact an organization.
- final ContentValues organization = new ContentValues();
- organization.put(ContactsContract.CommonDataKinds.Organization.COMPANY,
- contactToSave.getDisplayName());
- organization.put(ContactsContract.Data.MIMETYPE,
- ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
- values.add(organization);
- }
-
- // Last time used and times used are aggregated values from the usage stat
- // table. They need to be removed from data values so the SQL table can insert
- // properly
- for (ContentValues value : values) {
- value.remove(ContactsContract.Data.LAST_TIME_USED);
- value.remove(ContactsContract.Data.TIMES_USED);
- }
- intent.putExtra(ContactsContract.Intents.Insert.DATA, values);
-
- DialerUtils.startActivityWithErrorToast(mContext, intent,
- R.string.add_contact_not_available);
+ public void expandItem(CallLogListItemViews views, boolean expand) {
+ // Trigger loading of the viewstub and visual expand or collapse.
+ views.expandOrCollapseActions(
+ expand,
+ mOnReportButtonClickListener,
+ mActionListener,
+ mPhoneNumberUtilsWrapper,
+ mCallLogViewsHelper);
}
}
diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java
index 9c95d3ec8..d69c2ed7e 100644
--- a/src/com/android/dialer/calllog/CallLogFragment.java
+++ b/src/com/android/dialer/calllog/CallLogFragment.java
@@ -62,13 +62,10 @@ import java.util.List;
*/
public class CallLogFragment extends ListFragment
implements CallLogQueryHandler.Listener, CallLogAdapter.OnReportButtonClickListener,
- CallLogAdapter.CallFetcher,
- CallLogAdapter.CallItemExpandedListener {
+ CallLogAdapter.CallFetcher {
private static final String TAG = "CallLogFragment";
private static final String REPORT_DIALOG_TAG = "report_dialog";
- private String mReportDialogNumber;
- private boolean mIsReportDialogShowing;
/**
* ID of the empty loader to defer other fragments.
@@ -78,9 +75,6 @@ public class CallLogFragment extends ListFragment
private static final String KEY_FILTER_TYPE = "filter_type";
private static final String KEY_LOG_LIMIT = "log_limit";
private static final String KEY_DATE_LIMIT = "date_limit";
- private static final String KEY_SHOW_FOOTER = "show_footer";
- private static final String KEY_IS_REPORT_DIALOG_SHOWING = "is_report_dialog_showing";
- private static final String KEY_REPORT_DIALOG_NUMBER = "report_dialog_number";
private CallLogAdapter mAdapter;
private CallLogQueryHandler mCallLogQueryHandler;
@@ -91,21 +85,15 @@ public class CallLogFragment extends ListFragment
private VoicemailStatusHelper mVoicemailStatusHelper;
private View mStatusMessageView;
+ private View mEmptyListView;
private TextView mStatusMessageText;
private TextView mStatusMessageAction;
private KeyguardManager mKeyguardManager;
- private View mFooterView;
private boolean mEmptyLoaderRunning;
private boolean mCallLogFetched;
private boolean mVoicemailStatusFetched;
- private float mExpandedItemTranslationZ;
- private int mFadeInDuration;
- private int mFadeInStartDelay;
- private int mFadeOutDuration;
- private int mExpandCollapseDuration;
-
private final Handler mHandler = new Handler();
private class CustomContentObserver extends ContentObserver {
@@ -138,9 +126,6 @@ public class CallLogFragment extends ListFragment
// the date filter are included. If zero, no date-based filtering occurs.
private long mDateLimit = 0;
- // Whether or not to show the Show call history footer view
- private boolean mHasFooterView = false;
-
public CallLogFragment() {
this(CallLogQueryHandler.CALL_TYPE_ALL, -1);
}
@@ -184,44 +169,24 @@ public class CallLogFragment extends ListFragment
mCallTypeFilter = state.getInt(KEY_FILTER_TYPE, mCallTypeFilter);
mLogLimit = state.getInt(KEY_LOG_LIMIT, mLogLimit);
mDateLimit = state.getLong(KEY_DATE_LIMIT, mDateLimit);
- mHasFooterView = state.getBoolean(KEY_SHOW_FOOTER, mHasFooterView);
- mIsReportDialogShowing = state.getBoolean(KEY_IS_REPORT_DIALOG_SHOWING,
- mIsReportDialogShowing);
- mReportDialogNumber = state.getString(KEY_REPORT_DIALOG_NUMBER, mReportDialogNumber);
}
String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
mAdapter = ObjectFactory.newCallLogAdapter(getActivity(), this,
- new ContactInfoHelper(getActivity(), currentCountryIso), this, this, true);
+ new ContactInfoHelper(getActivity(), currentCountryIso), this);
setListAdapter(mAdapter);
mCallLogQueryHandler = new CallLogQueryHandler(getActivity().getContentResolver(),
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);
getActivity().getContentResolver().registerContentObserver(
Status.CONTENT_URI, true, mVoicemailStatusObserver);
setHasOptionsMenu(true);
- updateCallList(mCallTypeFilter, mDateLimit);
-
- mExpandedItemTranslationZ =
- getResources().getDimension(R.dimen.call_log_expanded_translation_z);
- mFadeInDuration = getResources().getInteger(R.integer.call_log_actions_fade_in_duration);
- mFadeInStartDelay = getResources().getInteger(R.integer.call_log_actions_fade_start);
- mFadeOutDuration = getResources().getInteger(R.integer.call_log_actions_fade_out_duration);
- mExpandCollapseDuration = getResources().getInteger(
- R.integer.call_log_expand_collapse_duration);
-
- if (mIsReportDialogShowing) {
- DialogFragment df = ObjectFactory.getReportDialogFragment(mReportDialogNumber);
- if (df != null) {
- df.setTargetFragment(this, 0);
- df.show(getActivity().getFragmentManager(), REPORT_DIALOG_TAG);
- }
- }
+ fetchCalls();
}
/** Called by the CallLogQueryHandler when the list of calls has been fetched or updated. */
@@ -235,8 +200,13 @@ public class CallLogFragment extends ListFragment
mAdapter.changeCursor(cursor);
// This will update the state of the "Clear call log" menu item.
getActivity().invalidateOptionsMenu();
+
+ final ListView listView = getListView();
+ boolean showListView = cursor.getCount() > 0;
+ listView.setVisibility(showListView ? View.VISIBLE : View.GONE);
+ mEmptyListView.setVisibility(!showListView ? View.VISIBLE : View.GONE);
+
if (mScrollToTop) {
- final ListView listView = getListView();
// The smooth-scroll animation happens over a fixed time period.
// As a result, if it scrolls through a large portion of the list,
// each frame will jump so far from the previous one that the user
@@ -270,13 +240,21 @@ public class CallLogFragment extends ListFragment
*/
@Override
public void onVoicemailStatusFetched(Cursor statusCursor) {
- if (getActivity() == null || getActivity().isFinishing()) {
+ Activity activity = getActivity();
+ if (activity == null || activity.isFinishing()) {
return;
}
updateVoicemailStatusMessage(statusCursor);
- int activeSources = mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor);
- setVoicemailSourcesAvailable(activeSources != 0);
+ // If there are any changes to the presence of active voicemail services, invalidate the
+ // options menu so that it will be updated.
+ boolean hasActiveVoicemailSources =
+ mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor) != 0;
+ if (mVoicemailSourcesAvailable != hasActiveVoicemailSources) {
+ mVoicemailSourcesAvailable = hasActiveVoicemailSources;
+ activity.invalidateOptionsMenu();
+ }
+
mVoicemailStatusFetched = true;
destroyEmptyLoaderIfAllDataFetched();
}
@@ -288,18 +266,6 @@ public class CallLogFragment extends ListFragment
}
}
- /** Sets whether there are any voicemail sources available in the platform. */
- private void setVoicemailSourcesAvailable(boolean voicemailSourcesAvailable) {
- if (mVoicemailSourcesAvailable == voicemailSourcesAvailable) return;
- mVoicemailSourcesAvailable = voicemailSourcesAvailable;
-
- Activity activity = getActivity();
- if (activity != null) {
- // This is so that the options menu content is updated.
- activity.invalidateOptionsMenu();
- }
- }
-
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
View view = inflater.inflate(R.layout.call_log_fragment, container, false);
@@ -313,9 +279,8 @@ public class CallLogFragment extends ListFragment
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- getListView().setEmptyView(view.findViewById(R.id.empty_list_view));
+ mEmptyListView = view.findViewById(R.id.empty_list_view);
getListView().setItemsCanFocus(true);
- maybeAddFooterView();
updateEmptyMessage(mCallTypeFilter);
}
@@ -382,20 +347,20 @@ public class CallLogFragment extends ListFragment
@Override
public void onPause() {
super.onPause();
- // Kill the requests thread
- mAdapter.stopRequestProcessing();
+ mAdapter.pauseCache();
}
@Override
public void onStop() {
super.onStop();
- updateOnExit();
+
+ updateOnTransition(false /* onEntry */);
}
@Override
public void onDestroy() {
super.onDestroy();
- mAdapter.stopRequestProcessing();
+ mAdapter.pauseCache();
mAdapter.changeCursor(null);
getActivity().getContentResolver().unregisterContentObserver(mCallLogObserver);
getActivity().getContentResolver().unregisterContentObserver(mContactsObserver);
@@ -408,9 +373,6 @@ public class CallLogFragment extends ListFragment
outState.putInt(KEY_FILTER_TYPE, mCallTypeFilter);
outState.putInt(KEY_LOG_LIMIT, mLogLimit);
outState.putLong(KEY_DATE_LIMIT, mDateLimit);
- outState.putBoolean(KEY_SHOW_FOOTER, mHasFooterView);
- outState.putBoolean(KEY_IS_REPORT_DIALOG_SHOWING, mIsReportDialogShowing);
- outState.putString(KEY_REPORT_DIALOG_NUMBER, mReportDialogNumber);
}
@Override
@@ -418,19 +380,6 @@ public class CallLogFragment extends ListFragment
mCallLogQueryHandler.fetchCalls(mCallTypeFilter, mDateLimit);
}
- public void startCallsQuery() {
- mAdapter.setLoading(true);
- mCallLogQueryHandler.fetchCalls(mCallTypeFilter, mDateLimit);
- }
-
- private void startVoicemailStatusQuery() {
- mCallLogQueryHandler.fetchVoicemailStatus();
- }
-
- private void updateCallList(int filterType, long dateLimit) {
- mCallLogQueryHandler.fetchCalls(filterType, dateLimit);
- }
-
private void updateEmptyMessage(int filterType) {
final int messageId;
switch (filterType) {
@@ -448,7 +397,7 @@ public class CallLogFragment extends ListFragment
+ filterType);
}
DialerUtils.configureEmptyListView(
- getListView().getEmptyView(), R.drawable.empty_call_log, messageId, getResources());
+ mEmptyListView, R.drawable.empty_call_log, messageId, getResources());
}
CallLogAdapter getAdapter() {
@@ -461,7 +410,7 @@ public class CallLogFragment extends ListFragment
if (mMenuVisible != menuVisible) {
mMenuVisible = menuVisible;
if (!menuVisible) {
- updateOnExit();
+ updateOnTransition(false /* onEntry */);
} else if (isResumed()) {
refreshData();
}
@@ -475,24 +424,26 @@ public class CallLogFragment extends ListFragment
// Mark all entries in the contact info cache as out of date, so they will be looked up
// again once being shown.
mAdapter.invalidateCache();
- startCallsQuery();
- startVoicemailStatusQuery();
- updateOnEntry();
- mRefreshDataRequired = false;
- }
- }
+ mAdapter.setLoading(true);
- /** Updates call data and notification state while leaving the call log tab. */
- private void updateOnExit() {
- updateOnTransition(false);
- }
+ fetchCalls();
+ mCallLogQueryHandler.fetchVoicemailStatus();
- /** Updates call data and notification state while entering the call log tab. */
- private void updateOnEntry() {
- updateOnTransition(true);
+ updateOnTransition(true /* onEntry */);
+ mRefreshDataRequired = false;
+ } else {
+ // Refresh the display of the existing data to update the timestamp text descriptions.
+ mAdapter.notifyDataSetChanged();
+ }
}
- // TODO: Move to CallLogActivity
+ /**
+ * Updates the call data and notification state on entering or leaving the call log tab.
+ *
+ * If we are leaving the call log tab, mark all the missed calls as read.
+ *
+ * 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.
@@ -509,184 +460,11 @@ public class CallLogFragment extends ListFragment
}
}
- /**
- * Enables/disables the showing of the view full call history footer
- *
- * @param hasFooterView Whether or not to show the footer
- */
- public void setHasFooterView(boolean hasFooterView) {
- mHasFooterView = hasFooterView;
- maybeAddFooterView();
- }
-
- /**
- * Determine whether or not the footer view should be added to the listview. If getView()
- * is null, which means onCreateView hasn't been called yet, defer the addition of the footer
- * until onViewCreated has been called.
- */
- private void maybeAddFooterView() {
- if (!mHasFooterView || getView() == null) {
- return;
- }
-
- if (mFooterView == null) {
- mFooterView = getActivity().getLayoutInflater().inflate(
- R.layout.recents_list_footer, getListView(), false);
- mFooterView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- ((HostInterface) getActivity()).showCallHistory();
- }
- });
- }
-
- final ListView listView = getListView();
- listView.removeFooterView(mFooterView);
- listView.addFooterView(mFooterView);
-
- ViewUtil.addBottomPaddingToListViewForFab(listView, getResources());
- }
-
- @Override
- public void onItemExpanded(final View view) {
- final int startingHeight = view.getHeight();
- final CallLogListItemViews viewHolder = (CallLogListItemViews) view.getTag();
- final ViewTreeObserver observer = getListView().getViewTreeObserver();
- observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
- @Override
- public boolean onPreDraw() {
- // We don't want to continue getting called for every draw.
- if (observer.isAlive()) {
- observer.removeOnPreDrawListener(this);
- }
- // Calculate some values to help with the animation.
- final int endingHeight = view.getHeight();
- final int distance = Math.abs(endingHeight - startingHeight);
- final int baseHeight = Math.min(endingHeight, startingHeight);
- final boolean isExpand = endingHeight > startingHeight;
-
- // Set the views back to the start state of the animation
- view.getLayoutParams().height = startingHeight;
- if (!isExpand) {
- viewHolder.actionsView.setVisibility(View.VISIBLE);
- }
- CallLogAdapter.expandVoicemailTranscriptionView(viewHolder, !isExpand);
-
- // Set up the fade effect for the action buttons.
- if (isExpand) {
- // Start the fade in after the expansion has partly completed, otherwise it
- // will be mostly over before the expansion completes.
- viewHolder.actionsView.setAlpha(0f);
- viewHolder.actionsView.animate()
- .alpha(1f)
- .setStartDelay(mFadeInStartDelay)
- .setDuration(mFadeInDuration)
- .start();
- } else {
- viewHolder.actionsView.setAlpha(1f);
- viewHolder.actionsView.animate()
- .alpha(0f)
- .setDuration(mFadeOutDuration)
- .start();
- }
- view.requestLayout();
-
- // Set up the animator to animate the expansion and shadow depth.
- ValueAnimator animator = isExpand ? ValueAnimator.ofFloat(0f, 1f)
- : ValueAnimator.ofFloat(1f, 0f);
-
- // Figure out how much scrolling is needed to make the view fully visible.
- final Rect localVisibleRect = new Rect();
- view.getLocalVisibleRect(localVisibleRect);
- final int scrollingNeeded = localVisibleRect.top > 0 ? -localVisibleRect.top
- : view.getMeasuredHeight() - localVisibleRect.height();
- final ListView listView = getListView();
- animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
-
- private int mCurrentScroll = 0;
-
- @Override
- public void onAnimationUpdate(ValueAnimator animator) {
- Float value = (Float) animator.getAnimatedValue();
-
- // For each value from 0 to 1, animate the various parts of the layout.
- view.getLayoutParams().height = (int) (value * distance + baseHeight);
- float z = mExpandedItemTranslationZ * value;
- viewHolder.callLogEntryView.setTranslationZ(z);
- view.setTranslationZ(z); // WAR
- view.requestLayout();
-
- if (isExpand) {
- if (listView != null) {
- int scrollBy = (int) (value * scrollingNeeded) - mCurrentScroll;
- listView.smoothScrollBy(scrollBy, /* duration = */ 0);
- mCurrentScroll += scrollBy;
- }
- }
- }
- });
- // Set everything to their final values when the animation's done.
- animator.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- view.getLayoutParams().height = LayoutParams.WRAP_CONTENT;
-
- if (!isExpand) {
- viewHolder.actionsView.setVisibility(View.GONE);
- } else {
- // This seems like it should be unnecessary, but without this, after
- // navigating out of the activity and then back, the action view alpha
- // is defaulting to the value (0) at the start of the expand animation.
- viewHolder.actionsView.setAlpha(1);
- }
- CallLogAdapter.expandVoicemailTranscriptionView(viewHolder, isExpand);
- }
- });
-
- animator.setDuration(mExpandCollapseDuration);
- animator.start();
-
- // Return false so this draw does not occur to prevent the final frame from
- // being drawn for the single frame before the animations start.
- return false;
- }
- });
- }
-
- /**
- * Retrieves the call log view for the specified call Id. If the view is not currently
- * visible, returns null.
- *
- * @param callId The call Id.
- * @return The call log view.
- */
- @Override
- public View getViewForCallId(long callId) {
- ListView listView = getListView();
-
- int firstPosition = listView.getFirstVisiblePosition();
- int lastPosition = listView.getLastVisiblePosition();
-
- for (int position = 0; position <= lastPosition - firstPosition; position++) {
- View view = listView.getChildAt(position);
-
- if (view != null) {
- final CallLogListItemViews viewHolder = (CallLogListItemViews) view.getTag();
- if (viewHolder != null && viewHolder.rowId == callId) {
- return view;
- }
- }
- }
-
- return null;
- }
-
public void onBadDataReported(String number) {
- mIsReportDialogShowing = false;
if (number == null) {
return;
}
- mAdapter.onBadDataReported(number);
+ mAdapter.invalidateCache();
mAdapter.notifyDataSetChanged();
}
@@ -695,8 +473,6 @@ public class CallLogFragment extends ListFragment
if (df != null) {
df.setTargetFragment(this, 0);
df.show(getActivity().getFragmentManager(), REPORT_DIALOG_TAG);
- mReportDialogNumber = number;
- mIsReportDialogShowing = true;
}
}
}
diff --git a/src/com/android/dialer/calllog/CallLogGroupBuilder.java b/src/com/android/dialer/calllog/CallLogGroupBuilder.java
index 1f11e1e60..0826aeb4a 100644
--- a/src/com/android/dialer/calllog/CallLogGroupBuilder.java
+++ b/src/com/android/dialer/calllog/CallLogGroupBuilder.java
@@ -21,7 +21,6 @@ import android.provider.CallLog.Calls;
import android.telephony.PhoneNumberUtils;
import android.text.format.Time;
-import com.android.common.widget.GroupingListAdapter;
import com.android.contacts.common.util.DateUtils;
import com.android.contacts.common.util.PhoneNumberHelper;
diff --git a/src/com/android/dialer/calllog/CallLogListItemViews.java b/src/com/android/dialer/calllog/CallLogListItemViews.java
index 0ccdf00a1..9d11a3ab6 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViews.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViews.java
@@ -17,19 +17,36 @@
package com.android.dialer.calllog;
import android.content.Context;
+import android.content.res.Resources;
+import android.net.Uri;
+import android.provider.CallLog.Calls;
import android.telecom.PhoneAccountHandle;
+import android.text.TextUtils;
import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewStub;
import android.widget.QuickContactBadge;
import android.widget.TextView;
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.testing.NeededForTesting;
import com.android.dialer.PhoneCallDetailsViews;
import com.android.dialer.R;
/**
- * Simple value object containing the various views within a call log entry.
+ * This is an object containing the various views within a call log entry. It contains values
+ * pointing to views contained by a call log list item view, so that we can improve performance
+ * by reducing the frequency with which we need to find views by IDs.
+ *
+ * This object also contains methods for inflating action views and binding action behaviors. This
+ * is a way of isolating view logic from the CallLogAdapter. We should consider moving that logic
+ * if the call log list item is eventually represented as a UI component.
*/
public final class CallLogListItemViews {
+ /** The root view of the call log list item */
+ public final View rootView;
/** The quick contact badge for the contact. */
public final QuickContactBadge quickContactView;
/** The primary action view of the entry. */
@@ -113,18 +130,43 @@ public final class CallLogListItemViews {
*/
public boolean canBeReportedAsInvalid;
- private CallLogListItemViews(QuickContactBadge quickContactView, View primaryActionView,
- PhoneCallDetailsViews phoneCallDetailsViews, View callLogEntryView,
+ private static final int VOICEMAIL_TRANSCRIPTION_MAX_LINES = 10;
+
+ private Context mContext;
+ private int mPhotoSize;
+
+ private int mCallLogBackgroundColor;
+ private int mExpandedBackgroundColor;
+ private float mExpandedTranslationZ;
+
+ private CallLogListItemViews(
+ Context context,
+ View rootView,
+ QuickContactBadge quickContactView,
+ View primaryActionView,
+ PhoneCallDetailsViews phoneCallDetailsViews,
+ View callLogEntryView,
TextView dayGroupHeader) {
+ mContext = context;
+
+ this.rootView = rootView;
this.quickContactView = quickContactView;
this.primaryActionView = primaryActionView;
this.phoneCallDetailsViews = phoneCallDetailsViews;
this.callLogEntryView = callLogEntryView;
this.dayGroupHeader = dayGroupHeader;
+
+ Resources resources = mContext.getResources();
+ mCallLogBackgroundColor = resources.getColor(R.color.background_dialer_list_items);
+ mExpandedBackgroundColor = resources.getColor(R.color.call_log_expanded_background_color);
+ mExpandedTranslationZ = resources.getDimension(R.dimen.call_log_expanded_translation_z);
+ mPhotoSize = mContext.getResources().getDimensionPixelSize(R.dimen.contact_photo_size);
}
- public static CallLogListItemViews fromView(View view) {
+ public static CallLogListItemViews fromView(Context context, View view) {
return new CallLogListItemViews(
+ context,
+ view,
(QuickContactBadge) view.findViewById(R.id.quick_contact_photo),
view.findViewById(R.id.primary_action_view),
PhoneCallDetailsViews.fromView(view),
@@ -132,9 +174,217 @@ public final class CallLogListItemViews {
(TextView) view.findViewById(R.id.call_log_day_group_label));
}
+ /**
+ * Configures the action buttons in the expandable actions ViewStub. The ViewStub is not
+ * inflated during initial binding, so click handlers, tags and accessibility text must be set
+ * here, if necessary.
+ *
+ * @param callLogItem The call log list item view.
+ */
+ public void inflateActionViewStub(
+ final CallLogAdapter.OnReportButtonClickListener onReportButtonClickListener,
+ View.OnClickListener actionListener,
+ PhoneNumberUtilsWrapper phoneNumberUtilsWrapper,
+ CallLogListItemHelper callLogViewsHelper) {
+ ViewStub stub = (ViewStub) rootView.findViewById(R.id.call_log_entry_actions_stub);
+ if (stub != null) {
+ actionsView = (ViewGroup) stub.inflate();
+ }
+
+ if (callBackButtonView == null) {
+ callBackButtonView = (TextView) actionsView.findViewById(R.id.call_back_action);
+ }
+
+ if (videoCallButtonView == null) {
+ videoCallButtonView = (TextView) actionsView.findViewById(R.id.video_call_action);
+ }
+
+ if (voicemailButtonView == null) {
+ voicemailButtonView = (TextView) actionsView.findViewById(R.id.voicemail_action);
+ }
+
+ if (detailsButtonView == null) {
+ detailsButtonView = (TextView) actionsView.findViewById(R.id.details_action);
+ }
+
+ if (reportButtonView == null) {
+ reportButtonView = (TextView) actionsView.findViewById(R.id.report_action);
+ reportButtonView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (onReportButtonClickListener != null) {
+ onReportButtonClickListener.onReportButtonClick(number);
+ }
+ }
+ });
+ }
+
+ bindActionButtons(actionListener, phoneNumberUtilsWrapper, callLogViewsHelper);
+ }
+
+ /**
+ * Binds text titles, click handlers and intents to the voicemail, details and callback action
+ * buttons.
+ */
+ private void bindActionButtons(
+ View.OnClickListener actionListener,
+ PhoneNumberUtilsWrapper phoneNumberUtilsWrapper,
+ CallLogListItemHelper callLogViewsHelper) {
+ boolean canPlaceCallToNumber =
+ PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation);
+
+ // Set return call intent, otherwise null.
+ if (canPlaceCallToNumber) {
+ boolean isVoicemailNumber =
+ phoneNumberUtilsWrapper.isVoicemailNumber(accountHandle, number);
+ if (isVoicemailNumber) {
+ // Make a general call to voicemail to ensure that if there are multiple accounts
+ // it does not call the voicemail number of a specific phone account.
+ callBackButtonView.setTag(IntentProvider.getReturnVoicemailCallIntentProvider());
+ } else {
+ // Sets the primary action to call the number.
+ callBackButtonView.setTag(IntentProvider.getReturnCallIntentProvider(number));
+ }
+ callBackButtonView.setVisibility(View.VISIBLE);
+ callBackButtonView.setOnClickListener(actionListener);
+
+ final int titleId;
+ if (callType == Calls.VOICEMAIL_TYPE || callType == Calls.OUTGOING_TYPE) {
+ titleId = R.string.call_log_action_redial;
+ } else {
+ titleId = R.string.call_log_action_call_back;
+ }
+ callBackButtonView.setText(mContext.getString(titleId));
+ } else {
+ // Number is not callable, so hide button.
+ callBackButtonView.setTag(null);
+ callBackButtonView.setVisibility(View.GONE);
+ }
+
+ // If one of the calls had video capabilities, show the video call button.
+ if (CallUtil.isVideoEnabled(mContext) && canPlaceCallToNumber &&
+ phoneCallDetailsViews.callTypeIcons.isVideoShown()) {
+ videoCallButtonView.setTag(IntentProvider.getReturnVideoCallIntentProvider(number));
+ videoCallButtonView.setVisibility(View.VISIBLE);
+ videoCallButtonView.setOnClickListener(actionListener);
+ } else {
+ videoCallButtonView.setTag(null);
+ videoCallButtonView.setVisibility(View.GONE);
+ }
+
+ // For voicemail calls, show the "VOICEMAIL" action button; hide otherwise.
+ if (callType == Calls.VOICEMAIL_TYPE) {
+ voicemailButtonView.setOnClickListener(actionListener);
+ voicemailButtonView.setTag(
+ IntentProvider.getPlayVoicemailIntentProvider(rowId, voicemailUri));
+ voicemailButtonView.setVisibility(View.VISIBLE);
+
+ detailsButtonView.setVisibility(View.GONE);
+ } else {
+ voicemailButtonView.setTag(null);
+ voicemailButtonView.setVisibility(View.GONE);
+
+ detailsButtonView.setOnClickListener(actionListener);
+ detailsButtonView.setTag(
+ IntentProvider.getCallDetailIntentProvider(rowId, callIds, null));
+
+ if (canBeReportedAsInvalid && !reported) {
+ reportButtonView.setVisibility(View.VISIBLE);
+ } else {
+ reportButtonView.setVisibility(View.GONE);
+ }
+ }
+
+ callLogViewsHelper.setActionContentDescriptions(this);
+ }
+
+ /**
+ * Expands or collapses the view containing the CALLBACK/REDIAL, VOICEMAIL and DETAILS action
+ * buttons.
+ *
+ * TODO: Reduce number of classes which need to be passed in to inflate the action view stub.
+ * 1) Instantiate them in this class, and store local references.
+ * 2) Set them on the CallLogListItemHelper and use it for inflation.
+ * 3) Implement a parent view for a call log list item, and store references in that class.
+ */
+ public void expandOrCollapseActions(
+ boolean isExpanded,
+ final CallLogAdapter.OnReportButtonClickListener onReportButtonClickListener,
+ View.OnClickListener actionListener,
+ PhoneNumberUtilsWrapper phoneNumberUtilsWrapper,
+ CallLogListItemHelper callLogViewsHelper) {
+ expandVoicemailTranscriptionView(isExpanded);
+
+ if (isExpanded) {
+ // Inflate the view stub if necessary, and wire up the event handlers.
+ inflateActionViewStub(onReportButtonClickListener, actionListener,
+ phoneNumberUtilsWrapper, callLogViewsHelper);
+
+ actionsView.setVisibility(View.VISIBLE);
+ actionsView.setAlpha(1.0f);
+ callLogEntryView.setBackgroundColor(mExpandedBackgroundColor);
+ callLogEntryView.setTranslationZ(mExpandedTranslationZ);
+ rootView.setTranslationZ(mExpandedTranslationZ); // WAR
+ } else {
+ // When recycling a view, it is possible the actionsView ViewStub was previously
+ // inflated so we should hide it in this case.
+ if (actionsView != null) {
+ actionsView.setVisibility(View.GONE);
+ }
+
+ callLogEntryView.setBackgroundColor(mCallLogBackgroundColor);
+ callLogEntryView.setTranslationZ(0);
+ rootView.setTranslationZ(0); // WAR
+ }
+ }
+
+ public void expandVoicemailTranscriptionView(boolean isExpanded) {
+ if (callType != Calls.VOICEMAIL_TYPE) {
+ return;
+ }
+
+ final TextView view = phoneCallDetailsViews.voicemailTranscriptionView;
+ if (TextUtils.isEmpty(view.getText())) {
+ return;
+ }
+ view.setMaxLines(isExpanded ? VOICEMAIL_TRANSCRIPTION_MAX_LINES : 1);
+ view.setSingleLine(!isExpanded);
+ }
+
+ public void setPhoto(long photoId, Uri photoUri, Uri contactUri, String displayName,
+ boolean isVoicemail, boolean isBusiness) {
+ quickContactView.assignContactUri(contactUri);
+ quickContactView.setOverlay(null);
+
+ int contactType = ContactPhotoManager.TYPE_DEFAULT;
+ if (isVoicemail) {
+ contactType = ContactPhotoManager.TYPE_VOICEMAIL;
+ } else if (isBusiness) {
+ contactType = ContactPhotoManager.TYPE_BUSINESS;
+ }
+
+ String lookupKey = null;
+ if (contactUri != null) {
+ lookupKey = ContactInfoHelper.getLookupKeyFromUri(contactUri);
+ }
+
+ DefaultImageRequest request = new DefaultImageRequest(
+ displayName, lookupKey, contactType, true /* isCircular */);
+
+ if (photoId == 0 && photoUri != null) {
+ ContactPhotoManager.getInstance(mContext).loadPhoto(quickContactView, photoUri,
+ mPhotoSize, false /* darkTheme */, true /* isCircular */, request);
+ } else {
+ ContactPhotoManager.getInstance(mContext).loadThumbnail(quickContactView, photoId,
+ false /* darkTheme */, true /* isCircular */, request);
+ }
+ }
+
@NeededForTesting
public static CallLogListItemViews createForTest(Context context) {
CallLogListItemViews views = new CallLogListItemViews(
+ context,
+ new View(context),
new QuickContactBadge(context),
new View(context),
PhoneCallDetailsViews.createForTest(context),
diff --git a/src/com/android/dialer/calllog/CallLogQuery.java b/src/com/android/dialer/calllog/CallLogQuery.java
index 0ae4cda33..2b43c2857 100644
--- a/src/com/android/dialer/calllog/CallLogQuery.java
+++ b/src/com/android/dialer/calllog/CallLogQuery.java
@@ -45,7 +45,8 @@ public final class CallLogQuery {
Calls.PHONE_ACCOUNT_ID, // 19
Calls.FEATURES, // 20
Calls.DATA_USAGE, // 21
- Calls.TRANSCRIPTION // 22
+ Calls.TRANSCRIPTION, // 22
+ Calls.CACHED_PHOTO_URI // 23
};
public static final int ID = 0;
@@ -71,4 +72,5 @@ public final class CallLogQuery {
public static final int FEATURES = 20;
public static final int DATA_USAGE = 21;
public static final int TRANSCRIPTION = 22;
+ public static final int CACHED_PHOTO_URI = 23;
}
diff --git a/src/com/android/dialer/calllog/ContactInfo.java b/src/com/android/dialer/calllog/ContactInfo.java
index 7b6014dd1..effe14270 100644
--- a/src/com/android/dialer/calllog/ContactInfo.java
+++ b/src/com/android/dialer/calllog/ContactInfo.java
@@ -27,6 +27,11 @@ import com.google.common.base.Objects;
*/
public class ContactInfo {
public Uri lookupUri;
+
+ /**
+ * Contact lookup key. Note this may be a lookup key for a corp contact, in which case
+ * "lookup by lookup key" doesn't work on the personal profile.
+ */
public String lookupKey;
public String name;
public int type;
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
index 01749fc22..8e8aa3ce1 100644
--- a/src/com/android/dialer/calllog/ContactInfoHelper.java
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -14,9 +14,12 @@
package com.android.dialer.calllog;
+import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
+import android.database.sqlite.SQLiteFullException;
import android.net.Uri;
+import android.provider.CallLog.Calls;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
@@ -24,6 +27,7 @@ import android.provider.ContactsContract.DisplayNameSources;
import android.provider.ContactsContract.PhoneLookup;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
+import android.util.Log;
import com.android.contacts.common.util.Constants;
import com.android.contacts.common.util.PhoneNumberHelper;
@@ -41,6 +45,8 @@ import java.util.List;
* Utility class to look up the contact information for a given number.
*/
public class ContactInfoHelper {
+ private static final String TAG = ContactInfoHelper.class.getSimpleName();
+
private final Context mContext;
private final String mCurrentCountryIso;
@@ -64,6 +70,9 @@ public class ContactInfoHelper {
* @param countryIso the country associated with this number
*/
public ContactInfo lookupNumber(String number, String countryIso) {
+ if (TextUtils.isEmpty(number)) {
+ return null;
+ }
final ContactInfo info;
// Determine the contact info.
@@ -149,6 +158,9 @@ public class ContactInfoHelper {
* value.
*/
private ContactInfo lookupContactFromUri(Uri uri) {
+ if (uri == null) {
+ return null;
+ }
final ContactInfo info;
Cursor phonesCursor =
mContext.getContentResolver().query(uri, PhoneQuery._PROJECTION, null, null, null);
@@ -193,10 +205,13 @@ public class ContactInfoHelper {
* If the lookup fails for some other reason, it returns null.
*/
private ContactInfo queryContactInfoForSipAddress(String sipAddress) {
+ if (TextUtils.isEmpty(sipAddress)) {
+ return null;
+ }
final ContactInfo info;
// "contactNumber" is a SIP address, so use the PhoneLookup table with the SIP parameter.
- Uri.Builder uriBuilder = PhoneLookup.CONTENT_FILTER_URI.buildUpon();
+ Uri.Builder uriBuilder = PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI.buildUpon();
uriBuilder.appendPath(Uri.encode(sipAddress));
uriBuilder.appendQueryParameter(PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS, "1");
return lookupContactFromUri(uriBuilder.build());
@@ -212,6 +227,9 @@ public class ContactInfoHelper {
* If the lookup fails for some other reason, it returns null.
*/
private ContactInfo queryContactInfoForPhoneNumber(String number, String countryIso) {
+ if (TextUtils.isEmpty(number)) {
+ return null;
+ }
String contactNumber = number;
if (!TextUtils.isEmpty(countryIso)) {
// Normalize the number: this is needed because the PhoneLookup query below does not
@@ -224,7 +242,8 @@ public class ContactInfoHelper {
}
// The "contactNumber" is a regular phone number, so use the PhoneLookup table.
- Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(contactNumber));
+ Uri uri = Uri.withAppendedPath(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
+ Uri.encode(contactNumber));
ContactInfo info = lookupContactFromUri(uri);
if (info != null && info != ContactInfo.EMPTY) {
info.formattedNumber = formatPhoneNumber(number, null, countryIso);
@@ -265,6 +284,107 @@ public class ContactInfoHelper {
}
/**
+ * Stores differences between the updated contact info and the current call log contact info.
+ *
+ * @param number The number of the contact.
+ * @param countryIso The country associated with this number.
+ * @param updatedInfo The updated contact info.
+ * @param callLogInfo The call log entry's current contact info.
+ */
+ public void updateCallLogContactInfo(String number, String countryIso, ContactInfo updatedInfo,
+ ContactInfo callLogInfo) {
+ final ContentValues values = new ContentValues();
+ boolean needsUpdate = false;
+
+ if (callLogInfo != null) {
+ if (!TextUtils.equals(updatedInfo.name, callLogInfo.name)) {
+ values.put(Calls.CACHED_NAME, updatedInfo.name);
+ needsUpdate = true;
+ }
+
+ if (updatedInfo.type != callLogInfo.type) {
+ values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
+ needsUpdate = true;
+ }
+
+ if (!TextUtils.equals(updatedInfo.label, callLogInfo.label)) {
+ values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
+ needsUpdate = true;
+ }
+
+ if (!UriUtils.areEqual(updatedInfo.lookupUri, callLogInfo.lookupUri)) {
+ values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
+ needsUpdate = true;
+ }
+
+ // Only replace the normalized number if the new updated normalized number isn't empty.
+ if (!TextUtils.isEmpty(updatedInfo.normalizedNumber) &&
+ !TextUtils.equals(updatedInfo.normalizedNumber, callLogInfo.normalizedNumber)) {
+ values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
+ needsUpdate = true;
+ }
+
+ if (!TextUtils.equals(updatedInfo.number, callLogInfo.number)) {
+ values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
+ needsUpdate = true;
+ }
+
+ if (updatedInfo.photoId != callLogInfo.photoId) {
+ values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
+ needsUpdate = true;
+ }
+
+ final Uri updatedPhotoUriContactsOnly =
+ UriUtils.nullForNonContactsUri(updatedInfo.photoUri);
+ if (!UriUtils.areEqual(updatedPhotoUriContactsOnly, callLogInfo.photoUri)) {
+ values.put(Calls.CACHED_PHOTO_URI,
+ UriUtils.uriToString(updatedPhotoUriContactsOnly));
+ needsUpdate = true;
+ }
+
+ if (!TextUtils.equals(updatedInfo.formattedNumber, callLogInfo.formattedNumber)) {
+ values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
+ needsUpdate = true;
+ }
+ } else {
+ // No previous values, store all of them.
+ values.put(Calls.CACHED_NAME, updatedInfo.name);
+ values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
+ values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
+ values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
+ values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
+ values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
+ values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
+ values.put(Calls.CACHED_PHOTO_URI, UriUtils.uriToString(
+ UriUtils.nullForNonContactsUri(updatedInfo.photoUri)));
+ values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
+ needsUpdate = true;
+ }
+
+ if (!needsUpdate) {
+ return;
+ }
+
+ try {
+ if (countryIso == null) {
+ mContext.getContentResolver().update(
+ Calls.CONTENT_URI_WITH_VOICEMAIL,
+ values,
+ Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " IS NULL",
+ new String[]{ number });
+ } else {
+ mContext.getContentResolver().update(
+ Calls.CONTENT_URI_WITH_VOICEMAIL,
+ values,
+ Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " = ?",
+ new String[]{ number, countryIso });
+ }
+ } catch (SQLiteFullException e) {
+ Log.e(TAG, "Unable to update contact info in call log db", e);
+ }
+ }
+
+ /**
* Parses the given URI to determine the original lookup key of the contact.
*/
public static String getLookupKeyFromUri(Uri lookupUri) {
@@ -283,6 +403,29 @@ public class ContactInfoHelper {
}
/**
+ * Returns the contact information stored in an entry of the call log.
+ *
+ * @param c A cursor pointing to an entry in the call log.
+ */
+ public static ContactInfo getContactInfo(Cursor c) {
+ ContactInfo info = new ContactInfo();
+
+ info.lookupUri = UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_LOOKUP_URI));
+ info.name = c.getString(CallLogQuery.CACHED_NAME);
+ info.type = c.getInt(CallLogQuery.CACHED_NUMBER_TYPE);
+ info.label = c.getString(CallLogQuery.CACHED_NUMBER_LABEL);
+ String matchedNumber = c.getString(CallLogQuery.CACHED_MATCHED_NUMBER);
+ info.number = matchedNumber == null ? c.getString(CallLogQuery.NUMBER) : matchedNumber;
+ info.normalizedNumber = c.getString(CallLogQuery.CACHED_NORMALIZED_NUMBER);
+ info.photoId = c.getLong(CallLogQuery.CACHED_PHOTO_ID);
+ info.photoUri = UriUtils.nullForNonContactsUri(
+ UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_PHOTO_URI)));
+ info.formattedNumber = c.getString(CallLogQuery.CACHED_FORMATTED_NUMBER);
+
+ return info;
+ }
+
+ /**
* Given a contact's sourceType, return true if the contact is a business
*
* @param sourceType sourceType of the contact. This is usually populated by
diff --git a/src/com/android/dialer/calllog/GroupingListAdapter.java b/src/com/android/dialer/calllog/GroupingListAdapter.java
new file mode 100644
index 000000000..78955492e
--- /dev/null
+++ b/src/com/android/dialer/calllog/GroupingListAdapter.java
@@ -0,0 +1,490 @@
+/*
+ * Copyright (C) 2015 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.content.Context;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.database.DataSetObserver;
+import android.os.Handler;
+import android.util.SparseIntArray;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+
+import com.android.contacts.common.testing.NeededForTesting;
+
+/**
+ * Maintains a list that groups adjacent items sharing the same value of a "group-by" field.
+ *
+ * The list has three types of elements: stand-alone, group header and group child. Groups are
+ * collapsible and collapsed by default. This is used by the call log to group related entries.
+ */
+abstract class GroupingListAdapter extends BaseAdapter {
+
+ private static final int GROUP_METADATA_ARRAY_INITIAL_SIZE = 16;
+ private static final int GROUP_METADATA_ARRAY_INCREMENT = 128;
+ private static final long GROUP_OFFSET_MASK = 0x00000000FFFFFFFFL;
+ private static final long GROUP_SIZE_MASK = 0x7FFFFFFF00000000L;
+ private static final long EXPANDED_GROUP_MASK = 0x8000000000000000L;
+
+ public static final int ITEM_TYPE_STANDALONE = 0;
+ public static final int ITEM_TYPE_GROUP_HEADER = 1;
+ public static final int ITEM_TYPE_IN_GROUP = 2;
+
+ /**
+ * Information about a specific list item: is it a group, if so is it expanded.
+ * Otherwise, is it a stand-alone item or a group member.
+ */
+ protected static class PositionMetadata {
+ int itemType;
+ boolean isExpanded;
+ int cursorPosition;
+ int childCount;
+ private int groupPosition;
+ private int listPosition = -1;
+ }
+
+ private Context mContext;
+ private Cursor mCursor;
+
+ /**
+ * Count of list items.
+ */
+ private int mCount;
+
+ private int mRowIdColumnIndex;
+
+ /**
+ * Count of groups in the list.
+ */
+ private int mGroupCount;
+
+ /**
+ * Information about where these groups are located in the list, how large they are
+ * and whether they are expanded.
+ */
+ private long[] mGroupMetadata;
+
+ private SparseIntArray mPositionCache = new SparseIntArray();
+ private int mLastCachedListPosition;
+ private int mLastCachedCursorPosition;
+ private int mLastCachedGroup;
+
+ /**
+ * A reusable temporary instance of PositionMetadata
+ */
+ private PositionMetadata mPositionMetadata = new PositionMetadata();
+
+ protected ContentObserver mChangeObserver = new ContentObserver(new Handler()) {
+
+ @Override
+ public boolean deliverSelfNotifications() {
+ return true;
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ onContentChanged();
+ }
+ };
+
+ protected DataSetObserver mDataSetObserver = new DataSetObserver() {
+
+ @Override
+ public void onChanged() {
+ notifyDataSetChanged();
+ }
+
+ @Override
+ public void onInvalidated() {
+ notifyDataSetInvalidated();
+ }
+ };
+
+ public GroupingListAdapter(Context context) {
+ mContext = context;
+ resetCache();
+ }
+
+ /**
+ * Finds all groups of adjacent items in the cursor and calls {@link #addGroup} for
+ * each of them.
+ */
+ protected abstract void addGroups(Cursor cursor);
+
+ protected abstract View newStandAloneView(Context context, ViewGroup parent);
+ protected abstract void bindStandAloneView(View view, Context context, Cursor cursor);
+
+ protected abstract View newGroupView(Context context, ViewGroup parent);
+ protected abstract void bindGroupView(View view, Context context, Cursor cursor, int groupSize,
+ boolean expanded);
+
+ protected abstract View newChildView(Context context, ViewGroup parent);
+ protected abstract void bindChildView(View view, Context context, Cursor cursor);
+
+ /**
+ * Cache should be reset whenever the cursor changes or groups are expanded or collapsed.
+ */
+ private void resetCache() {
+ mCount = -1;
+ mLastCachedListPosition = -1;
+ mLastCachedCursorPosition = -1;
+ mLastCachedGroup = -1;
+ mPositionMetadata.listPosition = -1;
+ mPositionCache.clear();
+ }
+
+ protected void onContentChanged() {
+ }
+
+ public void changeCursor(Cursor cursor) {
+ if (cursor == mCursor) {
+ return;
+ }
+
+ if (mCursor != null) {
+ mCursor.unregisterContentObserver(mChangeObserver);
+ mCursor.unregisterDataSetObserver(mDataSetObserver);
+ mCursor.close();
+ }
+ mCursor = cursor;
+ resetCache();
+ findGroups();
+
+ if (cursor != null) {
+ cursor.registerContentObserver(mChangeObserver);
+ cursor.registerDataSetObserver(mDataSetObserver);
+ mRowIdColumnIndex = cursor.getColumnIndexOrThrow("_id");
+ notifyDataSetChanged();
+ } else {
+ // notify the observers about the lack of a data set
+ notifyDataSetInvalidated();
+ }
+
+ }
+
+ public Cursor getCursor() {
+ return mCursor;
+ }
+
+ /**
+ * Scans over the entire cursor looking for duplicate phone numbers that need
+ * to be collapsed.
+ */
+ private void findGroups() {
+ mGroupCount = 0;
+ mGroupMetadata = new long[GROUP_METADATA_ARRAY_INITIAL_SIZE];
+
+ if (mCursor == null) {
+ return;
+ }
+
+ addGroups(mCursor);
+ }
+
+ /**
+ * Records information about grouping in the list. Should be called by the overridden
+ * {@link #addGroups} method.
+ */
+ protected void addGroup(int cursorPosition, int size, boolean expanded) {
+ if (mGroupCount >= mGroupMetadata.length) {
+ int newSize = idealLongArraySize(
+ mGroupMetadata.length + GROUP_METADATA_ARRAY_INCREMENT);
+ long[] array = new long[newSize];
+ System.arraycopy(mGroupMetadata, 0, array, 0, mGroupCount);
+ mGroupMetadata = array;
+ }
+
+ long metadata = ((long)size << 32) | cursorPosition;
+ if (expanded) {
+ metadata |= EXPANDED_GROUP_MASK;
+ }
+ mGroupMetadata[mGroupCount++] = metadata;
+ }
+
+ // Copy/paste from ArrayUtils
+ private int idealLongArraySize(int need) {
+ return idealByteArraySize(need * 8) / 8;
+ }
+
+ // Copy/paste from ArrayUtils
+ private int idealByteArraySize(int need) {
+ for (int i = 4; i < 32; i++)
+ if (need <= (1 << i) - 12)
+ return (1 << i) - 12;
+
+ return need;
+ }
+
+ public int getCount() {
+ if (mCursor == null) {
+ return 0;
+ }
+
+ if (mCount != -1) {
+ return mCount;
+ }
+
+ int cursorPosition = 0;
+ int count = 0;
+ for (int i = 0; i < mGroupCount; i++) {
+ long metadata = mGroupMetadata[i];
+ int offset = (int)(metadata & GROUP_OFFSET_MASK);
+ boolean expanded = (metadata & EXPANDED_GROUP_MASK) != 0;
+ int size = (int)((metadata & GROUP_SIZE_MASK) >> 32);
+
+ count += (offset - cursorPosition);
+
+ if (expanded) {
+ count += size + 1;
+ } else {
+ count++;
+ }
+
+ cursorPosition = offset + size;
+ }
+
+ mCount = count + mCursor.getCount() - cursorPosition;
+ return mCount;
+ }
+
+ /**
+ * Figures out whether the item at the specified position represents a
+ * stand-alone element, a group or a group child. Also computes the
+ * corresponding cursor position.
+ */
+ public void obtainPositionMetadata(PositionMetadata metadata, int position) {
+
+ // If the description object already contains requested information, just return
+ if (metadata.listPosition == position) {
+ return;
+ }
+
+ int listPosition = 0;
+ int cursorPosition = 0;
+ int firstGroupToCheck = 0;
+
+ // Check cache for the supplied position. What we are looking for is
+ // the group descriptor immediately preceding the supplied position.
+ // Once we have that, we will be able to tell whether the position
+ // is the header of the group, a member of the group or a standalone item.
+ if (mLastCachedListPosition != -1) {
+ if (position <= mLastCachedListPosition) {
+
+ // Have SparceIntArray do a binary search for us.
+ int index = mPositionCache.indexOfKey(position);
+
+ // If we get back a positive number, the position corresponds to
+ // a group header.
+ if (index < 0) {
+
+ // We had a cache miss, but we did obtain valuable information anyway.
+ // The negative number will allow us to compute the location of
+ // the group header immediately preceding the supplied position.
+ index = ~index - 1;
+
+ if (index >= mPositionCache.size()) {
+ index--;
+ }
+ }
+
+ // A non-negative index gives us the position of the group header
+ // corresponding or preceding the position, so we can
+ // search for the group information at the supplied position
+ // starting with the cached group we just found
+ if (index >= 0) {
+ listPosition = mPositionCache.keyAt(index);
+ firstGroupToCheck = mPositionCache.valueAt(index);
+ long descriptor = mGroupMetadata[firstGroupToCheck];
+ cursorPosition = (int)(descriptor & GROUP_OFFSET_MASK);
+ }
+ } else {
+
+ // If we haven't examined groups beyond the supplied position,
+ // we will start where we left off previously
+ firstGroupToCheck = mLastCachedGroup;
+ listPosition = mLastCachedListPosition;
+ cursorPosition = mLastCachedCursorPosition;
+ }
+ }
+
+ for (int i = firstGroupToCheck; i < mGroupCount; i++) {
+ long group = mGroupMetadata[i];
+ int offset = (int)(group & GROUP_OFFSET_MASK);
+
+ // Move pointers to the beginning of the group
+ listPosition += (offset - cursorPosition);
+ cursorPosition = offset;
+
+ if (i > mLastCachedGroup) {
+ mPositionCache.append(listPosition, i);
+ mLastCachedListPosition = listPosition;
+ mLastCachedCursorPosition = cursorPosition;
+ mLastCachedGroup = i;
+ }
+
+ // Now we have several possibilities:
+ // A) The requested position precedes the group
+ if (position < listPosition) {
+ metadata.itemType = ITEM_TYPE_STANDALONE;
+ metadata.cursorPosition = cursorPosition - (listPosition - position);
+ return;
+ }
+
+ boolean expanded = (group & EXPANDED_GROUP_MASK) != 0;
+ int size = (int) ((group & GROUP_SIZE_MASK) >> 32);
+
+ // B) The requested position is a group header
+ if (position == listPosition) {
+ metadata.itemType = ITEM_TYPE_GROUP_HEADER;
+ metadata.groupPosition = i;
+ metadata.isExpanded = expanded;
+ metadata.childCount = size;
+ metadata.cursorPosition = offset;
+ return;
+ }
+
+ if (expanded) {
+ // C) The requested position is an element in the expanded group
+ if (position < listPosition + size + 1) {
+ metadata.itemType = ITEM_TYPE_IN_GROUP;
+ metadata.cursorPosition = cursorPosition + (position - listPosition) - 1;
+ return;
+ }
+
+ // D) The element is past the expanded group
+ listPosition += size + 1;
+ } else {
+
+ // E) The element is past the collapsed group
+ listPosition++;
+ }
+
+ // Move cursor past the group
+ cursorPosition += size;
+ }
+
+ // The required item is past the last group
+ metadata.itemType = ITEM_TYPE_STANDALONE;
+ metadata.cursorPosition = cursorPosition + (position - listPosition);
+ }
+
+ /**
+ * Returns true if the specified position in the list corresponds to a
+ * group header.
+ */
+ public boolean isGroupHeader(int position) {
+ obtainPositionMetadata(mPositionMetadata, position);
+ return mPositionMetadata.itemType == ITEM_TYPE_GROUP_HEADER;
+ }
+
+ /**
+ * Given a position of a groups header in the list, returns the size of
+ * the corresponding group.
+ */
+ public int getGroupSize(int position) {
+ obtainPositionMetadata(mPositionMetadata, position);
+ return mPositionMetadata.childCount;
+ }
+
+ /**
+ * Mark group as expanded if it is collapsed and vice versa.
+ */
+ @NeededForTesting
+ public void toggleGroup(int position) {
+ obtainPositionMetadata(mPositionMetadata, position);
+ if (mPositionMetadata.itemType != ITEM_TYPE_GROUP_HEADER) {
+ throw new IllegalArgumentException("Not a group at position " + position);
+ }
+
+ if (mPositionMetadata.isExpanded) {
+ mGroupMetadata[mPositionMetadata.groupPosition] &= ~EXPANDED_GROUP_MASK;
+ } else {
+ mGroupMetadata[mPositionMetadata.groupPosition] |= EXPANDED_GROUP_MASK;
+ }
+ resetCache();
+ notifyDataSetChanged();
+ }
+
+ @Override
+ public int getViewTypeCount() {
+ return 3;
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ obtainPositionMetadata(mPositionMetadata, position);
+ return mPositionMetadata.itemType;
+ }
+
+ public Object getItem(int position) {
+ if (mCursor == null) {
+ return null;
+ }
+
+ obtainPositionMetadata(mPositionMetadata, position);
+ if (mCursor.moveToPosition(mPositionMetadata.cursorPosition)) {
+ return mCursor;
+ } else {
+ return null;
+ }
+ }
+
+ public long getItemId(int position) {
+ Object item = getItem(position);
+ if (item != null) {
+ return mCursor.getLong(mRowIdColumnIndex);
+ } else {
+ return -1;
+ }
+ }
+
+ public View getView(int position, View convertView, ViewGroup parent) {
+ obtainPositionMetadata(mPositionMetadata, position);
+ View view = convertView;
+ if (view == null) {
+ switch (mPositionMetadata.itemType) {
+ case ITEM_TYPE_STANDALONE:
+ view = newStandAloneView(mContext, parent);
+ break;
+ case ITEM_TYPE_GROUP_HEADER:
+ view = newGroupView(mContext, parent);
+ break;
+ case ITEM_TYPE_IN_GROUP:
+ view = newChildView(mContext, parent);
+ break;
+ }
+ }
+
+ mCursor.moveToPosition(mPositionMetadata.cursorPosition);
+ switch (mPositionMetadata.itemType) {
+ case ITEM_TYPE_STANDALONE:
+ bindStandAloneView(view, mContext, mCursor);
+ break;
+ case ITEM_TYPE_GROUP_HEADER:
+ bindGroupView(view, mContext, mCursor, mPositionMetadata.childCount,
+ mPositionMetadata.isExpanded);
+ break;
+ case ITEM_TYPE_IN_GROUP:
+ bindChildView(view, mContext, mCursor);
+ break;
+
+ }
+ return view;
+ }
+}
diff --git a/src/com/android/dialer/calllog/IntentProvider.java b/src/com/android/dialer/calllog/IntentProvider.java
index 3084e2424..2bd3f2eef 100644
--- a/src/com/android/dialer/calllog/IntentProvider.java
+++ b/src/com/android/dialer/calllog/IntentProvider.java
@@ -16,15 +16,23 @@
package com.android.dialer.calllog;
+import android.content.ContentValues;
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.provider.CallLog.Calls;
+import android.provider.ContactsContract;
import android.telecom.PhoneAccountHandle;
-import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.model.Contact;
+import com.android.contacts.common.model.ContactLoader;
import com.android.dialer.CallDetailActivity;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.PhoneCallDetails;
+import com.android.dialer.util.PrivilegedCallUtil;
+
+import java.util.ArrayList;
/**
* Used to create an intent to attach to an action in the call log.
@@ -46,7 +54,7 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- return CallUtil.getCallIntent(number, accountHandle);
+ return PrivilegedCallUtil.getCallIntent(number, accountHandle);
}
};
}
@@ -60,7 +68,7 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- return CallUtil.getVideoCallIntent(number, accountHandle);
+ return PrivilegedCallUtil.getVideoCallIntent(number, accountHandle);
}
};
}
@@ -69,7 +77,7 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- return CallUtil.getVoicemailIntent();
+ return PrivilegedCallUtil.getVoicemailIntent();
}
};
}
@@ -124,4 +132,68 @@ public abstract class IntentProvider {
}
};
}
+
+ /**
+ * Retrieves an add contact intent for the given contact and phone call details.
+ *
+ * @param info The contact info.
+ * @param details The phone call details.
+ */
+ public static IntentProvider getAddContactIntentProvider(
+ final ContactInfo info, final PhoneCallDetails details) {
+ return new IntentProvider() {
+ @Override
+ public Intent getIntent(Context context) {
+ Contact contactToSave = null;
+
+ if (info.lookupUri != null) {
+ contactToSave = ContactLoader.parseEncodedContactEntity(info.lookupUri);
+ }
+
+ if (contactToSave != null) {
+ // Populate the intent with contact information stored in the lookup URI.
+ // Note: This code mirrors code in Contacts/QuickContactsActivity.
+ final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
+ intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
+
+ ArrayList<ContentValues> values = contactToSave.getContentValues();
+ // Only pre-fill the name field if the provided display name is an nickname
+ // or better (e.g. structured name, nickname)
+ if (contactToSave.getDisplayNameSource()
+ >= ContactsContract.DisplayNameSources.NICKNAME) {
+ intent.putExtra(ContactsContract.Intents.Insert.NAME,
+ contactToSave.getDisplayName());
+ } else if (contactToSave.getDisplayNameSource()
+ == ContactsContract.DisplayNameSources.ORGANIZATION) {
+ // This is probably an organization. Instead of copying the organization
+ // name into a name entry, copy it into the organization entry. This
+ // way we will still consider the contact an organization.
+ final ContentValues organization = new ContentValues();
+ organization.put(ContactsContract.CommonDataKinds.Organization.COMPANY,
+ contactToSave.getDisplayName());
+ organization.put(ContactsContract.Data.MIMETYPE,
+ ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
+ values.add(organization);
+ }
+
+ // Last time used and times used are aggregated values from the usage stat
+ // table. They need to be removed from data values so the SQL table can insert
+ // properly
+ for (ContentValues value : values) {
+ value.remove(ContactsContract.Data.LAST_TIME_USED);
+ value.remove(ContactsContract.Data.TIMES_USED);
+ }
+
+ intent.putExtra(ContactsContract.Intents.Insert.DATA, values);
+
+ return intent;
+ } else {
+ // If no lookup uri is provided, rely on the available phone number and name.
+ return DialtactsActivity.getAddToContactIntent(details.name,
+ details.number,
+ details.numberType);
+ }
+ }
+ };
+ }
}
diff --git a/src/com/android/dialer/calllog/PhoneNumberDisplayHelper.java b/src/com/android/dialer/calllog/PhoneNumberDisplayHelper.java
index 0dffd868a..c1a5abfe1 100644
--- a/src/com/android/dialer/calllog/PhoneNumberDisplayHelper.java
+++ b/src/com/android/dialer/calllog/PhoneNumberDisplayHelper.java
@@ -75,7 +75,6 @@ public class PhoneNumberDisplayHelper {
*/
public CharSequence getDisplayNumber(PhoneAccountHandle accountHandle, CharSequence number,
int presentation, CharSequence formattedNumber) {
-
final CharSequence displayName = getDisplayName(accountHandle, number, presentation);
if (!TextUtils.isEmpty(displayName)) {
return displayName;
diff --git a/src/com/android/dialer/contactinfo/ContactInfoCache.java b/src/com/android/dialer/contactinfo/ContactInfoCache.java
new file mode 100644
index 000000000..2bb0f1e95
--- /dev/null
+++ b/src/com/android/dialer/contactinfo/ContactInfoCache.java
@@ -0,0 +1,342 @@
+/*
+ * Copyright (C) 2015 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.contactinfo;
+
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+
+import com.android.dialer.calllog.ContactInfo;
+import com.android.dialer.calllog.ContactInfoHelper;
+import com.android.dialer.util.ExpirableCache;
+import com.google.common.annotations.VisibleForTesting;
+
+import java.util.LinkedList;
+
+/**
+ * This is a cache of contact details for the phone numbers in the c all log. The key is the
+ * phone number with the country in which teh call was placed or received. The content of the
+ * cache is expired (but not purged) whenever the application comes to the foreground.
+ *
+ * This cache queues request for information and queries for information on a background thread,
+ * so {@code start()} and {@code stop()} must be called to initiate or halt that thread's exeuction
+ * as needed.
+ *
+ * TODO: Explore whether there is a pattern to remove external dependencies for starting and
+ * stopping the query thread.
+ */
+public class ContactInfoCache {
+ public interface OnContactInfoChangedListener {
+ public void onContactInfoChanged();
+ }
+
+ /*
+ * Handles requests for contact name and number type.
+ */
+ private class QueryThread extends Thread {
+ private volatile boolean mDone = false;
+
+ public QueryThread() {
+ super("CallLogAdapter.QueryThread");
+ }
+
+ public void stopProcessing() {
+ mDone = true;
+ }
+
+ @Override
+ public void run() {
+ boolean needRedraw = false;
+ while (true) {
+ // Check if thread is finished, and if so return immediately.
+ if (mDone) return;
+
+ // Obtain next request, if any is available.
+ // Keep synchronized section small.
+ ContactInfoRequest req = null;
+ synchronized (mRequests) {
+ if (!mRequests.isEmpty()) {
+ req = mRequests.removeFirst();
+ }
+ }
+
+ if (req != null) {
+ // Process the request. If the lookup succeeds, schedule a redraw.
+ needRedraw |= queryContactInfo(req.number, req.countryIso, req.callLogInfo);
+ } else {
+ // Throttle redraw rate by only sending them when there are
+ // more requests.
+ if (needRedraw) {
+ needRedraw = false;
+ mHandler.sendEmptyMessage(REDRAW);
+ }
+
+ // Wait until another request is available, or until this
+ // thread is no longer needed (as indicated by being
+ // interrupted).
+ try {
+ synchronized (mRequests) {
+ mRequests.wait(1000);
+ }
+ } catch (InterruptedException ie) {
+ // Ignore, and attempt to continue processing requests.
+ }
+ }
+ }
+ }
+ }
+
+ private Handler mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case REDRAW:
+ mOnContactInfoChangedListener.onContactInfoChanged();
+ break;
+ case START_THREAD:
+ startRequestProcessing();
+ break;
+ }
+ }
+ };
+
+ private static final int REDRAW = 1;
+ private static final int START_THREAD = 2;
+
+ private static final int CONTACT_INFO_CACHE_SIZE = 100;
+ private static final int START_PROCESSING_REQUESTS_DELAY_MS = 1000;
+
+
+ /**
+ * List of requests to update contact details. Each request contains a phone number to look up,
+ * and the contact info currently stored in the call log for this number.
+ *
+ * The requests are added when displaying contacts and are processed by a background thread.
+ */
+ private final LinkedList<ContactInfoRequest> mRequests;
+
+ private ExpirableCache<NumberWithCountryIso, ContactInfo> mCache;
+
+ private ContactInfoHelper mContactInfoHelper;
+ private QueryThread mContactInfoQueryThread;
+ private OnContactInfoChangedListener mOnContactInfoChangedListener;
+
+ public ContactInfoCache(ContactInfoHelper contactInfoHelper,
+ OnContactInfoChangedListener onContactInfoChangedListener) {
+ mContactInfoHelper = contactInfoHelper;
+ mOnContactInfoChangedListener = onContactInfoChangedListener;
+
+ mRequests = new LinkedList<ContactInfoRequest>();
+ mCache = ExpirableCache.create(CONTACT_INFO_CACHE_SIZE);
+ }
+
+ public ContactInfo getValue(String number, String countryIso, ContactInfo cachedContactInfo) {
+ NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
+ ExpirableCache.CachedValue<ContactInfo> cachedInfo =
+ mCache.getCachedValue(numberCountryIso);
+ ContactInfo info = cachedInfo == null ? null : cachedInfo.getValue();
+ if (cachedInfo == null) {
+ mCache.put(numberCountryIso, ContactInfo.EMPTY);
+ // Use the cached contact info from the call log.
+ info = cachedContactInfo;
+ // The db request should happen on a non-UI thread.
+ // Request the contact details immediately since they are currently missing.
+ enqueueRequest(number, countryIso, cachedContactInfo, true);
+ // We will format the phone number when we make the background request.
+ } else {
+ if (cachedInfo.isExpired()) {
+ // The contact info is no longer up to date, we should request it. However, we
+ // do not need to request them immediately.
+ enqueueRequest(number, countryIso, cachedContactInfo, false);
+ } else if (!callLogInfoMatches(cachedContactInfo, info)) {
+ // The call log information does not match the one we have, look it up again.
+ // We could simply update the call log directly, but that needs to be done in a
+ // background thread, so it is easier to simply request a new lookup, which will, as
+ // a side-effect, update the call log.
+ enqueueRequest(number, countryIso, cachedContactInfo, false);
+ }
+
+ if (info == ContactInfo.EMPTY) {
+ // Use the cached contact info from the call log.
+ info = cachedContactInfo;
+ }
+ }
+ return info;
+ }
+
+ /**
+ * Queries the appropriate content provider for the contact associated with the number.
+ *
+ * Upon completion it also updates the cache in the call log, if it is different from
+ * {@code callLogInfo}.
+ *
+ * The number might be either a SIP address or a phone number.
+ *
+ * It returns true if it updated the content of the cache and we should therefore tell the
+ * view to update its content.
+ */
+ private boolean queryContactInfo(String number, String countryIso, ContactInfo callLogInfo) {
+ final ContactInfo info = mContactInfoHelper.lookupNumber(number, countryIso);
+
+ if (info == null) {
+ // The lookup failed, just return without requesting to update the view.
+ return false;
+ }
+
+ // Check the existing entry in the cache: only if it has changed we should update the
+ // view.
+ NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
+ ContactInfo existingInfo = mCache.getPossiblyExpired(numberCountryIso);
+
+ final boolean isRemoteSource = info.sourceType != 0;
+
+ // Don't force redraw if existing info in the cache is equal to {@link ContactInfo#EMPTY}
+ // to avoid updating the data set for every new row that is scrolled into view.
+ // see (https://googleplex-android-review.git.corp.google.com/#/c/166680/)
+
+ // Exception: Photo uris for contacts from remote sources are not cached in the call log
+ // cache, so we have to force a redraw for these contacts regardless.
+ boolean updated = (existingInfo != ContactInfo.EMPTY || isRemoteSource) &&
+ !info.equals(existingInfo);
+
+ // Store the data in the cache so that the UI thread can use to display it. Store it
+ // even if it has not changed so that it is marked as not expired.
+ mCache.put(numberCountryIso, info);
+
+ // Update the call log even if the cache it is up-to-date: it is possible that the cache
+ // contains the value from a different call log entry.
+ mContactInfoHelper.updateCallLogContactInfo(number, countryIso, info, callLogInfo);
+ return updated;
+ }
+
+ /**
+ * After a delay, start the thread to begin processing requests. We perform lookups on a
+ * background thread, but this must be called to indicate the thread should be running.
+ */
+ public void start() {
+ // Schedule a thread-creation message if the thread hasn't been created yet, as an
+ // optimization to queue fewer messages.
+ if (mContactInfoQueryThread == null) {
+ // TODO: Check whether this delay before starting to process is necessary.
+ mHandler.sendEmptyMessageDelayed(START_THREAD, START_PROCESSING_REQUESTS_DELAY_MS);
+ }
+ }
+
+ /**
+ * Stops the thread and clears the queue of messages to process. This cleans up the thread
+ * for lookups so that it is not perpetually running.
+ */
+ public void stop() {
+ stopRequestProcessing();
+ }
+
+ /**
+ * Starts a background thread to process contact-lookup requests, unless one
+ * has already been started.
+ */
+ private synchronized void startRequestProcessing() {
+ // For unit-testing.
+ if (mRequestProcessingDisabled) return;
+
+ // If a thread is already started, don't start another.
+ if (mContactInfoQueryThread != null) {
+ return;
+ }
+
+ mContactInfoQueryThread = new QueryThread();
+ mContactInfoQueryThread.setPriority(Thread.MIN_PRIORITY);
+ mContactInfoQueryThread.start();
+ }
+
+ public void invalidate() {
+ mCache.expireAll();
+ stopRequestProcessing();
+ }
+
+ /**
+ * Stops the background thread that processes updates and cancels any
+ * pending requests to start it.
+ */
+ private synchronized void stopRequestProcessing() {
+ // Remove any pending requests to start the processing thread.
+ mHandler.removeMessages(START_THREAD);
+ if (mContactInfoQueryThread != null) {
+ // Stop the thread; we are finished with it.
+ mContactInfoQueryThread.stopProcessing();
+ mContactInfoQueryThread.interrupt();
+ mContactInfoQueryThread = null;
+ }
+ }
+
+ /**
+ * Enqueues a request to look up the contact details for the given phone number.
+ * <p>
+ * It also provides the current contact info stored in the call log for this number.
+ * <p>
+ * If the {@code immediate} parameter is true, it will start immediately the thread that looks
+ * 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}.
+ */
+ protected void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
+ boolean immediate) {
+ ContactInfoRequest request = new ContactInfoRequest(number, countryIso, callLogInfo);
+ synchronized (mRequests) {
+ if (!mRequests.contains(request)) {
+ mRequests.add(request);
+ mRequests.notifyAll();
+ }
+ }
+ if (immediate) {
+ startRequestProcessing();
+ }
+ }
+
+ /**
+ * Checks whether the contact info from the call log matches the one from the contacts db.
+ */
+ private boolean callLogInfoMatches(ContactInfo callLogInfo, ContactInfo info) {
+ // The call log only contains a subset of the fields in the contacts db.
+ // Only check those.
+ return TextUtils.equals(callLogInfo.name, info.name)
+ && callLogInfo.type == info.type
+ && TextUtils.equals(callLogInfo.label, info.label);
+ }
+
+ /**
+ * Can be set to true by tests to disable processing of requests.
+ */
+ @VisibleForTesting
+ private volatile boolean mRequestProcessingDisabled = false;
+
+ /**
+ * Sets whether processing of requests for contact details should be enabled.
+ *
+ * This method should be called in tests to disable such processing of requests when not
+ * needed.
+ */
+ @VisibleForTesting
+ public void disableRequestProcessingForTest() {
+ mRequestProcessingDisabled = true;
+ }
+
+ @VisibleForTesting
+ public void injectContactInfoForTest(
+ String number, String countryIso, ContactInfo contactInfo) {
+ NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
+ mCache.put(numberCountryIso, contactInfo);
+ }
+}
diff --git a/src/com/android/dialer/contactinfo/ContactInfoRequest.java b/src/com/android/dialer/contactinfo/ContactInfoRequest.java
new file mode 100644
index 000000000..ec5c1198e
--- /dev/null
+++ b/src/com/android/dialer/contactinfo/ContactInfoRequest.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2015 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.contactinfo;
+
+import android.text.TextUtils;
+
+import com.android.dialer.calllog.ContactInfo;
+import com.google.common.base.Objects;
+
+/**
+ * A request for contact details for the given number, used by the ContactInfoCache.
+ */
+public final class ContactInfoRequest {
+ /** The number to look-up. */
+ public final String number;
+ /** The country in which a call to or from this number was placed or received. */
+ public final String countryIso;
+ /** The cached contact information stored in the call log. */
+ public final ContactInfo callLogInfo;
+
+ public ContactInfoRequest(String number, String countryIso, ContactInfo callLogInfo) {
+ this.number = number;
+ this.countryIso = countryIso;
+ this.callLogInfo = callLogInfo;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null) return false;
+ if (!(obj instanceof ContactInfoRequest)) return false;
+
+ ContactInfoRequest other = (ContactInfoRequest) obj;
+
+ if (!TextUtils.equals(number, other.number)) return false;
+ if (!TextUtils.equals(countryIso, other.countryIso)) return false;
+ if (!Objects.equal(callLogInfo, other.callLogInfo)) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((callLogInfo == null) ? 0 : callLogInfo.hashCode());
+ result = prime * result + ((countryIso == null) ? 0 : countryIso.hashCode());
+ result = prime * result + ((number == null) ? 0 : number.hashCode());
+ return result;
+ }
+}
diff --git a/src/com/android/dialer/contactinfo/NumberWithCountryIso.java b/src/com/android/dialer/contactinfo/NumberWithCountryIso.java
new file mode 100644
index 000000000..1383fb7e9
--- /dev/null
+++ b/src/com/android/dialer/contactinfo/NumberWithCountryIso.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2015 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.contactinfo;
+
+import android.text.TextUtils;
+
+/**
+ * Stores a phone number of a call with the country code where it originally occurred. This object
+ * is used as a key in the {@code ContactInfoCache}.
+ *
+ * The country does not necessarily specify the country of the phone number itself, but rather
+ * it is the country in which the user was in when the call was placed or received.
+ */
+public final class NumberWithCountryIso {
+ public final String number;
+ public final String countryIso;
+
+ public NumberWithCountryIso(String number, String countryIso) {
+ this.number = number;
+ this.countryIso = countryIso;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == null) return false;
+ if (!(o instanceof NumberWithCountryIso)) return false;
+ NumberWithCountryIso other = (NumberWithCountryIso) o;
+ return TextUtils.equals(number, other.number)
+ && TextUtils.equals(countryIso, other.countryIso);
+ }
+
+ @Override
+ public int hashCode() {
+ int numberHashCode = number == null ? 0 : number.hashCode();
+ int countryHashCode = countryIso == null ? 0 : countryIso.hashCode();
+
+ return numberHashCode ^ countryHashCode;
+ }
+}
diff --git a/src/com/android/dialer/database/DialerDatabaseHelper.java b/src/com/android/dialer/database/DialerDatabaseHelper.java
index 511c2a7bc..2177878c6 100644
--- a/src/com/android/dialer/database/DialerDatabaseHelper.java
+++ b/src/com/android/dialer/database/DialerDatabaseHelper.java
@@ -93,6 +93,9 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
static final String PROPERTIES = "properties";
}
+ public static final Uri SMART_DIAL_UPDATED_URI =
+ Uri.parse("content://com.android.dialer/smart_dial_updated");
+
public interface SmartDialDbColumns {
static final String _ID = "id";
static final String DATA_ID = "data_id";
@@ -893,6 +896,9 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
final SharedPreferences.Editor editor = databaseLastUpdateSharedPref.edit();
editor.putLong(LAST_UPDATED_MILLIS, currentMillis);
editor.commit();
+
+ // Notify content observers that smart dial database has been updated.
+ mContext.getContentResolver().notifyChange(SMART_DIAL_UPDATED_URI, null, false);
}
}
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index f1112f175..a910f7a1e 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -36,6 +36,7 @@ import android.media.AudioManager;
import android.media.ToneGenerator;
import android.net.Uri;
import android.os.Bundle;
+import android.os.Trace;
import android.provider.Contacts.People;
import android.provider.Contacts.Phones;
import android.provider.Contacts.PhonesColumns;
@@ -44,13 +45,10 @@ import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telephony.PhoneNumberUtils;
-import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.text.Editable;
-import android.text.SpannableString;
import android.text.TextUtils;
import android.text.TextWatcher;
-import android.text.style.RelativeSizeSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
@@ -70,7 +68,6 @@ import android.widget.PopupMenu;
import android.widget.RelativeLayout;
import android.widget.TextView;
-import com.android.contacts.common.CallUtil;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.GeoUtil;
import com.android.contacts.common.util.PhoneNumberFormatter;
@@ -81,6 +78,7 @@ import com.android.dialer.NeededForReflection;
import com.android.dialer.R;
import com.android.dialer.SpecialCharSequenceMgr;
import com.android.dialer.calllog.PhoneAccountUtils;
+import com.android.dialer.util.PrivilegedCallUtil;
import com.android.dialer.util.DialerUtils;
import com.android.phone.common.CallLogAsync;
import com.android.phone.common.HapticFeedback;
@@ -102,7 +100,7 @@ public class DialpadFragment extends Fragment
AdapterView.OnItemClickListener, TextWatcher,
PopupMenu.OnMenuItemClickListener,
DialpadKeyButton.OnPressedListener {
- private static final String TAG = DialpadFragment.class.getSimpleName();
+ private static final String TAG = "DialpadFragment";
/**
* LinearLayout with getter and setter methods for the translationY property using floats,
@@ -260,8 +258,6 @@ public class DialpadFragment extends Fragment
private boolean mFirstLaunch = false;
private boolean mAnimate = false;
- private ComponentName mSmsPackageComponentName;
-
private static final String PREF_DIGITS_FILLED_BY_INTENT = "pref_digits_filled_by_intent";
private TelephonyManager getTelephonyManager() {
@@ -315,8 +311,11 @@ public class DialpadFragment extends Fragment
@Override
public void onCreate(Bundle state) {
+ Trace.beginSection(TAG + " onCreate");
super.onCreate(state);
- mFirstLaunch = true;
+
+ mFirstLaunch = state == null;
+
mCurrentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
try {
@@ -341,15 +340,21 @@ public class DialpadFragment extends Fragment
mCallStateReceiver = new CallStateReceiver();
((Context) getActivity()).registerReceiver(mCallStateReceiver, callStateIntentFilter);
}
+ Trace.endSection();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
+ Trace.beginSection(TAG + " onCreateView");
+ Trace.beginSection(TAG + " inflate view");
final View fragmentView = inflater.inflate(R.layout.dialpad_fragment, container,
false);
+ Trace.endSection();
+ Trace.beginSection(TAG + " buildLayer");
fragmentView.buildLayer();
+ Trace.endSection();
- Resources r = getResources();
+ Trace.beginSection(TAG + " setup views");
mDialpadView = (DialpadView) fragmentView.findViewById(R.id.dialpad_view);
mDialpadView.setCanDigitsBeEdited(true);
@@ -399,7 +404,8 @@ public class DialpadFragment extends Fragment
floatingActionButton.setOnClickListener(this);
mFloatingActionButtonController = new FloatingActionButtonController(getActivity(),
floatingActionButtonContainer, floatingActionButton);
-
+ Trace.endSection();
+ Trace.endSection();
return fragmentView;
}
@@ -582,6 +588,7 @@ public class DialpadFragment extends Fragment
@Override
public void onStart() {
+ Trace.beginSection(TAG + " onStart");
super.onStart();
// if the mToneGenerator creation fails, just continue without it. It is
// a local audio signal, and is not as important as the dtmf tone itself.
@@ -600,10 +607,12 @@ public class DialpadFragment extends Fragment
if (total > 50) {
Log.i(TAG, "Time for ToneGenerator creation: " + total);
}
+ Trace.endSection();
};
@Override
public void onResume() {
+ Trace.beginSection(TAG + " onResume");
super.onResume();
final DialtactsActivity activity = (DialtactsActivity) getActivity();
@@ -641,8 +650,6 @@ public class DialpadFragment extends Fragment
showDialpadChooser(false);
}
- mFirstLaunch = false;
-
stopWatch.lap("hnt");
updateDeleteButtonEnabledState();
@@ -651,8 +658,6 @@ public class DialpadFragment extends Fragment
stopWatch.stopAndLog(TAG, 50);
- mSmsPackageComponentName = DialerUtils.getSmsComponent(activity);
-
// Populate the overflow menu in onResume instead of onCreate, so that if the SMS activity
// is disabled while Dialer is paused, the "Send a text message" option can be correctly
// removed when resumed.
@@ -661,6 +666,15 @@ public class DialpadFragment extends Fragment
mOverflowMenuButton.setOnTouchListener(mOverflowPopupMenu.getDragToOpenListener());
mOverflowMenuButton.setOnClickListener(this);
mOverflowMenuButton.setVisibility(isDigitsEmpty() ? View.INVISIBLE : View.VISIBLE);
+
+ if (mFirstLaunch) {
+ // The onHiddenChanged callback does not get called the first time the fragment is
+ // attached, so call it ourselves here.
+ onHiddenChanged(false);
+ }
+
+ mFirstLaunch = false;
+ Trace.endSection();
}
@Override
@@ -860,8 +874,6 @@ public class DialpadFragment extends Fragment
@Override
public void show() {
final Menu menu = getMenu();
- final MenuItem sendMessage = menu.findItem(R.id.menu_send_message);
- sendMessage.setVisible(mSmsPackageComponentName != null);
boolean enable = !isDigitsEmpty();
for (int i = 0; i < menu.size(); i++) {
@@ -988,7 +1000,8 @@ public class DialpadFragment extends Fragment
}
public void callVoicemail() {
- DialerUtils.startActivityWithErrorToast(getActivity(), CallUtil.getVoicemailIntent());
+ DialerUtils.startActivityWithErrorToast(getActivity(), PrivilegedCallUtil
+ .getVoicemailIntent());
hideAndClearDialpad(false);
}
@@ -1084,7 +1097,7 @@ public class DialpadFragment extends Fragment
// Clear the digits just in case.
clearDialpad();
} else {
- final Intent intent = CallUtil.getCallIntent(number,
+ final Intent intent = PrivilegedCallUtil.getCallIntent(number,
(getActivity() instanceof DialtactsActivity ?
((DialtactsActivity) getActivity()).getCallOrigin() : null));
DialerUtils.startActivityWithErrorToast(getActivity(), intent);
@@ -1430,26 +1443,12 @@ public class DialpadFragment extends Fragment
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
- case R.id.menu_add_contact: {
- final CharSequence digits = mDigits.getText();
- DialerUtils.startActivityWithErrorToast(getActivity(),
- DialtactsActivity.getAddNumberToContactIntent(digits));
- return true;
- }
case R.id.menu_2s_pause:
updateDialString(PAUSE);
return true;
case R.id.menu_add_wait:
updateDialString(WAIT);
return true;
- case R.id.menu_send_message: {
- final CharSequence digits = mDigits.getText();
- final Intent smsIntent = new Intent(Intent.ACTION_SENDTO,
- Uri.fromParts(ContactsUtils.SCHEME_SMSTO, digits.toString(), null));
- smsIntent.setComponent(mSmsPackageComponentName);
- DialerUtils.startActivityWithErrorToast(getActivity(), smsIntent);
- return true;
- }
default:
return false;
}
@@ -1614,7 +1613,7 @@ public class DialpadFragment extends Fragment
}
private Intent newFlashIntent() {
- final Intent intent = CallUtil.getCallIntent(EMPTY_NUMBER);
+ final Intent intent = PrivilegedCallUtil.getCallIntent(EMPTY_NUMBER);
intent.putExtra(EXTRA_SEND_EMPTY_FLASH, true);
return intent;
}
diff --git a/src/com/android/dialer/dialpad/SmartDialCursorLoader.java b/src/com/android/dialer/dialpad/SmartDialCursorLoader.java
index d01776c61..372692eae 100644
--- a/src/com/android/dialer/dialpad/SmartDialCursorLoader.java
+++ b/src/com/android/dialer/dialpad/SmartDialCursorLoader.java
@@ -18,8 +18,10 @@ package com.android.dialer.dialpad;
import android.content.AsyncTaskLoader;
import android.content.Context;
+import android.content.Loader.ForceLoadContentObserver;
import android.database.Cursor;
import android.database.MatrixCursor;
+import android.net.Uri;
import android.util.Log;
import com.android.contacts.common.list.PhoneNumberListAdapter.PhoneQuery;
@@ -44,6 +46,8 @@ public class SmartDialCursorLoader extends AsyncTaskLoader<Cursor> {
private String mQuery;
private SmartDialNameMatcher mNameMatcher;
+ private ForceLoadContentObserver mObserver;
+
public SmartDialCursorLoader(Context context) {
super(context);
mContext = context;
@@ -110,6 +114,12 @@ public class SmartDialCursorLoader extends AsyncTaskLoader<Cursor> {
Cursor oldCursor = mCursor;
mCursor = cursor;
+ if (mObserver == null) {
+ mObserver = new ForceLoadContentObserver();
+ mContext.getContentResolver().registerContentObserver(
+ DialerDatabaseHelper.SMART_DIAL_UPDATED_URI, true, mObserver);
+ }
+
if (isStarted()) {
/** If the Loader is in a started state, deliver the results to the client. */
super.deliverResult(cursor);
@@ -144,6 +154,11 @@ public class SmartDialCursorLoader extends AsyncTaskLoader<Cursor> {
/** Ensure the loader has been stopped. */
onStopLoading();
+ if (mObserver != null) {
+ mContext.getContentResolver().unregisterContentObserver(mObserver);
+ mObserver = null;
+ }
+
/** Release all previously saved query results. */
if (mCursor != null) {
releaseResources(mCursor);
@@ -155,6 +170,11 @@ public class SmartDialCursorLoader extends AsyncTaskLoader<Cursor> {
public void onCanceled(Cursor cursor) {
super.onCanceled(cursor);
+ if (mObserver != null) {
+ mContext.getContentResolver().unregisterContentObserver(mObserver);
+ mObserver = null;
+ }
+
/** The load has been canceled, so we should release the resources associated with 'data'.*/
releaseResources(cursor);
}
diff --git a/src/com/android/dialer/interactions/PhoneNumberInteraction.java b/src/com/android/dialer/interactions/PhoneNumberInteraction.java
index de217ce7b..78c468bbc 100644
--- a/src/com/android/dialer/interactions/PhoneNumberInteraction.java
+++ b/src/com/android/dialer/interactions/PhoneNumberInteraction.java
@@ -45,7 +45,6 @@ import android.widget.CheckBox;
import android.widget.ListAdapter;
import android.widget.TextView;
-import com.android.contacts.common.CallUtil;
import com.android.contacts.common.Collapser;
import com.android.contacts.common.Collapser.Collapsible;
import com.android.contacts.common.MoreContactUtils;
@@ -53,6 +52,7 @@ import com.android.contacts.common.activity.TransactionSafeActivity;
import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.dialer.R;
import com.android.dialer.contact.ContactUpdateService;
+import com.android.dialer.util.PrivilegedCallUtil;
import com.android.dialer.util.DialerUtils;
import com.google.common.annotations.VisibleForTesting;
@@ -322,7 +322,7 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> {
Intent.ACTION_SENDTO, Uri.fromParts("sms", phoneNumber, null));
break;
default:
- intent = CallUtil.getCallIntent(phoneNumber, callOrigin);
+ intent = PrivilegedCallUtil.getCallIntent(phoneNumber, callOrigin);
break;
}
DialerUtils.startActivityWithErrorToast(context, intent);
diff --git a/src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java b/src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java
index 6d74cd0f7..960a31bc3 100644
--- a/src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java
+++ b/src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java
@@ -30,6 +30,8 @@ import android.text.TextUtils;
/**
* This broadcast receiver is used to listen to outgoing calls and undemote formerly demoted
* contacts if a phone call is made to a phone number belonging to that contact.
+ *
+ * NOTE This doesn't work for corp contacts.
*/
public class UndemoteOutgoingCallReceiver extends BroadcastReceiver {
diff --git a/src/com/android/dialer/list/AllContactsFragment.java b/src/com/android/dialer/list/AllContactsFragment.java
index deabb80b9..94efc4869 100644
--- a/src/com/android/dialer/list/AllContactsFragment.java
+++ b/src/com/android/dialer/list/AllContactsFragment.java
@@ -18,6 +18,7 @@ package com.android.dialer.list;
import android.database.Cursor;
import android.net.Uri;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.QuickContact;
import android.view.LayoutInflater;
import android.view.View;
@@ -83,7 +84,8 @@ public class AllContactsFragment extends ContactEntryListFragment<ContactEntryLi
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final Uri uri = (Uri) view.getTag();
if (uri != null) {
- QuickContact.showQuickContact(getActivity(), view, uri, QuickContact.MODE_LARGE, null);
+ QuickContact.showQuickContact(getContext(), view, uri, null,
+ Phone.CONTENT_ITEM_TYPE);
}
}
diff --git a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
index da4f4a4c9..82daab5aa 100644
--- a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
+++ b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
@@ -27,10 +27,12 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
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_MAKE_VIDEO_CALL = 2;
+ public final static int SHORTCUT_CREATE_NEW_CONTACT = 1;
+ public final static int SHORTCUT_ADD_TO_EXISTING_CONTACT = 2;
+ public final static int SHORTCUT_SEND_SMS_MESSAGE = 3;
+ public final static int SHORTCUT_MAKE_VIDEO_CALL = 4;
- public final static int SHORTCUT_COUNT = 3;
+ public final static int SHORTCUT_COUNT = 5;
private final boolean[] mShortcutEnabled = new boolean[SHORTCUT_COUNT];
@@ -142,10 +144,18 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
text = resources.getString(R.string.search_shortcut_call_number, number);
drawableId = R.drawable.ic_search_phone;
break;
- case SHORTCUT_ADD_NUMBER_TO_CONTACTS:
- text = resources.getString(R.string.search_shortcut_add_to_contacts);
+ case SHORTCUT_CREATE_NEW_CONTACT:
+ text = resources.getString(R.string.search_shortcut_create_new_contact);
drawableId = R.drawable.ic_search_add_contact;
break;
+ case SHORTCUT_ADD_TO_EXISTING_CONTACT:
+ text = resources.getString(R.string.search_shortcut_add_to_existing_contact);
+ drawableId = R.drawable.ic_person_24dp;
+ break;
+ case SHORTCUT_SEND_SMS_MESSAGE:
+ text = resources.getString(R.string.search_shortcut_send_sms_message);
+ drawableId = R.drawable.ic_textsms_24dp;
+ break;
case SHORTCUT_MAKE_VIDEO_CALL:
text = resources.getString(R.string.search_shortcut_make_video_call);
drawableId = R.drawable.ic_videocam;
@@ -153,7 +163,7 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
default:
throw new IllegalArgumentException("Invalid shortcut type");
}
- v.setDrawableResource(R.drawable.search_shortcut_background, drawableId);
+ v.setDrawableResource(drawableId);
v.setDisplayName(text);
v.setPhotoPosition(super.getPhotoPosition());
v.setAdjustSelectionBoundsEnabled(false);
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index af82e4075..f22a5d19c 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -8,6 +8,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.os.Bundle;
+import android.os.Trace;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
@@ -23,16 +24,11 @@ import com.android.contacts.common.list.ViewPagerTabs;
import com.android.contacts.commonbind.analytics.AnalyticsUtil;
import com.android.dialer.DialtactsActivity;
import com.android.dialer.R;
-import com.android.dialer.calllog.CallLogAdapter;
import com.android.dialer.calllog.CallLogFragment;
-import com.android.dialer.calllog.CallLogQuery;
import com.android.dialer.calllog.CallLogQueryHandler;
import com.android.dialer.calllog.ContactInfoHelper;
-import com.android.dialer.list.ShortcutCardsAdapter.SwipeableShortcutCard;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.widget.ActionBarController;
-import com.android.dialer.widget.OverlappingPaneLayout;
-import com.android.dialer.widget.OverlappingPaneLayout.PanelSlideCallbacks;
import com.android.dialerbind.ObjectFactory;
import java.util.ArrayList;
@@ -42,11 +38,10 @@ import java.util.ArrayList;
*
* Contains a ViewPager that contains various contact lists like the Speed Dial list and the
* All Contacts list. This will also eventually contain the logic that allows sliding the
- * ViewPager containing the lists up above the shortcut cards and pin it against the top of the
+ * ViewPager containing the lists up above the search bar and pin it against the top of the
* screen.
*/
-public class ListsFragment extends Fragment implements CallLogQueryHandler.Listener,
- CallLogAdapter.CallFetcher, ViewPager.OnPageChangeListener {
+public class ListsFragment extends Fragment implements ViewPager.OnPageChangeListener {
private static final boolean DEBUG = DialtactsActivity.DEBUG;
private static final String TAG = "ListsFragment";
@@ -64,9 +59,6 @@ public class ListsFragment extends Fragment implements CallLogQueryHandler.Liste
private static final String KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE =
"key_last_dismissed_call_shortcut_date";
- public static final float REMOVE_VIEW_SHOWN_ALPHA = 0.5f;
- public static final float REMOVE_VIEW_HIDDEN_ALPHA = 1;
-
public interface HostInterface {
public void showCallHistory();
public ActionBarController getActionBarController();
@@ -76,7 +68,6 @@ public class ListsFragment extends Fragment implements CallLogQueryHandler.Liste
private ViewPager mViewPager;
private ViewPagerTabs mViewPagerTabs;
private ViewPagerAdapter mViewPagerAdapter;
- private ListView mShortcutCardsListView;
private RemoveView mRemoveView;
private View mRemoveViewContent;
private SpeedDialFragment mSpeedDialFragment;
@@ -86,13 +77,7 @@ public class ListsFragment extends Fragment implements CallLogQueryHandler.Liste
new ArrayList<OnPageChangeListener>();
private String[] mTabTitles;
-
- private ShortcutCardsAdapter mMergedAdapter;
- private CallLogAdapter mCallLogAdapter;
- private CallLogQueryHandler mCallLogQueryHandler;
- private OverlappingPaneLayout mOverlappingPaneLayout;
-
- private boolean mIsPanelOpen = true;
+ private int[] mTabIcons;
/**
* Call shortcuts older than this date (persisted in shared preferences) will not show up in
@@ -105,80 +90,6 @@ public class ListsFragment extends Fragment implements CallLogQueryHandler.Liste
*/
private long mCurrentCallShortcutDate = 0;
- private PanelSlideCallbacks mPanelSlideCallbacks = new PanelSlideCallbacks() {
- @Override
- public void onPanelSlide(View panel, float slideOffset) {
- // For every 1 percent that the panel is slid upwards, clip 1 percent off the top
- // edge of the shortcut card, to achieve the animated effect of the shortcut card
- // being pushed out of view when the panel is slid upwards. slideOffset is 1 when
- // the shortcut card is fully exposed, and 0 when completely hidden.
- float ratioCardHidden = (1 - slideOffset);
- if (mShortcutCardsListView.getChildCount() > 0) {
- final SwipeableShortcutCard v =
- (SwipeableShortcutCard) mShortcutCardsListView.getChildAt(0);
- v.clipCard(ratioCardHidden);
- }
-
- if (mActionBar != null) {
- // Amount of available space that is not being hidden by the bottom pane
- final int topPaneHeight = (int) (slideOffset * mShortcutCardsListView.getHeight());
-
- final int availableActionBarHeight =
- Math.min(mActionBar.getHeight(), topPaneHeight);
- final ActionBarController controller =
- ((HostInterface) getActivity()).getActionBarController();
- controller.setHideOffset(mActionBar.getHeight() - availableActionBarHeight);
-
- if (!mActionBar.isShowing()) {
- mActionBar.show();
- }
- }
- }
-
- @Override
- public void onPanelOpened(View panel) {
- if (DEBUG) {
- Log.d(TAG, "onPanelOpened");
- }
- mIsPanelOpen = true;
- }
-
- @Override
- public void onPanelClosed(View panel) {
- if (DEBUG) {
- Log.d(TAG, "onPanelClosed");
- }
- mIsPanelOpen = false;
- }
-
- @Override
- public void onPanelFlingReachesEdge(int velocityY) {
- if (getCurrentListView() != null) {
- getCurrentListView().fling(velocityY);
- }
- }
-
- @Override
- public boolean isScrollableChildUnscrolled() {
- final AbsListView listView = getCurrentListView();
- return listView != null && (listView.getChildCount() == 0
- || listView.getChildAt(0).getTop() == listView.getPaddingTop());
- }
- };
-
- private AbsListView getCurrentListView() {
- final int position = mViewPager.getCurrentItem();
- switch (getRtlPosition(position)) {
- case TAB_INDEX_SPEED_DIAL:
- return mSpeedDialFragment == null ? null : mSpeedDialFragment.getListView();
- case TAB_INDEX_RECENTS:
- return mRecentsFragment == null ? null : mRecentsFragment.getListView();
- case TAB_INDEX_ALL_CONTACTS:
- return mAllContactsFragment == null ? null : mAllContactsFragment.getListView();
- }
- throw new IllegalStateException("No fragment at position " + position);
- }
-
public class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
@@ -198,7 +109,6 @@ public class ListsFragment extends Fragment implements CallLogQueryHandler.Liste
case TAB_INDEX_RECENTS:
mRecentsFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL,
MAX_RECENTS_ENTRIES, System.currentTimeMillis() - OLDEST_RECENTS_DATE);
- mRecentsFragment.setHasFooterView(true);
return mRecentsFragment;
case TAB_INDEX_ALL_CONTACTS:
mAllContactsFragment = new AllContactsFragment();
@@ -237,49 +147,38 @@ public class ListsFragment extends Fragment implements CallLogQueryHandler.Liste
@Override
public void onCreate(Bundle savedInstanceState) {
+ Trace.beginSection(TAG + " onCreate");
super.onCreate(savedInstanceState);
- mCallLogQueryHandler = new CallLogQueryHandler(getActivity().getContentResolver(),
- this, 1);
+ Trace.beginSection(TAG + " getCurrentCountryIso");
final String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
- mCallLogAdapter = ObjectFactory.newCallLogAdapter(getActivity(), this,
- new ContactInfoHelper(getActivity(), currentCountryIso), null, null, false);
+ Trace.endSection();
- mMergedAdapter = new ShortcutCardsAdapter(getActivity(), this, mCallLogAdapter);
+ Trace.endSection();
}
@Override
public void onResume() {
+ Trace.beginSection(TAG + " onResume");
super.onResume();
final SharedPreferences prefs = getActivity().getSharedPreferences(
DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
mLastCallShortcutDate = prefs.getLong(KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE, 0);
mActionBar = getActivity().getActionBar();
- fetchCalls();
- mCallLogAdapter.setLoading(true);
if (getUserVisibleHint()) {
sendScreenViewForPosition(mViewPager.getCurrentItem());
}
- }
-
- @Override
- public void onPause() {
- // Wipe the cache to refresh the call shortcut item. This is not that expensive because
- // it only contains one item.
- mCallLogAdapter.invalidateCache();
- super.onPause();
- }
-
- @Override
- public void onDestroy() {
- mCallLogAdapter.stopRequestProcessing();
- super.onDestroy();
+ Trace.endSection();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
+ Trace.beginSection(TAG + " onCreateView");
+ Trace.beginSection(TAG + " inflate view");
final View parentView = inflater.inflate(R.layout.lists_fragment, container, false);
+ Trace.endSection();
+ Trace.beginSection(TAG + " setup views");
mViewPager = (ViewPager) parentView.findViewById(R.id.lists_pager);
mViewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());
mViewPager.setAdapter(mViewPagerAdapter);
@@ -292,61 +191,24 @@ public class ListsFragment extends Fragment implements CallLogQueryHandler.Liste
mTabTitles[TAB_INDEX_RECENTS] = getResources().getString(R.string.tab_recents);
mTabTitles[TAB_INDEX_ALL_CONTACTS] = getResources().getString(R.string.tab_all_contacts);
+ mTabIcons = new int[TAB_INDEX_COUNT];
+ mTabIcons[TAB_INDEX_SPEED_DIAL] = R.drawable.tab_speed_dial;
+ mTabIcons[TAB_INDEX_RECENTS] = R.drawable.tab_recents;
+ mTabIcons[TAB_INDEX_ALL_CONTACTS] = R.drawable.tab_contacts;
+
mViewPagerTabs = (ViewPagerTabs) parentView.findViewById(R.id.lists_pager_header);
+ mViewPagerTabs.setTabIcons(mTabIcons);
mViewPagerTabs.setViewPager(mViewPager);
addOnPageChangeListener(mViewPagerTabs);
- mShortcutCardsListView = (ListView) parentView.findViewById(R.id.shortcut_card_list);
- mShortcutCardsListView.setAdapter(mMergedAdapter);
-
mRemoveView = (RemoveView) parentView.findViewById(R.id.remove_view);
mRemoveViewContent = parentView.findViewById(R.id.remove_view_content);
- setupPaneLayout((OverlappingPaneLayout) parentView);
- mOverlappingPaneLayout = (OverlappingPaneLayout) parentView;
-
+ Trace.endSection();
+ Trace.endSection();
return parentView;
}
- @Override
- public void onVoicemailStatusFetched(Cursor statusCursor) {
- // no-op
- }
-
- @Override
- public boolean onCallsFetched(Cursor cursor) {
- 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);
- mMergedAdapter.notifyDataSetChanged();
-
- // Refresh the overlapping pane to ensure that any changes in the shortcut card height
- // are appropriately reflected in the overlap position.
- mOverlappingPaneLayout.refresh();
-
- // Return true; took ownership of cursor
- return true;
- }
-
- @Override
- public void fetchCalls() {
- mCallLogQueryHandler.fetchCalls(CallLogQueryHandler.CALL_TYPE_ALL, mLastCallShortcutDate);
- }
-
- public void dismissShortcut(View view) {
- mLastCallShortcutDate = mCurrentCallShortcutDate;
- final SharedPreferences prefs = view.getContext().getSharedPreferences(
- DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
- prefs.edit().putLong(KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE, mLastCallShortcutDate)
- .apply();
- fetchCalls();
- }
-
public void addOnPageChangeListener(OnPageChangeListener onPageChangeListener) {
if (!mOnPageChangeListeners.contains(onPageChangeListener)) {
mOnPageChangeListeners.add(onPageChangeListener);
@@ -383,36 +245,11 @@ public class ListsFragment extends Fragment implements CallLogQueryHandler.Liste
mRemoveViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
mRemoveView.setAlpha(show ? 0 : 1);
mRemoveView.animate().alpha(show ? 1 : 0).start();
-
- if (mShortcutCardsListView.getChildCount() > 0) {
- View v = mShortcutCardsListView.getChildAt(0);
- v.animate().withLayer()
- .alpha(show ? REMOVE_VIEW_SHOWN_ALPHA : REMOVE_VIEW_HIDDEN_ALPHA)
- .start();
- }
}
public boolean shouldShowActionBar() {
- return mIsPanelOpen && mActionBar != null;
- }
-
- public boolean isPaneOpen() {
- return mIsPanelOpen;
- }
-
- private void setupPaneLayout(OverlappingPaneLayout paneLayout) {
- // TODO: Remove the notion of a capturable view. The entire view be slideable, once
- // the framework better supports nested scrolling.
- paneLayout.setCapturableView(mViewPagerTabs);
- paneLayout.openPane();
- paneLayout.setPanelSlideCallbacks(mPanelSlideCallbacks);
- paneLayout.setIntermediatePinnedOffset(
- ((HostInterface) getActivity()).getActionBarController().getActionBarHeight());
-
- LayoutTransition transition = paneLayout.getLayoutTransition();
- // Turns on animations for all types of layout changes so that they occur for
- // height changes.
- transition.enableTransitionType(LayoutTransition.CHANGING);
+ // TODO: Update this based on scroll state.
+ return mActionBar != null;
}
public SpeedDialFragment getSpeedDialFragment() {
diff --git a/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java b/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java
index 5f8877616..05780c66a 100644
--- a/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java
@@ -17,6 +17,7 @@
package com.android.dialer.list;
import android.content.Context;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.QuickContact;
import android.util.AttributeSet;
import android.view.View;
@@ -63,7 +64,7 @@ public class PhoneFavoriteSquareTileView extends PhoneFavoriteTileView {
private void launchQuickContact() {
QuickContact.showQuickContact(getContext(), PhoneFavoriteSquareTileView.this,
- getLookupUri(), QuickContact.MODE_LARGE, null);
+ getLookupUri(), null, Phone.CONTENT_ITEM_TYPE);
}
@Override
diff --git a/src/com/android/dialer/list/RegularSearchListAdapter.java b/src/com/android/dialer/list/RegularSearchListAdapter.java
index f1f2ae039..3c55bc012 100644
--- a/src/com/android/dialer/list/RegularSearchListAdapter.java
+++ b/src/com/android/dialer/list/RegularSearchListAdapter.java
@@ -18,12 +18,10 @@ package com.android.dialer.list;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
-import android.provider.ContactsContract;
import android.text.TextUtils;
import com.android.contacts.common.CallUtil;
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;
@@ -35,6 +33,8 @@ public class RegularSearchListAdapter extends DialerPhoneNumberListAdapter {
public RegularSearchListAdapter(Context context) {
super(context);
+ setShortcutEnabled(SHORTCUT_CREATE_NEW_CONTACT, false);
+ setShortcutEnabled(SHORTCUT_ADD_TO_EXISTING_CONTACT, false);
}
public CachedContactInfo getContactInfo(
@@ -71,10 +71,7 @@ public class RegularSearchListAdapter extends DialerPhoneNumberListAdapter {
final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString());
boolean changed = false;
changed |= setShortcutEnabled(SHORTCUT_DIRECT_CALL, showNumberShortcuts);
- // Either one of the add contacts options should be enabled. If the user entered
- // 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.
- changed |= setShortcutEnabled(SHORTCUT_ADD_NUMBER_TO_CONTACTS, showNumberShortcuts);
+ changed |= setShortcutEnabled(SHORTCUT_SEND_SMS_MESSAGE, showNumberShortcuts);
changed |= setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL,
showNumberShortcuts && CallUtil.isVideoEnabled(getContext()));
if (changed) {
diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java
index 1c88c4e81..73127a294 100644
--- a/src/com/android/dialer/list/SearchFragment.java
+++ b/src/com/android/dialer/list/SearchFragment.java
@@ -15,11 +15,16 @@
*/
package com.android.dialer.list;
+import android.animation.Animator;
+import android.animation.AnimatorInflater;
+import android.animation.AnimatorListenerAdapter;
import android.app.Activity;
import android.app.DialogFragment;
import android.content.Intent;
import android.content.res.Resources;
+import android.net.Uri;
import android.os.Bundle;
+import android.provider.ContactsContract;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
@@ -41,7 +46,8 @@ import com.android.dialer.util.DialerUtils;
import com.android.phone.common.animation.AnimUtils;
public class SearchFragment extends PhoneNumberPickerFragment {
- private static final String TAG = "SearchFragment";
+ private static final String TAG = SearchFragment.class.getSimpleName();
+ private static final String SMS_URI_PREFIX = "sms:";
private OnListFragmentScrolledListener mActivityScrollListener;
@@ -128,6 +134,26 @@ public class SearchFragment extends PhoneNumberPickerFragment {
}
@Override
+ public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
+ Animator animator = null;
+ if (nextAnim != 0) {
+ animator = AnimatorInflater.loadAnimator(getActivity(), nextAnim);
+ }
+ if (animator != null) {
+ final View view = getView();
+ final int oldLayerType = view.getLayerType();
+ view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ animator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ view.setLayerType(oldLayerType, null);
+ }
+ });
+ }
+ return animator;
+ }
+
+ @Override
protected void setSearchMode(boolean flag) {
super.setSearchMode(flag);
// This hides the "All contacts with phone numbers" header in the search fragment
@@ -180,31 +206,48 @@ public class SearchFragment extends PhoneNumberPickerFragment {
final DialerPhoneNumberListAdapter adapter = (DialerPhoneNumberListAdapter) getAdapter();
final int shortcutType = adapter.getShortcutTypeFromPosition(position);
final OnPhoneNumberPickerActionListener listener;
- final String phoneNumber = TextUtils.isEmpty(mAddToContactNumber) ?
- adapter.getQueryString() : mAddToContactNumber;
+ final Intent intent;
+ final String number;
+
+ Log.i(TAG, "onItemClick: shortcutType=" + shortcutType);
- boolean ret = checkForProhibitedPhoneNumber(phoneNumber);
switch (shortcutType) {
case DialerPhoneNumberListAdapter.SHORTCUT_INVALID:
super.onItemClick(position, id);
break;
case DialerPhoneNumberListAdapter.SHORTCUT_DIRECT_CALL:
+ number = adapter.getQueryString();
listener = getOnPhoneNumberPickerListener();
- if (listener != null && !ret) {
- listener.onCallNumberDirectly(phoneNumber);
+ if (listener != null && !checkForProhibitedPhoneNumber(number)) {
+ listener.onCallNumberDirectly(number);
}
break;
- case DialerPhoneNumberListAdapter.SHORTCUT_ADD_NUMBER_TO_CONTACTS:
- final String number = TextUtils.isEmpty(mAddToContactNumber) ?
+ case DialerPhoneNumberListAdapter.SHORTCUT_CREATE_NEW_CONTACT:
+ number = TextUtils.isEmpty(mAddToContactNumber) ?
adapter.getFormattedQueryString() : mAddToContactNumber;
- final Intent intent = DialtactsActivity.getAddNumberToContactIntent(number);
+ intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
+ intent.putExtra(ContactsContract.Intents.Insert.PHONE, number);
+ intent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE,
+ ContactsContract.CommonDataKinds.Phone.TYPE_MAIN);
+ DialerUtils.startActivityWithErrorToast(getActivity(), intent);
+ break;
+ case DialerPhoneNumberListAdapter.SHORTCUT_ADD_TO_EXISTING_CONTACT:
+ number = TextUtils.isEmpty(mAddToContactNumber) ?
+ adapter.getFormattedQueryString() : mAddToContactNumber;
+ intent = DialtactsActivity.getAddNumberToContactIntent(number);
DialerUtils.startActivityWithErrorToast(getActivity(), intent,
R.string.add_contact_not_available);
break;
+ case DialerPhoneNumberListAdapter.SHORTCUT_SEND_SMS_MESSAGE:
+ intent = new Intent(
+ Intent.ACTION_VIEW, Uri.parse(SMS_URI_PREFIX + getQueryString()));
+ DialerUtils.startActivityWithErrorToast(getActivity(), intent);
+ break;
case DialerPhoneNumberListAdapter.SHORTCUT_MAKE_VIDEO_CALL:
+ number = adapter.getQueryString();
listener = getOnPhoneNumberPickerListener();
- if (listener != null && !ret) {
- listener.onCallNumberDirectly(phoneNumber, true /* isVideoCall */);
+ if (listener != null && !checkForProhibitedPhoneNumber(number)) {
+ listener.onCallNumberDirectly(number, true /* isVideoCall */);
}
break;
}
diff --git a/src/com/android/dialer/list/ShortcutCardsAdapter.java b/src/com/android/dialer/list/ShortcutCardsAdapter.java
deleted file mode 100644
index 6410eabf6..000000000
--- a/src/com/android/dialer/list/ShortcutCardsAdapter.java
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- * Licensed to 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.content.Context;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.database.DataSetObserver;
-import android.graphics.Rect;
-import android.text.TextUtils;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.android.dialer.R;
-import com.android.dialer.calllog.CallLogAdapter;
-import com.android.dialer.calllog.CallLogNotificationsHelper;
-import com.android.dialer.calllog.CallLogQueryHandler;
-import com.android.dialer.list.SwipeHelper.OnItemGestureListener;
-import com.android.dialer.list.SwipeHelper.SwipeHelperCallback;
-
-/**
- * An adapter that displays call shortcuts from {@link com.android.dialer.calllog.CallLogAdapter}
- * in the form of cards.
- */
-public class ShortcutCardsAdapter extends BaseAdapter {
-
- private class CustomDataSetObserver extends DataSetObserver {
- @Override
- public void onChanged() {
- notifyDataSetChanged();
- }
- }
-
- private static final String TAG = ShortcutCardsAdapter.class.getSimpleName();
- private static final float CLIP_CARD_BARELY_HIDDEN_RATIO = 0.001f;
- private static final float CLIP_CARD_MOSTLY_HIDDEN_RATIO = 0.9f;
- // Fade out 5x faster than the hidden ratio.
- private static final float CLIP_CARD_OPACITY_RATIO = 5f;
-
- private final CallLogAdapter mCallLogAdapter;
-
- private final ListsFragment mFragment;
-
- private final int mCallLogMarginHorizontal;
- private final int mCallLogMarginTop;
- private final int mCallLogMarginBottom;
- private final int mCallLogPaddingStart;
- private final int mCallLogPaddingTop;
- private final int mCallLogPaddingBottom;
- private final int mCardMaxHorizontalClip;
- private final int mShortCardBackgroundColor;
-
- private final Context mContext;
-
- private final DataSetObserver mObserver;
-
- private final CallLogQueryHandler mCallLogQueryHandler;
-
- private final OnItemGestureListener mCallLogOnItemSwipeListener =
- new OnItemGestureListener() {
- @Override
- public void onSwipe(View view) {
- mCallLogQueryHandler.markNewCallsAsOld();
- mCallLogQueryHandler.markNewVoicemailsAsOld();
- CallLogNotificationsHelper.removeMissedCallNotifications(mContext);
- CallLogNotificationsHelper.updateVoicemailNotifications(mContext);
- mFragment.dismissShortcut(view);
- }
-
- @Override
- public void onTouch() {}
-
- @Override
- public boolean isSwipeEnabled() {
- return true;
- }
- };
-
- private final CallLogQueryHandler.Listener mCallLogQueryHandlerListener =
- new CallLogQueryHandler.Listener() {
- @Override
- public void onVoicemailStatusFetched(Cursor statusCursor) {}
-
- @Override
- public boolean onCallsFetched(Cursor combinedCursor) {
- mCallLogAdapter.invalidateCache();
- mCallLogAdapter.changeCursor(combinedCursor);
- mCallLogAdapter.notifyDataSetChanged();
- // Return true; took ownership of cursor
- return true;
- }
- };
-
- public ShortcutCardsAdapter(Context context,
- ListsFragment fragment,
- CallLogAdapter callLogAdapter) {
- final Resources resources = context.getResources();
- mContext = context;
- mFragment = fragment;
- mCardMaxHorizontalClip =
- resources.getDimensionPixelSize(R.dimen.recent_call_log_item_horizontal_clip_limit);
- mCallLogMarginHorizontal =
- resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_horizontal);
- mCallLogMarginTop =
- resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_top);
- mCallLogMarginBottom =
- resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_bottom);
- mCallLogPaddingStart =
- resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_start);
- mCallLogPaddingTop =
- resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_top);
- mCallLogPaddingBottom =
- resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_bottom);
- mShortCardBackgroundColor = resources.getColor(R.color.call_log_expanded_background_color);
-
-
- mCallLogAdapter = callLogAdapter;
- mObserver = new CustomDataSetObserver();
- mCallLogAdapter.registerDataSetObserver(mObserver);
- mCallLogQueryHandler = new CallLogQueryHandler(mContext.getContentResolver(),
- mCallLogQueryHandlerListener);
- }
-
- /**
- * Determines the number of items in the adapter.
- * mCallLogAdapter contains the item for the most recent caller.
- * mContactTileAdapter contains the starred contacts.
- * The +1 is to account for the presence of the favorites menu.
- *
- * @return Number of items in the adapter.
- */
- @Override
- public int getCount() {
- return mCallLogAdapter.getCount();
- }
-
- @Override
- public Object getItem(int position) {
- return mCallLogAdapter.getItem(position);
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- @Override
- public boolean hasStableIds() {
- return true;
- }
-
- /**
- * Determine the number of view types present.
- */
- @Override
- public int getViewTypeCount() {
- return mCallLogAdapter.getViewTypeCount();
- }
-
- @Override
- public int getItemViewType(int position) {
- return mCallLogAdapter.getItemViewType(position);
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- final SwipeableShortcutCard wrapper;
- if (convertView == null) {
- wrapper = new SwipeableShortcutCard(mContext);
- wrapper.setOnItemSwipeListener(mCallLogOnItemSwipeListener);
- } else {
- wrapper = (SwipeableShortcutCard) convertView;
- }
-
- // Special case wrapper view for the most recent call log item. This allows
- // us to create a card-like effect for the more recent call log item in
- // the PhoneFavoriteMergedAdapter, but keep the original look of the item in
- // the CallLogAdapter.
- final View view = mCallLogAdapter.getView(position, convertView == null ?
- null : wrapper.getChildAt(0), parent
- );
- wrapper.removeAllViews();
- wrapper.prepareChildView(view);
- wrapper.addView(view);
- wrapper.setVisibility(View.VISIBLE);
- return wrapper;
- }
-
- @Override
- public boolean areAllItemsEnabled() {
- return mCallLogAdapter.areAllItemsEnabled();
- }
-
- @Override
- public boolean isEnabled(int position) {
- return mCallLogAdapter.isEnabled(position);
- }
-
- /**
- * The swipeable call log row.
- */
- class SwipeableShortcutCard extends FrameLayout implements SwipeHelperCallback {
- private SwipeHelper mSwipeHelper;
- private OnItemGestureListener mOnItemSwipeListener;
-
- private float mPreviousTranslationZ = 0;
- private Rect mClipRect = new Rect();
-
- public SwipeableShortcutCard(Context context) {
- super(context);
- final float densityScale = getResources().getDisplayMetrics().density;
- final float pagingTouchSlop = ViewConfiguration.get(context)
- .getScaledPagingTouchSlop();
- mSwipeHelper = new SwipeHelper(context, SwipeHelper.X, this,
- densityScale, pagingTouchSlop);
- }
-
- private void prepareChildView(View view) {
- // Override CallLogAdapter's accessibility behavior; don't expand the shortcut card.
- view.setAccessibilityDelegate(null);
- view.setBackgroundResource(R.drawable.rounded_corner_bg);
-
- final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
- FrameLayout.LayoutParams.MATCH_PARENT,
- FrameLayout.LayoutParams.WRAP_CONTENT);
- params.setMargins(
- mCallLogMarginHorizontal,
- mCallLogMarginTop,
- mCallLogMarginHorizontal,
- mCallLogMarginBottom);
- view.setLayoutParams(params);
-
- LinearLayout actionView =
- (LinearLayout) view.findViewById(R.id.primary_action_view);
- actionView.setPaddingRelative(
- mCallLogPaddingStart,
- mCallLogPaddingTop,
- actionView.getPaddingEnd(),
- mCallLogPaddingBottom);
-
- // TODO: Set content description including type/location and time information.
- TextView nameView = (TextView) actionView.findViewById(R.id.name);
-
- actionView.setContentDescription(
- TextUtils.expandTemplate(
- getResources().getString(R.string.description_call_back_action),
- nameView.getText()));
-
- mPreviousTranslationZ = getResources().getDimensionPixelSize(
- R.dimen.recent_call_log_item_translation_z);
- view.setTranslationZ(mPreviousTranslationZ);
-
- final ViewGroup callLogItem = (ViewGroup) view.findViewById(R.id.call_log_list_item);
- // Reset the internal call log item view if it is being recycled
- callLogItem.setTranslationX(0);
- callLogItem.setTranslationY(0);
- callLogItem.setAlpha(1);
- callLogItem.setClipBounds(null);
- setChildrenOpacity(callLogItem, 1.0f);
-
- callLogItem.findViewById(R.id.call_log_row)
- .setBackgroundColor(mShortCardBackgroundColor);
-
- callLogItem.findViewById(R.id.call_indicator_icon).setVisibility(View.VISIBLE);
- }
-
- @Override
- public View getChildAtPosition(MotionEvent ev) {
- return getChildCount() > 0 ? getChildAt(0) : null;
- }
-
- @Override
- public View getChildContentView(View v) {
- return v.findViewById(R.id.call_log_list_item);
- }
-
- @Override
- public void onScroll() {}
-
- @Override
- public boolean canChildBeDismissed(View v) {
- return true;
- }
-
- @Override
- public void onBeginDrag(View v) {
- // We do this so the underlying ScrollView knows that it won't get
- // the chance to intercept events anymore
- requestDisallowInterceptTouchEvent(true);
- }
-
- @Override
- public void onChildDismissed(View v) {
- if (v != null && mOnItemSwipeListener != null) {
- mOnItemSwipeListener.onSwipe(v);
- }
- }
-
- @Override
- public void onDragCancelled(View v) {}
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- if (mSwipeHelper != null) {
- return mSwipeHelper.onInterceptTouchEvent(ev) || super.onInterceptTouchEvent(ev);
- } else {
- return super.onInterceptTouchEvent(ev);
- }
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- if (mSwipeHelper != null) {
- return mSwipeHelper.onTouchEvent(ev) || super.onTouchEvent(ev);
- } else {
- return super.onTouchEvent(ev);
- }
- }
-
- public void setOnItemSwipeListener(OnItemGestureListener listener) {
- mOnItemSwipeListener = listener;
- }
-
- /**
- * Clips the card by a specified amount.
- *
- * @param ratioHidden A float indicating how much of each edge of the card should be
- * clipped. If 0, the entire card is displayed. If 0.5f, each edge is hidden
- * entirely, thus obscuring the entire card.
- */
- public void clipCard(float ratioHidden) {
- final View viewToClip = getChildAt(0);
- if (viewToClip == null) {
- return;
- }
- int width = viewToClip.getWidth();
- int height = viewToClip.getHeight();
-
- if (ratioHidden <= CLIP_CARD_BARELY_HIDDEN_RATIO) {
- viewToClip.setTranslationZ(mPreviousTranslationZ);
- } else if (viewToClip.getTranslationZ() != 0){
- mPreviousTranslationZ = viewToClip.getTranslationZ();
- viewToClip.setTranslationZ(0);
- }
-
- if (ratioHidden > CLIP_CARD_MOSTLY_HIDDEN_RATIO) {
- mClipRect.set(0, 0 , 0, 0);
- setVisibility(View.INVISIBLE);
- } else {
- setVisibility(View.VISIBLE);
- int newTop = (int) (ratioHidden * height);
- mClipRect.set(0, newTop, width, height);
-
- // Since the pane will be overlapping with the action bar, apply a vertical offset
- // to top align the clipped card in the viewable area;
- viewToClip.setTranslationY(-newTop);
- }
- viewToClip.setClipBounds(mClipRect);
-
- // If the view has any children, fade them out of view.
- final ViewGroup viewGroup = (ViewGroup) viewToClip;
- setChildrenOpacity(
- viewGroup, Math.max(0, 1 - (CLIP_CARD_OPACITY_RATIO * ratioHidden)));
- }
-
- private void setChildrenOpacity(ViewGroup viewGroup, float alpha) {
- final int count = viewGroup.getChildCount();
- for (int i = 0; i < count; i++) {
- viewGroup.getChildAt(i).setAlpha(alpha);
- }
- }
- }
-}
diff --git a/src/com/android/dialer/list/SmartDialNumberListAdapter.java b/src/com/android/dialer/list/SmartDialNumberListAdapter.java
index 04c0d620d..fe27a25ab 100644
--- a/src/com/android/dialer/list/SmartDialNumberListAdapter.java
+++ b/src/com/android/dialer/list/SmartDialNumberListAdapter.java
@@ -20,15 +20,12 @@ import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Callable;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
import android.util.Log;
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.list.ContactListItemView;
-import com.android.contacts.common.list.PhoneNumberListAdapter;
-import com.android.contacts.common.list.PhoneNumberListAdapter.PhoneQuery;
import com.android.dialer.dialpad.SmartDialCursorLoader;
import com.android.dialer.dialpad.SmartDialNameMatcher;
import com.android.dialer.dialpad.SmartDialPrefix;
@@ -49,6 +46,7 @@ public class SmartDialNumberListAdapter extends DialerPhoneNumberListAdapter {
public SmartDialNumberListAdapter(Context context) {
super(context);
mNameMatcher = new SmartDialNameMatcher("", SmartDialPrefix.getMap());
+ setShortcutEnabled(SmartDialNumberListAdapter.SHORTCUT_DIRECT_CALL, false);
if (DEBUG) {
Log.v(TAG, "Constructing List Adapter");
@@ -119,7 +117,9 @@ public class SmartDialNumberListAdapter extends DialerPhoneNumberListAdapter {
public void setQueryString(String queryString) {
final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString());
boolean changed = false;
- changed |= setShortcutEnabled(SHORTCUT_ADD_NUMBER_TO_CONTACTS, showNumberShortcuts);
+ changed |= setShortcutEnabled(SHORTCUT_CREATE_NEW_CONTACT, showNumberShortcuts);
+ changed |= setShortcutEnabled(SHORTCUT_ADD_TO_EXISTING_CONTACT, showNumberShortcuts);
+ changed |= setShortcutEnabled(SHORTCUT_SEND_SMS_MESSAGE, showNumberShortcuts);
changed |= setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL,
showNumberShortcuts && CallUtil.isVideoEnabled(getContext()));
if (changed) {
diff --git a/src/com/android/dialer/list/SmartDialSearchFragment.java b/src/com/android/dialer/list/SmartDialSearchFragment.java
index 4f0ce7216..082bc4360 100644
--- a/src/com/android/dialer/list/SmartDialSearchFragment.java
+++ b/src/com/android/dialer/list/SmartDialSearchFragment.java
@@ -38,11 +38,8 @@ public class SmartDialSearchFragment extends SearchFragment {
SmartDialNumberListAdapter adapter = new SmartDialNumberListAdapter(getActivity());
adapter.setUseCallableUri(super.usesCallableUri());
adapter.setQuickContactEnabled(true);
- // 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_NUMBER_TO_CONTACTS,
- false);
+ // Set adapter's query string to restore previous instance state.
+ adapter.setQueryString(getQueryString());
return adapter;
}
diff --git a/src/com/android/dialer/list/SpeedDialFragment.java b/src/com/android/dialer/list/SpeedDialFragment.java
index 63f1f34c6..e72b25059 100644
--- a/src/com/android/dialer/list/SpeedDialFragment.java
+++ b/src/com/android/dialer/list/SpeedDialFragment.java
@@ -28,6 +28,7 @@ import android.database.Cursor;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
+import android.os.Trace;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -38,10 +39,11 @@ import android.view.animation.LayoutAnimationController;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
+import android.widget.FrameLayout;
+import android.widget.FrameLayout.LayoutParams;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
-import android.widget.RelativeLayout.LayoutParams;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactTileLoaderFactory;
@@ -68,7 +70,7 @@ public class SpeedDialFragment extends Fragment implements OnItemClickListener,
*/
private static final long KEY_REMOVED_ITEM_HEIGHT = Long.MAX_VALUE;
- private static final String TAG = SpeedDialFragment.class.getSimpleName();
+ private static final String TAG = "SpeedDialFragment";
private static final boolean DEBUG = false;
private int mAnimationDuration;
@@ -180,21 +182,26 @@ public class SpeedDialFragment extends Fragment implements OnItemClickListener,
@Override
public void onCreate(Bundle savedState) {
if (DEBUG) Log.d(TAG, "onCreate()");
+ Trace.beginSection(TAG + " onCreate");
super.onCreate(savedState);
mAnimationDuration = getResources().getInteger(R.integer.fade_duration);
+ Trace.endSection();
}
@Override
public void onResume() {
+ Trace.beginSection(TAG + " onResume");
super.onResume();
getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE).forceLoad();
+ Trace.endSection();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
+ Trace.beginSection(TAG + " onCreateView");
mParentView = inflater.inflate(R.layout.speed_dial_fragment, container, false);
mListView = (PhoneFavoriteListView) mParentView.findViewById(R.id.contact_tile_list);
@@ -208,7 +215,6 @@ public class SpeedDialFragment extends Fragment implements OnItemClickListener,
(ImageView) getActivity().findViewById(R.id.contact_tile_drag_shadow_overlay);
mListView.setDragShadowOverlay(dragShadowOverlay);
- final Resources resources = getResources();
mEmptyView = mParentView.findViewById(R.id.empty_list_view);
DialerUtils.configureEmptyListView(
mEmptyView, R.drawable.empty_speed_dial, R.string.speed_dial_empty, getResources());
@@ -224,7 +230,7 @@ public class SpeedDialFragment extends Fragment implements OnItemClickListener,
mListView.setOnScrollListener(mScrollListener);
mListView.setFastScrollEnabled(false);
mListView.setFastScrollAlwaysVisible(false);
-
+ Trace.endSection();
return mParentView;
}
@@ -239,7 +245,7 @@ public class SpeedDialFragment extends Fragment implements OnItemClickListener,
final int listViewVisibility = visible ? View.GONE : View.VISIBLE;
if (previousVisibility != emptyViewVisibility) {
- final RelativeLayout.LayoutParams params = (LayoutParams) mContactTileFrame
+ final FrameLayout.LayoutParams params = (LayoutParams) mContactTileFrame
.getLayoutParams();
params.height = visible ? LayoutParams.WRAP_CONTENT : LayoutParams.MATCH_PARENT;
mContactTileFrame.setLayoutParams(params);
diff --git a/src/com/android/dialer/list/SwipeHelper.java b/src/com/android/dialer/list/SwipeHelper.java
deleted file mode 100644
index 03300df42..000000000
--- a/src/com/android/dialer/list/SwipeHelper.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- * Licensed to 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.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.ObjectAnimator;
-import android.animation.ValueAnimator;
-import android.animation.ValueAnimator.AnimatorUpdateListener;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.RectF;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.VelocityTracker;
-import android.view.View;
-import android.view.animation.LinearInterpolator;
-
-import com.android.dialer.R;
-
-/**
- * Copy of packages/apps/UnifiedEmail - com.android.mail.ui.SwipeHelper with changes.
- */
-public class SwipeHelper {
- static final String TAG = SwipeHelper.class.getSimpleName();
- private static final boolean DEBUG_INVALIDATE = false;
- private static final boolean CONSTRAIN_SWIPE = true;
- private static final boolean FADE_OUT_DURING_SWIPE = true;
- private static final boolean DISMISS_IF_SWIPED_FAR_ENOUGH = true;
- private static final boolean LOG_SWIPE_DISMISS_VELOCITY = false; // STOPSHIP - DEBUG ONLY
-
- public static final int IS_SWIPEABLE_TAG = R.id.is_swipeable_tag;
- public static final Object IS_SWIPEABLE = new Object();
-
- public static final int X = 0;
- public static final int Y = 1;
-
- private static LinearInterpolator sLinearInterpolator = new LinearInterpolator();
-
- private static int SWIPE_ESCAPE_VELOCITY = -1;
- private static int DEFAULT_ESCAPE_ANIMATION_DURATION;
- private static int MAX_ESCAPE_ANIMATION_DURATION;
- private static int MAX_DISMISS_VELOCITY;
- private static int SNAP_ANIM_LEN;
- private static int SWIPE_SCROLL_SLOP;
- private static float MIN_SWIPE;
- private static float MIN_VERT;
- private static float MIN_LOCK;
-
- public static float ALPHA_FADE_START = 0f; // fraction of thumbnail width
- // where fade starts
- static final float ALPHA_FADE_END = 0.7f; // fraction of thumbnail width
- // beyond which alpha->0
- private static final float FACTOR = 1.2f;
-
- private static final int PROTECTION_PADDING = 50;
-
- private float mMinAlpha = 0.3f;
-
- private float mPagingTouchSlop;
- private final SwipeHelperCallback mCallback;
- private final int mSwipeDirection;
- private final VelocityTracker mVelocityTracker;
-
- private float mInitialTouchPosX;
- private boolean mDragging;
- private View mCurrView;
- private View mCurrAnimView;
- private boolean mCanCurrViewBeDimissed;
- private float mDensityScale;
- private float mLastY;
- private float mInitialTouchPosY;
-
- private float mStartAlpha;
- private boolean mProtected = false;
-
- private float mChildSwipedFarEnoughFactor = 0.4f;
- private float mChildSwipedFastEnoughFactor = 0.05f;
-
- public SwipeHelper(Context context, int swipeDirection, SwipeHelperCallback callback, float densityScale,
- float pagingTouchSlop) {
- mCallback = callback;
- mSwipeDirection = swipeDirection;
- mVelocityTracker = VelocityTracker.obtain();
- mDensityScale = densityScale;
- mPagingTouchSlop = pagingTouchSlop;
- if (SWIPE_ESCAPE_VELOCITY == -1) {
- Resources res = context.getResources();
- SWIPE_ESCAPE_VELOCITY = res.getInteger(R.integer.swipe_escape_velocity);
- DEFAULT_ESCAPE_ANIMATION_DURATION = res.getInteger(R.integer.escape_animation_duration);
- MAX_ESCAPE_ANIMATION_DURATION = res.getInteger(R.integer.max_escape_animation_duration);
- MAX_DISMISS_VELOCITY = res.getInteger(R.integer.max_dismiss_velocity);
- SNAP_ANIM_LEN = res.getInteger(R.integer.snap_animation_duration);
- SWIPE_SCROLL_SLOP = res.getInteger(R.integer.swipe_scroll_slop);
- MIN_SWIPE = res.getDimension(R.dimen.min_swipe);
- MIN_VERT = res.getDimension(R.dimen.min_vert);
- MIN_LOCK = res.getDimension(R.dimen.min_lock);
- }
- }
-
- public void setDensityScale(float densityScale) {
- mDensityScale = densityScale;
- }
-
- public void setPagingTouchSlop(float pagingTouchSlop) {
- mPagingTouchSlop = pagingTouchSlop;
- }
-
- public void setChildSwipedFarEnoughFactor(float factor) {
- mChildSwipedFarEnoughFactor = factor;
- }
-
- public void setChildSwipedFastEnoughFactor(float factor) {
- mChildSwipedFastEnoughFactor = factor;
- }
-
- private float getVelocity(VelocityTracker vt) {
- return mSwipeDirection == X ? vt.getXVelocity() :
- vt.getYVelocity();
- }
-
- private ObjectAnimator createTranslationAnimation(View v, float newPos) {
- ObjectAnimator anim = ObjectAnimator.ofFloat(v,
- mSwipeDirection == X ? "translationX" : "translationY", newPos);
- return anim;
- }
-
- private ObjectAnimator createDismissAnimation(View v, float newPos, int duration) {
- ObjectAnimator anim = createTranslationAnimation(v, newPos);
- anim.setInterpolator(sLinearInterpolator);
- anim.setDuration(duration);
- return anim;
- }
-
- private float getPerpendicularVelocity(VelocityTracker vt) {
- return mSwipeDirection == X ? vt.getYVelocity() :
- vt.getXVelocity();
- }
-
- private void setTranslation(View v, float translate) {
- if (mSwipeDirection == X) {
- v.setTranslationX(translate);
- } else {
- v.setTranslationY(translate);
- }
- }
-
- private float getSize(View v) {
- return mSwipeDirection == X ? v.getMeasuredWidth() :
- v.getMeasuredHeight();
- }
-
- public void setMinAlpha(float minAlpha) {
- mMinAlpha = minAlpha;
- }
-
- private float getAlphaForOffset(View view) {
- float viewSize = getSize(view);
- final float fadeSize = ALPHA_FADE_END * viewSize;
- float result = mStartAlpha;
- float pos = view.getTranslationX();
- if (pos >= viewSize * ALPHA_FADE_START) {
- result = mStartAlpha - (pos - viewSize * ALPHA_FADE_START) / fadeSize;
- } else if (pos < viewSize * (mStartAlpha - ALPHA_FADE_START)) {
- result = mStartAlpha + (viewSize * ALPHA_FADE_START + pos) / fadeSize;
- }
- return Math.max(mMinAlpha, result);
- }
-
- // invalidate the view's own bounds all the way up the view hierarchy
- public static void invalidateGlobalRegion(View view) {
- invalidateGlobalRegion(
- view,
- new RectF(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()));
- }
-
- // invalidate a rectangle relative to the view's coordinate system all the way up the view
- // hierarchy
- public static void invalidateGlobalRegion(View view, RectF childBounds) {
- // childBounds.offset(view.getTranslationX(), view.getTranslationY());
- if (DEBUG_INVALIDATE)
- Log.v(TAG, "-------------");
- while (view.getParent() != null && view.getParent() instanceof View) {
- view = (View) view.getParent();
- view.getMatrix().mapRect(childBounds);
- view.invalidate((int) Math.floor(childBounds.left),
- (int) Math.floor(childBounds.top),
- (int) Math.ceil(childBounds.right),
- (int) Math.ceil(childBounds.bottom));
- if (DEBUG_INVALIDATE) {
- Log.v(TAG, "INVALIDATE(" + (int) Math.floor(childBounds.left)
- + "," + (int) Math.floor(childBounds.top)
- + "," + (int) Math.ceil(childBounds.right)
- + "," + (int) Math.ceil(childBounds.bottom));
- }
- }
- }
-
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- final int action = ev.getAction();
- switch (action) {
- case MotionEvent.ACTION_DOWN:
- mLastY = ev.getY();
- mDragging = false;
- mCurrView = mCallback.getChildAtPosition(ev);
- mVelocityTracker.clear();
- if (mCurrView != null) {
- mCurrAnimView = mCallback.getChildContentView(mCurrView);
- mStartAlpha = mCurrAnimView.getAlpha();
- mCanCurrViewBeDimissed = mCallback.canChildBeDismissed(mCurrView);
- mVelocityTracker.addMovement(ev);
- mInitialTouchPosX = ev.getX();
- mInitialTouchPosY = ev.getY();
- }
- break;
- case MotionEvent.ACTION_MOVE:
- if (mCurrView != null) {
- // Check the movement direction.
- if (mLastY >= 0 && !mDragging) {
- float currY = ev.getY();
- float currX = ev.getX();
- float deltaY = Math.abs(currY - mInitialTouchPosY);
- float deltaX = Math.abs(currX - mInitialTouchPosX);
- if (deltaY > SWIPE_SCROLL_SLOP && deltaY > (FACTOR * deltaX)) {
- mLastY = ev.getY();
- mCallback.onScroll();
- return false;
- }
- }
- mVelocityTracker.addMovement(ev);
- float pos = ev.getX();
- float delta = pos - mInitialTouchPosX;
- if (Math.abs(delta) > mPagingTouchSlop) {
- mCallback.onBeginDrag(mCallback.getChildContentView(mCurrView));
- mDragging = true;
- mInitialTouchPosX = ev.getX() - mCurrAnimView.getTranslationX();
- mInitialTouchPosY = ev.getY();
- }
- }
- mLastY = ev.getY();
- break;
- case MotionEvent.ACTION_UP:
- case MotionEvent.ACTION_CANCEL:
- mDragging = false;
- mCurrView = null;
- mCurrAnimView = null;
- mLastY = -1;
- break;
- }
- return mDragging;
- }
-
- /**
- * @param view The view to be dismissed
- * @param velocity The desired pixels/second speed at which the view should
- * move
- */
- private void dismissChild(final View view, float velocity) {
- final View animView = mCallback.getChildContentView(view);
- final boolean canAnimViewBeDismissed = mCallback.canChildBeDismissed(view);
- float newPos = determinePos(animView, velocity);
- int duration = determineDuration(animView, newPos, velocity);
-
- animView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
- ObjectAnimator anim = createDismissAnimation(animView, newPos, duration);
- anim.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- mCallback.onChildDismissed(view);
- animView.setLayerType(View.LAYER_TYPE_NONE, null);
- }
- });
- anim.addUpdateListener(new AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- if (FADE_OUT_DURING_SWIPE && canAnimViewBeDismissed) {
- animView.setAlpha(getAlphaForOffset(animView));
- }
- invalidateGlobalRegion(animView);
- }
- });
- anim.start();
- }
-
- private int determineDuration(View animView, float newPos, float velocity) {
- int duration = MAX_ESCAPE_ANIMATION_DURATION;
- if (velocity != 0) {
- duration = Math
- .min(duration,
- (int) (Math.abs(newPos - animView.getTranslationX()) * 1000f / Math
- .abs(velocity)));
- } else {
- duration = DEFAULT_ESCAPE_ANIMATION_DURATION;
- }
- return duration;
- }
-
- private float determinePos(View animView, float velocity) {
- float newPos = 0;
- if (velocity < 0 || (velocity == 0 && animView.getTranslationX() < 0)
- // if we use the Menu to dismiss an item in landscape, animate up
- || (velocity == 0 && animView.getTranslationX() == 0 && mSwipeDirection == Y)) {
- newPos = -getSize(animView);
- } else {
- newPos = getSize(animView);
- }
- return newPos;
- }
-
- public void snapChild(final View view, float velocity) {
- final View animView = mCallback.getChildContentView(view);
- final boolean canAnimViewBeDismissed = mCallback.canChildBeDismissed(view);
- ObjectAnimator anim = createTranslationAnimation(animView, 0);
- int duration = SNAP_ANIM_LEN;
- anim.setDuration(duration);
- anim.addUpdateListener(new AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- if (FADE_OUT_DURING_SWIPE && canAnimViewBeDismissed) {
- animView.setAlpha(getAlphaForOffset(animView));
- }
- invalidateGlobalRegion(animView);
- }
- });
- anim.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- animView.setAlpha(mStartAlpha);
- mCallback.onDragCancelled(mCurrView);
- }
- });
- anim.start();
- }
-
- public boolean onTouchEvent(MotionEvent ev) {
- if (!mDragging || mProtected) {
- return false;
- }
- mVelocityTracker.addMovement(ev);
- final int action = ev.getAction();
- switch (action) {
- case MotionEvent.ACTION_OUTSIDE:
- case MotionEvent.ACTION_MOVE:
- if (mCurrView != null) {
- float deltaX = ev.getX() - mInitialTouchPosX;
- float deltaY = Math.abs(ev.getY() - mInitialTouchPosY);
- // If the user has gone vertical and not gone horizontalish AT
- // LEAST minBeforeLock, switch to scroll. Otherwise, cancel
- // the swipe.
- if (!mDragging && deltaY > MIN_VERT && (Math.abs(deltaX)) < MIN_LOCK
- && deltaY > (FACTOR * Math.abs(deltaX))) {
- mCallback.onScroll();
- return false;
- }
- float minDistance = MIN_SWIPE;
- if (Math.abs(deltaX) < minDistance) {
- // Don't start the drag until at least X distance has
- // occurred.
- return true;
- }
- // don't let items that can't be dismissed be dragged more
- // than maxScrollDistance
- if (CONSTRAIN_SWIPE && !mCallback.canChildBeDismissed(mCurrView)) {
- float size = getSize(mCurrAnimView);
- float maxScrollDistance = 0.15f * size;
- if (Math.abs(deltaX) >= size) {
- deltaX = deltaX > 0 ? maxScrollDistance : -maxScrollDistance;
- } else {
- deltaX = maxScrollDistance
- * (float) Math.sin((deltaX / size) * (Math.PI / 2));
- }
- }
- setTranslation(mCurrAnimView, deltaX);
- if (FADE_OUT_DURING_SWIPE && mCanCurrViewBeDimissed) {
- mCurrAnimView.setAlpha(getAlphaForOffset(mCurrAnimView));
- }
- invalidateGlobalRegion(mCallback.getChildContentView(mCurrView));
- }
- break;
- case MotionEvent.ACTION_UP:
- case MotionEvent.ACTION_CANCEL:
- if (mCurrView != null) {
- float maxVelocity = MAX_DISMISS_VELOCITY * mDensityScale;
- mVelocityTracker.computeCurrentVelocity(1000 /* px/sec */, maxVelocity);
- float escapeVelocity = SWIPE_ESCAPE_VELOCITY * mDensityScale;
- float velocity = getVelocity(mVelocityTracker);
- float perpendicularVelocity = getPerpendicularVelocity(mVelocityTracker);
-
- // Decide whether to dismiss the current view
- // Tweak constants below as required to prevent erroneous
- // swipe/dismiss
- float translation = Math.abs(mCurrAnimView.getTranslationX());
- float currAnimViewSize = getSize(mCurrAnimView);
- // Long swipe = translation of {@link #mChildSwipedFarEnoughFactor} * width
- boolean childSwipedFarEnough = DISMISS_IF_SWIPED_FAR_ENOUGH
- && translation > mChildSwipedFarEnoughFactor * currAnimViewSize;
- // Fast swipe = > escapeVelocity and translation of
- // {@link #mChildSwipedFastEnoughFactor} * width
- boolean childSwipedFastEnough = (Math.abs(velocity) > escapeVelocity)
- && (Math.abs(velocity) > Math.abs(perpendicularVelocity))
- && (velocity > 0) == (mCurrAnimView.getTranslationX() > 0)
- && translation > mChildSwipedFastEnoughFactor * currAnimViewSize;
- if (LOG_SWIPE_DISMISS_VELOCITY) {
- Log.v(TAG, "Swipe/Dismiss: " + velocity + "/" + escapeVelocity + "/"
- + perpendicularVelocity + ", x: " + translation + "/"
- + currAnimViewSize);
- }
-
- boolean dismissChild = mCallback.canChildBeDismissed(mCurrView)
- && (childSwipedFastEnough || childSwipedFarEnough);
-
- if (dismissChild) {
- dismissChild(mCurrView, childSwipedFastEnough ? velocity : 0f);
- } else {
- snapChild(mCurrView, velocity);
- }
- }
- break;
- }
- return true;
- }
-
- public static void setSwipeable(View view, boolean swipeable) {
- view.setTag(IS_SWIPEABLE_TAG, swipeable ? IS_SWIPEABLE : null);
- }
-
- public static boolean isSwipeable(View view) {
- return IS_SWIPEABLE == view.getTag(IS_SWIPEABLE_TAG);
- }
-
- public interface SwipeHelperCallback {
- View getChildAtPosition(MotionEvent ev);
-
- View getChildContentView(View v);
-
- void onScroll();
-
- boolean canChildBeDismissed(View v);
-
- void onBeginDrag(View v);
-
- void onChildDismissed(View v);
-
- void onDragCancelled(View v);
-
- }
-
- public interface OnItemGestureListener {
- public void onSwipe(View view);
-
- public void onTouch();
-
- public boolean isSwipeEnabled();
- }
-}
diff --git a/src/com/android/dialer/settings/DialerSettingsActivity.java b/src/com/android/dialer/settings/DialerSettingsActivity.java
index de07128ca..8653dc9a7 100644
--- a/src/com/android/dialer/settings/DialerSettingsActivity.java
+++ b/src/com/android/dialer/settings/DialerSettingsActivity.java
@@ -2,6 +2,7 @@ package com.android.dialer.settings;
import com.google.common.collect.Lists;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -14,13 +15,7 @@ import android.preference.PreferenceActivity.Header;
import android.telecom.TelecomManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
-import android.view.LayoutInflater;
import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.ListAdapter;
-import android.widget.TextView;
import com.android.dialer.DialtactsActivity;
import com.android.dialer.R;
@@ -30,7 +25,6 @@ import java.util.List;
public class DialerSettingsActivity extends PreferenceActivity {
protected SharedPreferences mPreferences;
- private HeaderAdapter mHeaderAdapter;
private static final int OWNER_HANDLE_ID = 0;
@@ -42,18 +36,31 @@ public class DialerSettingsActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
- final Header generalSettingsHeader = new Header();
- generalSettingsHeader.titleRes = R.string.general_settings_label;
- generalSettingsHeader.fragment = GeneralSettingsFragment.class.getName();
- target.add(generalSettingsHeader);
+ Header displayOptionsHeader = new Header();
+ displayOptionsHeader.titleRes = R.string.display_options_title;
+ displayOptionsHeader.fragment = DisplayOptionsSettingsFragment.class.getName();
+ target.add(displayOptionsHeader);
+
+ Header soundSettingsHeader = new Header();
+ soundSettingsHeader.titleRes = R.string.sounds_and_vibration_title;
+ soundSettingsHeader.fragment = SoundSettingsFragment.class.getName();
+ target.add(soundSettingsHeader);
+
+ Header quickResponseSettingsHeader = new Header();
+ Intent quickResponseSettingsIntent =
+ new Intent(TelecomManager.ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS);
+ quickResponseSettingsHeader.titleRes = R.string.respond_via_sms_setting_title;
+ quickResponseSettingsHeader.intent = quickResponseSettingsIntent;
+ target.add(quickResponseSettingsHeader);
+
+ TelephonyManager telephonyManager =
+ (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
// Only show call setting menus if the current user is the primary/owner user.
if (isPrimaryUser()) {
- final TelephonyManager telephonyManager =
- (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
// Show "Call Settings" if there is one SIM and "Phone Accounts" if there are more.
if (telephonyManager.getPhoneCount() <= 1) {
- final Header callSettingsHeader = new Header();
+ Header callSettingsHeader = new Header();
Intent callSettingsIntent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);
callSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
@@ -61,7 +68,7 @@ public class DialerSettingsActivity extends PreferenceActivity {
callSettingsHeader.intent = callSettingsIntent;
target.add(callSettingsHeader);
} else {
- final Header phoneAccountSettingsHeader = new Header();
+ Header phoneAccountSettingsHeader = new Header();
Intent phoneAccountSettingsIntent =
new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS);
phoneAccountSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
@@ -71,6 +78,16 @@ public class DialerSettingsActivity extends PreferenceActivity {
target.add(phoneAccountSettingsHeader);
}
}
+
+ if (telephonyManager.isTtyModeSupported()
+ || telephonyManager.isHearingAidCompatibilitySupported()) {
+ Header accessibilitySettingsHeader = new Header();
+ Intent accessibilitySettingsIntent =
+ new Intent(TelecomManager.ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS);
+ accessibilitySettingsHeader.titleRes = R.string.accessibility_settings_title;
+ accessibilitySettingsHeader.intent = accessibilitySettingsIntent;
+ target.add(accessibilitySettingsHeader);
+ }
}
@Override
@@ -87,23 +104,6 @@ public class DialerSettingsActivity extends PreferenceActivity {
return true;
}
- @Override
- public void setListAdapter(ListAdapter adapter) {
- if (adapter == null) {
- super.setListAdapter(null);
- } else {
- // We don't have access to the hidden getHeaders() method, so grab the headers from
- // the intended adapter and then replace it with our own.
- int headerCount = adapter.getCount();
- List<Header> headers = Lists.newArrayList();
- for (int i = 0; i < headerCount; i++) {
- headers.add((Header) adapter.getItem(i));
- }
- mHeaderAdapter = new HeaderAdapter(this, headers);
- super.setListAdapter(mHeaderAdapter);
- }
- }
-
/**
* Whether a user handle associated with the current user is that of the primary owner. That is,
* whether there is a user handle which has an id which matches the owner's handle.
@@ -120,51 +120,4 @@ public class DialerSettingsActivity extends PreferenceActivity {
return false;
}
-
- /**
- * This custom {@code ArrayAdapter} is mostly identical to the equivalent one in
- * {@code PreferenceActivity}, except with a local layout resource.
- */
- private static class HeaderAdapter extends ArrayAdapter<Header> {
- static class HeaderViewHolder {
- TextView title;
- TextView summary;
- }
-
- private LayoutInflater mInflater;
-
- public HeaderAdapter(Context context, List<Header> objects) {
- super(context, 0, objects);
- mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- HeaderViewHolder holder;
- View view;
-
- if (convertView == null) {
- view = mInflater.inflate(R.layout.dialer_preferences, parent, false);
- holder = new HeaderViewHolder();
- holder.title = (TextView) view.findViewById(R.id.title);
- holder.summary = (TextView) view.findViewById(R.id.summary);
- view.setTag(holder);
- } else {
- view = convertView;
- holder = (HeaderViewHolder) view.getTag();
- }
-
- // All view fields must be updated every time, because the view may be recycled
- Header header = getItem(position);
- holder.title.setText(header.getTitle(getContext().getResources()));
- CharSequence summary = header.getSummary(getContext().getResources());
- if (!TextUtils.isEmpty(summary)) {
- holder.summary.setVisibility(View.VISIBLE);
- holder.summary.setText(summary);
- } else {
- holder.summary.setVisibility(View.GONE);
- }
- return view;
- }
- }
}
diff --git a/src/com/android/dialer/settings/DisplayOptionsSettingsFragment.java b/src/com/android/dialer/settings/DisplayOptionsSettingsFragment.java
new file mode 100644
index 000000000..4b2c8f6db
--- /dev/null
+++ b/src/com/android/dialer/settings/DisplayOptionsSettingsFragment.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2015 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.settings;
+
+import android.os.Bundle;
+import android.preference.PreferenceFragment;
+
+import com.android.dialer.R;
+
+public class DisplayOptionsSettingsFragment extends PreferenceFragment {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.display_options_settings);
+ }
+}
diff --git a/src/com/android/dialer/settings/GeneralSettingsFragment.java b/src/com/android/dialer/settings/GeneralSettingsFragment.java
deleted file mode 100644
index 578ff3389..000000000
--- a/src/com/android/dialer/settings/GeneralSettingsFragment.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.settings;
-
-import android.content.Context;
-import android.media.RingtoneManager;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.Vibrator;
-import android.preference.CheckBoxPreference;
-import android.preference.Preference;
-import android.preference.PreferenceCategory;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
-import android.provider.Settings;
-
-import com.android.dialer.R;
-import com.android.phone.common.util.SettingsUtil;
-
-import java.lang.Boolean;
-import java.lang.CharSequence;
-import java.lang.Object;
-import java.lang.Override;
-import java.lang.Runnable;
-import java.lang.String;
-import java.lang.Thread;
-
-public class GeneralSettingsFragment extends PreferenceFragment
- implements Preference.OnPreferenceChangeListener {
- private static final String CATEGORY_SOUNDS_KEY = "dialer_general_sounds_category_key";
- private static final String BUTTON_RINGTONE_KEY = "button_ringtone_key";
- private static final String BUTTON_VIBRATE_ON_RING = "button_vibrate_on_ring";
- private static final String BUTTON_PLAY_DTMF_TONE = "button_play_dtmf_tone";
- private static final String BUTTON_RESPOND_VIA_SMS_KEY = "button_respond_via_sms_key";
-
- private static final int MSG_UPDATE_RINGTONE_SUMMARY = 1;
-
- private Context mContext;
-
- private Preference mRingtonePreference;
- private CheckBoxPreference mVibrateWhenRinging;
- private CheckBoxPreference mPlayDtmfTone;
- private Preference mRespondViaSms;
-
- private Runnable mRingtoneLookupRunnable;
- private final Handler mRingtoneLookupComplete = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_UPDATE_RINGTONE_SUMMARY:
- mRingtonePreference.setSummary((CharSequence) msg.obj);
- break;
- }
- }
- };
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- mContext = getActivity().getApplicationContext();
-
- addPreferencesFromResource(R.xml.general_settings);
-
- mRingtonePreference = findPreference(BUTTON_RINGTONE_KEY);
- mVibrateWhenRinging = (CheckBoxPreference) findPreference(BUTTON_VIBRATE_ON_RING);
- mPlayDtmfTone = (CheckBoxPreference) findPreference(BUTTON_PLAY_DTMF_TONE);
- mRespondViaSms = findPreference(BUTTON_RESPOND_VIA_SMS_KEY);
-
- PreferenceCategory soundCategory = (PreferenceCategory) findPreference(CATEGORY_SOUNDS_KEY);
- if (mVibrateWhenRinging != null) {
- Vibrator vibrator = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
- if (vibrator != null && vibrator.hasVibrator()) {
- mVibrateWhenRinging.setOnPreferenceChangeListener(this);
- } else {
- soundCategory.removePreference(mVibrateWhenRinging);
- mVibrateWhenRinging = null;
- }
- }
-
- if (mPlayDtmfTone != null) {
- mPlayDtmfTone.setOnPreferenceChangeListener(this);
- mPlayDtmfTone.setChecked(Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.DTMF_TONE_WHEN_DIALING, 1) != 0);
- }
-
- mRingtoneLookupRunnable = new Runnable() {
- @Override
- public void run() {
- if (mRingtonePreference != null) {
- SettingsUtil.updateRingtoneName(
- mContext,
- mRingtoneLookupComplete,
- RingtoneManager.TYPE_RINGTONE,
- mRingtonePreference.getKey(),
- MSG_UPDATE_RINGTONE_SUMMARY);
- }
- }
- };
- }
-
- /**
- * Supports onPreferenceChangeListener to look for preference changes.
- *
- * @param preference The preference to be changed
- * @param objValue The value of the selection, NOT its localized display value.
- */
- @Override
- public boolean onPreferenceChange(Preference preference, Object objValue) {
- if (preference == mVibrateWhenRinging) {
- boolean doVibrate = (Boolean) objValue;
- Settings.System.putInt(mContext.getContentResolver(),
- Settings.System.VIBRATE_WHEN_RINGING, doVibrate ? 1 : 0);
- }
- return true;
- }
-
- /**
- * Click listener for toggle events.
- */
- @Override
- public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
- if (preference == mPlayDtmfTone) {
- Settings.System.putInt(mContext.getContentResolver(),
- Settings.System.DTMF_TONE_WHEN_DIALING, mPlayDtmfTone.isChecked() ? 1 : 0);
- } else if (preference == mRespondViaSms) {
- // Needs to return false for the intent to launch.
- return false;
- }
- return true;
- }
-
- @Override
- public void onResume() {
- super.onResume();
-
- if (mVibrateWhenRinging != null) {
- mVibrateWhenRinging.setChecked(SettingsUtil.getVibrateWhenRingingSetting(mContext));
- }
-
- // Lookup the ringtone name asynchronously.
- new Thread(mRingtoneLookupRunnable).start();
- }
-}
diff --git a/src/com/android/dialer/settings/SoundSettingsFragment.java b/src/com/android/dialer/settings/SoundSettingsFragment.java
new file mode 100644
index 000000000..43297b5e5
--- /dev/null
+++ b/src/com/android/dialer/settings/SoundSettingsFragment.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.settings;
+
+import android.content.Context;
+import android.media.RingtoneManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.Vibrator;
+import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.telephony.TelephonyManager;
+
+import com.android.dialer.R;
+import com.android.phone.common.util.SettingsUtil;
+
+import java.lang.Boolean;
+import java.lang.CharSequence;
+import java.lang.Object;
+import java.lang.Override;
+import java.lang.Runnable;
+import java.lang.String;
+import java.lang.Thread;
+
+public class SoundSettingsFragment extends PreferenceFragment
+ implements Preference.OnPreferenceChangeListener {
+
+ private static final int NO_DTMF_TONE = 0;
+ private static final int PLAY_DTMF_TONE = 1;
+
+ private static final int NO_VIBRATION_FOR_CALLS = 0;
+ private static final int DO_VIBRATION_FOR_CALLS = 1;
+
+ private static final int SHOW_CARRIER_SETTINGS = 0;
+ private static final int HIDE_CARRIER_SETTINGS = 1;
+
+ private static final int MSG_UPDATE_RINGTONE_SUMMARY = 1;
+
+ private Preference mRingtonePreference;
+ private CheckBoxPreference mVibrateWhenRinging;
+ private CheckBoxPreference mPlayDtmfTone;
+ private ListPreference mDtmfToneLength;
+
+ private final Runnable mRingtoneLookupRunnable = new Runnable() {
+ @Override
+ public void run() {
+ updateRingtonePreferenceSummary();
+ }
+ };
+
+ private final Handler mRingtoneLookupComplete = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_UPDATE_RINGTONE_SUMMARY:
+ mRingtonePreference.setSummary((CharSequence) msg.obj);
+ break;
+ }
+ }
+ };
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ addPreferencesFromResource(R.xml.sound_settings);
+
+ Context context = getActivity();
+
+ mRingtonePreference = findPreference(context.getString(R.string.ringtone_preference_key));
+ mVibrateWhenRinging = (CheckBoxPreference) findPreference(
+ context.getString(R.string.vibrate_on_preference_key));
+ mPlayDtmfTone = (CheckBoxPreference) findPreference(
+ context.getString(R.string.play_dtmf_preference_key));
+ mDtmfToneLength = (ListPreference) findPreference(
+ context.getString(R.string.dtmf_tone_length_preference_key));
+
+ if (hasVibrator()) {
+ mVibrateWhenRinging.setOnPreferenceChangeListener(this);
+ } else {
+ getPreferenceScreen().removePreference(mVibrateWhenRinging);
+ mVibrateWhenRinging = null;
+ }
+
+ mPlayDtmfTone.setOnPreferenceChangeListener(this);
+ mPlayDtmfTone.setChecked(shouldPlayDtmfTone());
+
+ TelephonyManager telephonyManager =
+ (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
+ if (telephonyManager.canChangeDtmfToneLength()
+ && (telephonyManager.isWorldPhone() || !shouldHideCarrierSettings())) {
+ mDtmfToneLength.setOnPreferenceChangeListener(this);
+ mDtmfToneLength.setValueIndex(
+ Settings.System.getInt(context.getContentResolver(),
+ Settings.System.DTMF_TONE_WHEN_DIALING, PLAY_DTMF_TONE));
+ } else {
+ getPreferenceScreen().removePreference(mDtmfToneLength);
+ mDtmfToneLength = null;
+ }
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ if (mVibrateWhenRinging != null) {
+ mVibrateWhenRinging.setChecked(shouldVibrateWhenRinging());
+ }
+
+ // Lookup the ringtone name asynchronously.
+ new Thread(mRingtoneLookupRunnable).start();
+ }
+
+ /**
+ * Supports onPreferenceChangeListener to look for preference changes.
+ *
+ * @param preference The preference to be changed
+ * @param objValue The value of the selection, NOT its localized display value.
+ */
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object objValue) {
+ if (preference == mVibrateWhenRinging) {
+ boolean doVibrate = (Boolean) objValue;
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.VIBRATE_WHEN_RINGING,
+ doVibrate ? DO_VIBRATION_FOR_CALLS : NO_VIBRATION_FOR_CALLS);
+ } else if (preference == mDtmfToneLength) {
+ int index = mDtmfToneLength.findIndexOfValue((String) objValue);
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, index);
+ }
+ return true;
+ }
+
+ /**
+ * Click listener for toggle events.
+ */
+ @Override
+ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+ if (preference == mPlayDtmfTone) {
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.DTMF_TONE_WHEN_DIALING,
+ mPlayDtmfTone.isChecked() ? PLAY_DTMF_TONE : NO_DTMF_TONE);
+ }
+ return true;
+ }
+
+ /**
+ * Updates the summary text on the ringtone preference with the name of the ringtone.
+ */
+ private void updateRingtonePreferenceSummary() {
+ SettingsUtil.updateRingtoneName(
+ getActivity(),
+ mRingtoneLookupComplete,
+ RingtoneManager.TYPE_RINGTONE,
+ mRingtonePreference.getKey(),
+ MSG_UPDATE_RINGTONE_SUMMARY);
+ }
+
+ /**
+ * Obtain the value for "vibrate when ringing" setting. The default value is false.
+ *
+ * Watch out: if the setting is missing in the device, this will try obtaining the old
+ * "vibrate on ring" setting from AudioManager, and save the previous setting to the new one.
+ */
+ private boolean shouldVibrateWhenRinging() {
+ int vibrateWhenRingingSetting = Settings.System.getInt(getActivity().getContentResolver(),
+ Settings.System.VIBRATE_WHEN_RINGING,
+ NO_VIBRATION_FOR_CALLS);
+ return hasVibrator() && (vibrateWhenRingingSetting == DO_VIBRATION_FOR_CALLS);
+ }
+
+ /**
+ * Obtains the value for dialpad/DTMF tones. The default value is true.
+ */
+ private boolean shouldPlayDtmfTone() {
+ int dtmfToneSetting = Settings.System.getInt(getActivity().getContentResolver(),
+ Settings.System.DTMF_TONE_WHEN_DIALING,
+ PLAY_DTMF_TONE);
+ return dtmfToneSetting == PLAY_DTMF_TONE;
+ }
+
+ /**
+ * Whether the device hardware has a vibrator.
+ */
+ private boolean hasVibrator() {
+ Vibrator vibrator = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
+ return vibrator != null && vibrator.hasVibrator();
+ }
+
+ private boolean shouldHideCarrierSettings() {
+ int hideCarrierNetworkSetting = Settings.Global.getInt(getActivity().getContentResolver(),
+ Settings.Global.HIDE_CARRIER_NETWORK_SETTINGS, SHOW_CARRIER_SETTINGS);
+ return hideCarrierNetworkSetting == HIDE_CARRIER_SETTINGS;
+ }
+}
diff --git a/src/com/android/dialer/util/PrivilegedCallUtil.java b/src/com/android/dialer/util/PrivilegedCallUtil.java
new file mode 100644
index 000000000..367f36566
--- /dev/null
+++ b/src/com/android/dialer/util/PrivilegedCallUtil.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.util;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
+
+import com.android.contacts.common.CallUtil;
+import com.android.phone.common.PhoneConstants;
+
+/**
+ * Utilities related to calls that can only be used by system apps. These
+ * use {@link Intent#ACTION_CALL_PRIVILEGED}.
+ */
+public class PrivilegedCallUtil {
+
+ public static final String CALL_ACTION = Intent.ACTION_CALL_PRIVILEGED;
+
+ /**
+ * Return an Intent for making a phone call. Scheme (e.g. tel, sip) will be determined
+ * automatically.
+ */
+ public static Intent getCallIntent(String number) {
+ return getCallIntent(number, null, null);
+ }
+
+ /**
+ * Return an Intent for making a phone call. A given Uri will be used as is (without any
+ * sanity check).
+ */
+ public static Intent getCallIntent(Uri uri) {
+ return getCallIntent(uri, null, null);
+ }
+
+ /**
+ * A variant of {@link #getCallIntent(String)} but also accept a call origin.
+ * For more information about call origin, see comments in Phone package (PhoneApp).
+ */
+ public static Intent getCallIntent(String number, String callOrigin) {
+ return getCallIntent(CallUtil.getCallUri(number), callOrigin, null);
+ }
+
+ /**
+ * A variant of {@link #getCallIntent(String)} but also include {@code Account}.
+ */
+ public static Intent getCallIntent(String number, PhoneAccountHandle accountHandle) {
+ return getCallIntent(number, null, accountHandle);
+ }
+
+ /**
+ * A variant of {@link #getCallIntent(android.net.Uri)} but also include {@code Account}.
+ */
+ public static Intent getCallIntent(Uri uri, PhoneAccountHandle accountHandle) {
+ return getCallIntent(uri, null, accountHandle);
+ }
+
+ /**
+ * A variant of {@link #getCallIntent(String, String)} but also include {@code Account}.
+ */
+ public static Intent getCallIntent(
+ String number, String callOrigin, PhoneAccountHandle accountHandle) {
+ return getCallIntent(CallUtil.getCallUri(number), callOrigin, accountHandle);
+ }
+
+ /**
+ * A variant of {@link #getCallIntent(android.net.Uri)} but also accept a call
+ * origin and {@code Account}.
+ * For more information about call origin, see comments in Phone package (PhoneApp).
+ */
+ public static Intent getCallIntent(
+ Uri uri, String callOrigin, PhoneAccountHandle accountHandle) {
+ return getCallIntent(uri, callOrigin, accountHandle,
+ VideoProfile.VideoState.AUDIO_ONLY);
+ }
+
+ /**
+ * A variant of {@link #getCallIntent(String, String)} for starting a video call.
+ */
+ public static Intent getVideoCallIntent(String number, String callOrigin) {
+ return getCallIntent(CallUtil.getCallUri(number), callOrigin, null,
+ VideoProfile.VideoState.BIDIRECTIONAL);
+ }
+
+ /**
+ * A variant of {@link #getCallIntent(String, String, android.telecom.PhoneAccountHandle)} for
+ * starting a video call.
+ */
+ public static Intent getVideoCallIntent(
+ String number, String callOrigin, PhoneAccountHandle accountHandle) {
+ return getCallIntent(CallUtil.getCallUri(number), callOrigin, accountHandle,
+ VideoProfile.VideoState.BIDIRECTIONAL);
+ }
+
+ /**
+ * A variant of {@link #getCallIntent(String, String, android.telecom.PhoneAccountHandle)} for
+ * starting a video call.
+ */
+ public static Intent getVideoCallIntent(String number, PhoneAccountHandle accountHandle) {
+ return getVideoCallIntent(number, null, accountHandle);
+ }
+
+ /**
+ * A variant of {@link #getCallIntent(android.net.Uri)} for calling Voicemail.
+ */
+ public static Intent getVoicemailIntent() {
+ return getCallIntent(Uri.fromParts(PhoneAccount.SCHEME_VOICEMAIL, "", null));
+ }
+
+ /**
+ * A variant of {@link #getCallIntent(android.net.Uri)} but also accept a call
+ * origin and {@code Account} and {@code VideoCallProfile} state.
+ * For more information about call origin, see comments in Phone package (PhoneApp).
+ */
+ public static Intent getCallIntent(
+ Uri uri, String callOrigin, PhoneAccountHandle accountHandle, int videoState) {
+ final Intent intent = new Intent(CALL_ACTION, uri);
+ intent.putExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, videoState);
+ if (callOrigin != null) {
+ intent.putExtra(PhoneConstants.EXTRA_CALL_ORIGIN, callOrigin);
+ }
+ if (accountHandle != null) {
+ intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, accountHandle);
+ }
+
+ return intent;
+ }
+}
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
index 31db17720..0d5c3deed 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
@@ -120,6 +120,12 @@ public class VoicemailPlaybackFragment extends Fragment {
}
@Override
+ public void onViewStateRestored(Bundle savedInstanceState) {
+ mPresenter.onRestoreInstanceState(savedInstanceState);
+ super.onViewStateRestored(savedInstanceState);
+ }
+
+ @Override
public void onDestroy() {
shutdownMediaPlayer();
mPresenter.onDestroy();
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
index cb246f4c8..30fea1aee 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -32,6 +32,7 @@ import com.android.dialer.R;
import com.android.dialer.util.AsyncTaskExecutor;
import com.android.ex.variablespeed.MediaPlayerProxy;
import com.android.ex.variablespeed.SingleThreadedMediaPlayerProxy;
+
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
@@ -110,8 +111,8 @@ public class VoicemailPlaybackPresenter {
* If present in the saved instance bundle, we should not resume playback on
* create.
*/
- private static final String PAUSED_STATE_KEY = VoicemailPlaybackPresenter.class.getName()
- + ".PAUSED_STATE_KEY";
+ private static final String IS_PLAYING_STATE_KEY = VoicemailPlaybackPresenter.class.getName()
+ + ".IS_PLAYING_STATE_KEY";
/**
* If present in the saved instance bundle, indicates where to set the
* playback slider.
@@ -169,6 +170,8 @@ public class VoicemailPlaybackPresenter {
private FetchResultHandler mFetchResultHandler;
private PowerManager.WakeLock mWakeLock;
private AsyncTask<Void, ?, ?> mPrepareTask;
+ private int mPosition;
+ private boolean mPlaying;
public VoicemailPlaybackPresenter(PlaybackView view, MediaPlayerProxy player,
Uri voicemailUri, ScheduledExecutorService executorService,
@@ -346,22 +349,34 @@ public class VoicemailPlaybackPresenter {
mView.setSpeakerPhoneOn(mView.isSpeakerPhoneOn());
mView.setRateDecreaseButtonListener(createRateDecreaseListener());
mView.setRateIncreaseButtonListener(createRateIncreaseListener());
- mView.setClipPosition(0, mDuration.get());
- mView.playbackStopped();
- // Always disable on stop.
- mView.disableProximitySensor();
- if (mStartPlayingImmediately) {
- resetPrepareStartPlaying(0);
+ if (mPlaying) {
+ resetPrepareStartPlaying(mPosition);
+ } else {
+ stopPlaybackAtPosition(mPosition, mDuration.get());
+ if ((mPosition == 0) && (mStartPlayingImmediately)) {
+ resetPrepareStartPlaying(0);
+ }
}
- // TODO: Now I'm ignoring the bundle, when previously I was checking for contains against
- // the PAUSED_STATE_KEY, and CLIP_POSITION_KEY.
}
public void onSaveInstanceState(Bundle outState) {
outState.putInt(CLIP_POSITION_KEY, mView.getDesiredClipPosition());
- if (!mPlayer.isPlaying()) {
- outState.putBoolean(PAUSED_STATE_KEY, true);
+ outState.putBoolean(IS_PLAYING_STATE_KEY, mPlaying);
+ }
+
+ public void onRestoreInstanceState(Bundle inState) {
+ int position = 0;
+ boolean isPlaying = false;
+ if (inState != null) {
+ position = inState.getInt(CLIP_POSITION_KEY, 0);
+ isPlaying = inState.getBoolean(IS_PLAYING_STATE_KEY, false);
}
+ setPositionAndPlayingStatus(position, isPlaying) ;
+ }
+
+ private void setPositionAndPlayingStatus(int position, boolean isPlaying) {
+ mPosition = position;
+ mPlaying = isPlaying;
}
public void onDestroy() {
@@ -469,6 +484,7 @@ public class VoicemailPlaybackPresenter {
try {
// Can throw RejectedExecutionException
mPlayer.start();
+ setPositionAndPlayingStatus(mPlayer.getCurrentPosition(), true);
mView.playbackStarted();
if (!mWakeLock.isHeld()) {
mWakeLock.acquire();
@@ -501,6 +517,7 @@ public class VoicemailPlaybackPresenter {
mView.playbackError(e);
mPositionUpdater.stopUpdating();
mPlayer.release();
+ setPositionAndPlayingStatus(0, false);
}
public void handleCompletion(MediaPlayer mediaPlayer) {
@@ -537,10 +554,15 @@ public class VoicemailPlaybackPresenter {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
if (mPlayer.isPlaying()) {
+ setPositionAndPlayingStatus(mPlayer.getCurrentPosition(), false);
stopPlaybackAtPosition(mPlayer.getCurrentPosition(), mDuration.get());
+ } else {
+ setPositionAndPlayingStatus(mView.getDesiredClipPosition(),
+ mShouldResumePlaybackAfterSeeking);
}
+
if (mShouldResumePlaybackAfterSeeking) {
- resetPrepareStartPlaying(mView.getDesiredClipPosition());
+ postSuccessfullyFetchedContent();
}
}
@@ -575,9 +597,11 @@ public class VoicemailPlaybackPresenter {
@Override
public void onClick(View arg0) {
if (mPlayer.isPlaying()) {
+ setPositionAndPlayingStatus(mPlayer.getCurrentPosition(), false);
stopPlaybackAtPosition(mPlayer.getCurrentPosition(), mDuration.get());
} else {
- resetPrepareStartPlaying(mView.getDesiredClipPosition());
+ setPositionAndPlayingStatus(mPosition, true);
+ postSuccessfullyFetchedContent();
}
}
}
diff --git a/src/com/android/dialer/widget/OverlappingPaneLayout.java b/src/com/android/dialer/widget/OverlappingPaneLayout.java
deleted file mode 100644
index 167b849f2..000000000
--- a/src/com/android/dialer/widget/OverlappingPaneLayout.java
+++ /dev/null
@@ -1,1358 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.widget;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.PixelFormat;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.v4.view.AccessibilityDelegateCompat;
-import android.support.v4.view.MotionEventCompat;
-import android.support.v4.view.ViewCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.view.ViewParent;
-import android.view.accessibility.AccessibilityEvent;
-
-/**
- * A custom layout that aligns its child views vertically as two panes, and allows for the bottom
- * pane to be dragged upwards to overlap and hide the top pane. This layout is adapted from
- * {@link android.support.v4.widget.SlidingPaneLayout}.
- */
-public class OverlappingPaneLayout extends ViewGroup {
- private static final String TAG = "SlidingPaneLayout";
- private static final boolean DEBUG = false;
-
- /**
- * Default size of the overhang for a pane in the open state.
- * At least this much of a sliding pane will remain visible.
- * This indicates that there is more content available and provides
- * a "physical" edge to grab to pull it closed.
- */
- private static final int DEFAULT_OVERHANG_SIZE = 32; // dp;
-
- /**
- * If no fade color is given by default it will fade to 80% gray.
- */
- private static final int DEFAULT_FADE_COLOR = 0xcccccccc;
-
- /**
- * Minimum velocity that will be detected as a fling
- */
- private static final int MIN_FLING_VELOCITY = 400; // dips per second
-
- /**
- * The size of the overhang in pixels.
- * This is the minimum section of the sliding panel that will
- * be visible in the open state to allow for a closing drag.
- */
- private final int mOverhangSize;
-
- /**
- * True if a panel can slide with the current measurements
- */
- private boolean mCanSlide;
-
- /**
- * The child view that can slide, if any.
- */
- private View mSlideableView;
-
- /**
- * The view that can be used to start the drag with.
- */
- private View mCapturableView;
-
- /**
- * How far the panel is offset from its closed position.
- * range [0, 1] where 0 = closed, 1 = open.
- */
- private float mSlideOffset;
-
- /**
- * How far the panel is offset from its closed position, in pixels.
- * range [0, {@link #mSlideRange}] where 0 is completely closed.
- */
- private int mSlideOffsetPx;
-
- /**
- * How far in pixels the slideable panel may move.
- */
- private int mSlideRange;
-
- /**
- * A panel view is locked into internal scrolling or another condition that
- * is preventing a drag.
- */
- private boolean mIsUnableToDrag;
-
- /**
- * Tracks whether or not a child view is in the process of a nested scroll.
- */
- private boolean mIsInNestedScroll;
-
- /**
- * Indicates that the layout is currently in the process of a nested pre-scroll operation where
- * the child scrolling view is being dragged downwards.
- */
- private boolean mInNestedPreScrollDownwards;
-
- /**
- * Indicates that the layout is currently in the process of a nested pre-scroll operation where
- * the child scrolling view is being dragged upwards.
- */
- private boolean mInNestedPreScrollUpwards;
-
- /**
- * Indicates that the layout is currently in the process of a fling initiated by a pre-fling
- * from the child scrolling view.
- */
- private boolean mIsInNestedFling;
-
- /**
- * Indicates the direction of the pre fling. We need to store this information since
- * OverScoller doesn't expose the direction of its velocity.
- */
- private boolean mInUpwardsPreFling;
-
- /**
- * Stores an offset used to represent a point somewhere in between the panel's fully closed
- * state and fully opened state where the panel can be temporarily pinned or opened up to
- * during scrolling.
- */
- private int mIntermediateOffset = 0;
-
- private float mInitialMotionX;
- private float mInitialMotionY;
-
- private PanelSlideCallbacks mPanelSlideCallbacks;
-
- private final ViewDragHelper mDragHelper;
-
- /**
- * Stores whether or not the pane was open the last time it was slideable.
- * If open/close operations are invoked this state is modified. Used by
- * instance state save/restore.
- */
- private boolean mPreservedOpenState;
- private boolean mFirstLayout = true;
-
- private final Rect mTmpRect = new Rect();
-
- /**
- * How many dips we need to scroll past a position before we can snap to the next position
- * on release. Using this prevents accidentally snapping to positions.
- *
- * This is needed since vertical nested scrolling can be passed to this class even if the
- * vertical scroll is less than the the nested list's touch slop.
- */
- private final int mReleaseScrollSlop;
-
- /**
- * Callbacks for interacting with sliding panes.
- */
- public interface PanelSlideCallbacks {
- /**
- * Called when a sliding pane's position changes.
- * @param panel The child view that was moved
- * @param slideOffset The new offset of this sliding pane within its range, from 0-1
- */
- public void onPanelSlide(View panel, float slideOffset);
- /**
- * Called when a sliding pane becomes slid completely open. The pane may or may not
- * be interactive at this point depending on how much of the pane is visible.
- * @param panel The child view that was slid to an open position, revealing other panes
- */
- public void onPanelOpened(View panel);
-
- /**
- * Called when a sliding pane becomes slid completely closed. The pane is now guaranteed
- * to be interactive. It may now obscure other views in the layout.
- * @param panel The child view that was slid to a closed position
- */
- public void onPanelClosed(View panel);
-
- /**
- * Called when a sliding pane is flung as far open/closed as it can be.
- * @param velocityY Velocity of the panel once its fling goes as far as it can.
- */
- public void onPanelFlingReachesEdge(int velocityY);
-
- /**
- * Returns true if the second panel's contents haven't been scrolled at all. This value is
- * used to determine whether or not we can fully expand the header on downwards scrolls.
- *
- * Instead of using this callback, it would be preferable to instead fully expand the header
- * on a View#onNestedFlingOver() callback. The behavior would be nicer. Unfortunately,
- * no such callback exists yet (b/17547693).
- */
- public boolean isScrollableChildUnscrolled();
- }
-
- public OverlappingPaneLayout(Context context) {
- this(context, null);
- }
-
- public OverlappingPaneLayout(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public OverlappingPaneLayout(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
-
- final float density = context.getResources().getDisplayMetrics().density;
- mOverhangSize = (int) (DEFAULT_OVERHANG_SIZE * density + 0.5f);
-
- setWillNotDraw(false);
-
- ViewCompat.setAccessibilityDelegate(this, new AccessibilityDelegate());
-
- mDragHelper = ViewDragHelper.create(this, 0.5f, new DragHelperCallback());
- mDragHelper.setMinVelocity(MIN_FLING_VELOCITY * density);
-
- mReleaseScrollSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();
- }
-
- /**
- * Set an offset, somewhere in between the panel's fully closed state and fully opened state,
- * where the panel can be temporarily pinned or opened up to.
- *
- * @param offset Offset in pixels
- */
- public void setIntermediatePinnedOffset(int offset) {
- mIntermediateOffset = offset;
- }
-
- /**
- * Set the view that can be used to start dragging the sliding pane.
- */
- public void setCapturableView(View capturableView) {
- mCapturableView = capturableView;
- }
-
- public void setPanelSlideCallbacks(PanelSlideCallbacks listener) {
- mPanelSlideCallbacks = listener;
- }
-
- void dispatchOnPanelSlide(View panel) {
- mPanelSlideCallbacks.onPanelSlide(panel, mSlideOffset);
- }
-
- void dispatchOnPanelOpened(View panel) {
- mPanelSlideCallbacks.onPanelOpened(panel);
- sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
- }
-
- void dispatchOnPanelClosed(View panel) {
- mPanelSlideCallbacks.onPanelClosed(panel);
- sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
- }
-
- void updateObscuredViewsVisibility(View panel) {
- final int startBound = getPaddingTop();
- final int endBound = getHeight() - getPaddingBottom();
-
- final int leftBound = getPaddingLeft();
- final int rightBound = getWidth() - getPaddingRight();
- final int left;
- final int right;
- final int top;
- final int bottom;
- if (panel != null && viewIsOpaque(panel)) {
- left = panel.getLeft();
- right = panel.getRight();
- top = panel.getTop();
- bottom = panel.getBottom();
- } else {
- left = right = top = bottom = 0;
- }
-
- for (int i = 0, childCount = getChildCount(); i < childCount; i++) {
- final View child = getChildAt(i);
-
- if (child == panel) {
- // There are still more children above the panel but they won't be affected.
- break;
- }
-
- final int clampedChildLeft = Math.max(leftBound, child.getLeft());
- final int clampedChildRight = Math.min(rightBound, child.getRight());
- final int clampedChildTop = Math.max(startBound, child.getTop());
- final int clampedChildBottom = Math.min(endBound, child.getBottom());
-
- final int vis;
- if (clampedChildLeft >= left && clampedChildTop >= top &&
- clampedChildRight <= right && clampedChildBottom <= bottom) {
- vis = INVISIBLE;
- } else {
- vis = VISIBLE;
- }
- child.setVisibility(vis);
- }
- }
-
- void setAllChildrenVisible() {
- for (int i = 0, childCount = getChildCount(); i < childCount; i++) {
- final View child = getChildAt(i);
- if (child.getVisibility() == INVISIBLE) {
- child.setVisibility(VISIBLE);
- }
- }
- }
-
- private static boolean viewIsOpaque(View v) {
- if (ViewCompat.isOpaque(v)) return true;
-
- final Drawable bg = v.getBackground();
- if (bg != null) {
- return bg.getOpacity() == PixelFormat.OPAQUE;
- }
- return false;
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- mFirstLayout = true;
- }
-
- @Override
- protected void onDetachedFromWindow() {
- super.onDetachedFromWindow();
- mFirstLayout = true;
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-
- int widthMode = MeasureSpec.getMode(widthMeasureSpec);
- int widthSize = MeasureSpec.getSize(widthMeasureSpec);
- int heightMode = MeasureSpec.getMode(heightMeasureSpec);
- int heightSize = MeasureSpec.getSize(heightMeasureSpec);
-
- if (widthMode != MeasureSpec.EXACTLY) {
- if (isInEditMode()) {
- // Don't crash the layout editor. Consume all of the space if specified
- // or pick a magic number from thin air otherwise.
- // TODO Better communication with tools of this bogus state.
- // It will crash on a real device.
- if (widthMode == MeasureSpec.AT_MOST) {
- widthMode = MeasureSpec.EXACTLY;
- } else if (widthMode == MeasureSpec.UNSPECIFIED) {
- widthMode = MeasureSpec.EXACTLY;
- widthSize = 300;
- }
- } else {
- throw new IllegalStateException("Width must have an exact value or MATCH_PARENT");
- }
- } else if (heightMode == MeasureSpec.UNSPECIFIED) {
- if (isInEditMode()) {
- // Don't crash the layout editor. Pick a magic number from thin air instead.
- // TODO Better communication with tools of this bogus state.
- // It will crash on a real device.
- if (heightMode == MeasureSpec.UNSPECIFIED) {
- heightMode = MeasureSpec.AT_MOST;
- heightSize = 300;
- }
- } else {
- throw new IllegalStateException("Height must not be UNSPECIFIED");
- }
- }
-
- int layoutWidth = 0;
- int maxLayoutWidth = -1;
- switch (widthMode) {
- case MeasureSpec.EXACTLY:
- layoutWidth = maxLayoutWidth = widthSize - getPaddingLeft() - getPaddingRight();
- break;
- case MeasureSpec.AT_MOST:
- maxLayoutWidth = widthSize - getPaddingLeft() - getPaddingRight();
- break;
- }
-
- float weightSum = 0;
- boolean canSlide = false;
- final int heightAvailable = heightSize - getPaddingTop() - getPaddingBottom();
- int heightRemaining = heightAvailable;
- final int childCount = getChildCount();
-
- if (childCount > 2) {
- Log.e(TAG, "onMeasure: More than two child views are not supported.");
- }
-
- // We'll find the current one below.
- mSlideableView = null;
-
- // First pass. Measure based on child LayoutParams width/height.
- // Weight will incur a second pass.
- for (int i = 0; i < childCount; i++) {
- final View child = getChildAt(i);
- final LayoutParams lp = (LayoutParams) child.getLayoutParams();
-
- if (child.getVisibility() == GONE) {
- continue;
- }
-
- if (lp.weight > 0) {
- weightSum += lp.weight;
-
- // If we have no height, weight is the only contributor to the final size.
- // Measure this view on the weight pass only.
- if (lp.height == 0) continue;
- }
-
- int childHeightSpec;
- final int verticalMargin = lp.topMargin + lp.bottomMargin;
- if (lp.height == LayoutParams.WRAP_CONTENT) {
- childHeightSpec = MeasureSpec.makeMeasureSpec(heightAvailable - verticalMargin,
- MeasureSpec.AT_MOST);
- } else if (lp.height == LayoutParams.MATCH_PARENT) {
- childHeightSpec = MeasureSpec.makeMeasureSpec(heightAvailable - verticalMargin,
- MeasureSpec.EXACTLY);
- } else {
- childHeightSpec = MeasureSpec.makeMeasureSpec(lp.height, MeasureSpec.EXACTLY);
- }
-
- int childWidthSpec;
- if (lp.width == LayoutParams.WRAP_CONTENT) {
- childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth, MeasureSpec.AT_MOST);
- } else if (lp.width == LayoutParams.MATCH_PARENT) {
- childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth, MeasureSpec.EXACTLY);
- } else {
- childWidthSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY);
- }
-
- child.measure(childWidthSpec, childHeightSpec);
- final int childWidth = child.getMeasuredWidth();
- final int childHeight = child.getMeasuredHeight();
-
- if (widthMode == MeasureSpec.AT_MOST && childWidth > layoutWidth) {
- layoutWidth = Math.min(childWidth, maxLayoutWidth);
- }
-
- heightRemaining -= childHeight;
- canSlide |= lp.slideable = heightRemaining < 0;
- if (lp.slideable) {
- mSlideableView = child;
- }
- }
-
- // Resolve weight and make sure non-sliding panels are smaller than the full screen.
- if (canSlide || weightSum > 0) {
- final int fixedPanelHeightLimit = heightAvailable - mOverhangSize;
-
- for (int i = 0; i < childCount; i++) {
- final View child = getChildAt(i);
-
- if (child.getVisibility() == GONE) {
- continue;
- }
-
- final LayoutParams lp = (LayoutParams) child.getLayoutParams();
-
- if (child.getVisibility() == GONE) {
- continue;
- }
-
- final boolean skippedFirstPass = lp.height == 0 && lp.weight > 0;
- final int measuredHeight = skippedFirstPass ? 0 : child.getMeasuredHeight();
- if (canSlide && child != mSlideableView) {
- if (lp.height < 0 && (measuredHeight > fixedPanelHeightLimit || lp.weight > 0)) {
- // Fixed panels in a sliding configuration should
- // be clamped to the fixed panel limit.
- final int childWidthSpec;
- if (skippedFirstPass) {
- // Do initial width measurement if we skipped measuring this view
- // the first time around.
- if (lp.width == LayoutParams.WRAP_CONTENT) {
- childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth,
- MeasureSpec.AT_MOST);
- } else if (lp.height == LayoutParams.MATCH_PARENT) {
- childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth,
- MeasureSpec.EXACTLY);
- } else {
- childWidthSpec = MeasureSpec.makeMeasureSpec(lp.width,
- MeasureSpec.EXACTLY);
- }
- } else {
- childWidthSpec = MeasureSpec.makeMeasureSpec(
- child.getMeasuredWidth(), MeasureSpec.EXACTLY);
- }
- final int childHeightSpec = MeasureSpec.makeMeasureSpec(
- fixedPanelHeightLimit, MeasureSpec.EXACTLY);
- child.measure(childWidthSpec, childHeightSpec);
- }
- } else if (lp.weight > 0) {
- int childWidthSpec;
- if (lp.height == 0) {
- // This was skipped the first time; figure out a real width spec.
- if (lp.width == LayoutParams.WRAP_CONTENT) {
- childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth,
- MeasureSpec.AT_MOST);
- } else if (lp.width == LayoutParams.MATCH_PARENT) {
- childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth,
- MeasureSpec.EXACTLY);
- } else {
- childWidthSpec = MeasureSpec.makeMeasureSpec(lp.width,
- MeasureSpec.EXACTLY);
- }
- } else {
- childWidthSpec = MeasureSpec.makeMeasureSpec(
- child.getMeasuredWidth(), MeasureSpec.EXACTLY);
- }
-
- if (canSlide) {
- // Consume available space
- final int verticalMargin = lp.topMargin + lp.bottomMargin;
- final int newHeight = heightAvailable - verticalMargin;
- final int childHeightSpec = MeasureSpec.makeMeasureSpec(
- newHeight, MeasureSpec.EXACTLY);
- if (measuredHeight != newHeight) {
- child.measure(childWidthSpec, childHeightSpec);
- }
- } else {
- // Distribute the extra width proportionally similar to LinearLayout
- final int heightToDistribute = Math.max(0, heightRemaining);
- final int addedHeight = (int) (lp.weight * heightToDistribute / weightSum);
- final int childHeightSpec = MeasureSpec.makeMeasureSpec(
- measuredHeight + addedHeight, MeasureSpec.EXACTLY);
- child.measure(childWidthSpec, childHeightSpec);
- }
- }
- }
- }
-
- final int measuredHeight = heightSize;
- final int measuredWidth = layoutWidth + getPaddingLeft() + getPaddingRight();
-
- setMeasuredDimension(measuredWidth, measuredHeight);
- mCanSlide = canSlide;
-
- if (mDragHelper.getViewDragState() != ViewDragHelper.STATE_IDLE && !canSlide) {
- // Cancel scrolling in progress, it's no longer relevant.
- mDragHelper.abort();
- }
- }
-
- @Override
- protected void onLayout(boolean changed, int l, int t, int r, int b) {
- mDragHelper.setEdgeTrackingEnabled(ViewDragHelper.EDGE_TOP);
-
- final int height = b - t;
- final int paddingTop = getPaddingTop();
- final int paddingBottom = getPaddingBottom();
- final int paddingLeft = getPaddingLeft();
-
- final int childCount = getChildCount();
- int yStart = paddingTop;
- int nextYStart = yStart;
-
- if (mFirstLayout) {
- mSlideOffset = mCanSlide && mPreservedOpenState ? 1.f : 0.f;
- }
-
- for (int i = 0; i < childCount; i++) {
- final View child = getChildAt(i);
-
- if (child.getVisibility() == GONE) {
- continue;
- }
-
- final LayoutParams lp = (LayoutParams) child.getLayoutParams();
-
- final int childHeight = child.getMeasuredHeight();
-
- if (lp.slideable) {
- final int margin = lp.topMargin + lp.bottomMargin;
- final int range = Math.min(nextYStart,
- height - paddingBottom - mOverhangSize) - yStart - margin;
- mSlideRange = range;
- final int lpMargin = lp.topMargin;
- final int pos = (int) (range * mSlideOffset);
- yStart += pos + lpMargin;
- updateSlideOffset(pos);
- } else {
- yStart = nextYStart;
- }
-
- final int childTop = yStart;
- final int childBottom = childTop + childHeight;
- final int childLeft = paddingLeft;
- final int childRight = childLeft + child.getMeasuredWidth();
-
- child.layout(childLeft, childTop, childRight, childBottom);
-
- nextYStart += child.getHeight();
- }
-
- if (mFirstLayout) {
- updateObscuredViewsVisibility(mSlideableView);
- }
-
- mFirstLayout = false;
- }
-
- @Override
- protected void onSizeChanged(int w, int h, int oldw, int oldh) {
- super.onSizeChanged(w, h, oldw, oldh);
- // Recalculate sliding panes and their details
- if (h != oldh) {
- mFirstLayout = true;
- }
- }
-
- @Override
- public void requestChildFocus(View child, View focused) {
- super.requestChildFocus(child, focused);
- if (!isInTouchMode() && !mCanSlide) {
- mPreservedOpenState = child == mSlideableView;
- }
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- final int action = MotionEventCompat.getActionMasked(ev);
-
- // Preserve the open state based on the last view that was touched.
- if (!mCanSlide && action == MotionEvent.ACTION_DOWN && getChildCount() > 1) {
- // After the first things will be slideable.
- final View secondChild = getChildAt(1);
- if (secondChild != null) {
- mPreservedOpenState = !mDragHelper.isViewUnder(secondChild,
- (int) ev.getX(), (int) ev.getY());
- }
- }
-
- if (!mCanSlide || (mIsUnableToDrag && action != MotionEvent.ACTION_DOWN)) {
- if (!mIsInNestedScroll) {
- mDragHelper.cancel();
- }
- return super.onInterceptTouchEvent(ev);
- }
-
- if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) {
- if (!mIsInNestedScroll) {
- mDragHelper.cancel();
- }
- return false;
- }
-
- switch (action) {
- case MotionEvent.ACTION_DOWN: {
- mIsUnableToDrag = false;
- final float x = ev.getX();
- final float y = ev.getY();
- mInitialMotionX = x;
- mInitialMotionY = y;
-
- break;
- }
-
- case MotionEvent.ACTION_MOVE: {
- final float x = ev.getX();
- final float y = ev.getY();
- final float adx = Math.abs(x - mInitialMotionX);
- final float ady = Math.abs(y - mInitialMotionY);
- final int slop = mDragHelper.getTouchSlop();
- if (ady > slop && adx > ady || !isCapturableViewUnder((int) x, (int) y)) {
- if (!mIsInNestedScroll) {
- mDragHelper.cancel();
- }
- mIsUnableToDrag = true;
- return false;
- }
- }
- }
-
- final boolean interceptForDrag = mDragHelper.shouldInterceptTouchEvent(ev);
-
- return interceptForDrag;
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- if (!mCanSlide) {
- return super.onTouchEvent(ev);
- }
-
- mDragHelper.processTouchEvent(ev);
-
- final int action = ev.getAction();
- boolean wantTouchEvents = true;
-
- switch (action & MotionEventCompat.ACTION_MASK) {
- case MotionEvent.ACTION_DOWN: {
- final float x = ev.getX();
- final float y = ev.getY();
- mInitialMotionX = x;
- mInitialMotionY = y;
- break;
- }
- }
-
- return wantTouchEvents;
- }
-
- /**
- * Refreshes the {@link OverlappingPaneLayout} be attempting to re-open or re-close the pane.
- * This ensures that the overlapping pane is repositioned based on any changes to the view
- * which is being overlapped.
- * <p>
- * The {@link #openPane()} and {@link #closePane()} methods do not perform any animation if the
- * pane has already been positioned appropriately.
- */
- public void refresh() {
- if (isOpen()) {
- openPane();
- } else {
- closePane();
- }
- }
-
- private boolean closePane(View pane, int initialVelocity) {
- if (mFirstLayout || smoothSlideTo(0.f, initialVelocity)) {
- mPreservedOpenState = false;
- return true;
- }
- return false;
- }
-
- private boolean openPane(View pane, int initialVelocity) {
- if (mFirstLayout || smoothSlideTo(1.f, initialVelocity)) {
- mPreservedOpenState = true;
- return true;
- }
- return false;
- }
-
- private void updateSlideOffset(int offsetPx) {
- mSlideOffsetPx = offsetPx;
- mSlideOffset = (float) mSlideOffsetPx / mSlideRange;
- }
-
- /**
- * Open the sliding pane if it is currently slideable. If first layout
- * has already completed this will animate.
- *
- * @return true if the pane was slideable and is now open/in the process of opening
- */
- public boolean openPane() {
- return openPane(mSlideableView, 0);
- }
-
- /**
- * Close the sliding pane if it is currently slideable. If first layout
- * has already completed this will animate.
- *
- * @return true if the pane was slideable and is now closed/in the process of closing
- */
- public boolean closePane() {
- return closePane(mSlideableView, 0);
- }
-
- /**
- * Check if the layout is open. It can be open either because the slider
- * itself is open revealing the left pane, or if all content fits without sliding.
- *
- * @return true if sliding panels are open
- */
- public boolean isOpen() {
- return !mCanSlide || mSlideOffset > 0;
- }
-
- /**
- * Check if the content in this layout cannot fully fit side by side and therefore
- * the content pane can be slid back and forth.
- *
- * @return true if content in this layout can be slid open and closed
- */
- public boolean isSlideable() {
- return mCanSlide;
- }
-
- private void onPanelDragged(int newTop) {
- if (mSlideableView == null) {
- // This can happen if we're aborting motion during layout because everything now fits.
- mSlideOffset = 0;
- return;
- }
- final LayoutParams lp = (LayoutParams) mSlideableView.getLayoutParams();
-
- final int lpMargin = lp.topMargin;
- final int topBound = getPaddingTop() + lpMargin;
-
- updateSlideOffset(newTop - topBound);
-
- dispatchOnPanelSlide(mSlideableView);
- }
-
- @Override
- protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
- final LayoutParams lp = (LayoutParams) child.getLayoutParams();
- boolean result;
- final int save = canvas.save(Canvas.CLIP_SAVE_FLAG);
-
- if (mCanSlide && !lp.slideable && mSlideableView != null) {
- // Clip against the slider; no sense drawing what will immediately be covered.
- canvas.getClipBounds(mTmpRect);
-
- mTmpRect.bottom = Math.min(mTmpRect.bottom, mSlideableView.getTop());
- canvas.clipRect(mTmpRect);
- }
-
- if (Build.VERSION.SDK_INT >= 11) { // HC
- result = super.drawChild(canvas, child, drawingTime);
- } else {
- if (child.isDrawingCacheEnabled()) {
- child.setDrawingCacheEnabled(false);
- }
- result = super.drawChild(canvas, child, drawingTime);
- }
-
- canvas.restoreToCount(save);
-
- return result;
- }
-
- /**
- * Smoothly animate mDraggingPane to the target X position within its range.
- *
- * @param slideOffset position to animate to
- * @param velocity initial velocity in case of fling, or 0.
- */
- boolean smoothSlideTo(float slideOffset, int velocity) {
- if (!mCanSlide) {
- // Nothing to do.
- return false;
- }
-
- final LayoutParams lp = (LayoutParams) mSlideableView.getLayoutParams();
-
- int y;
- int topBound = getPaddingTop() + lp.topMargin;
- y = (int) (topBound + slideOffset * mSlideRange);
-
- if (mDragHelper.smoothSlideViewTo(mSlideableView, mSlideableView.getLeft(), y)) {
- setAllChildrenVisible();
- ViewCompat.postInvalidateOnAnimation(this);
- return true;
- }
- return false;
- }
-
- @Override
- public void computeScroll() {
- if (mDragHelper.continueSettling(/* deferCallbacks = */ false)) {
- if (!mCanSlide) {
- mDragHelper.abort();
- return;
- }
-
- ViewCompat.postInvalidateOnAnimation(this);
- }
- }
-
- private boolean isCapturableViewUnder(int x, int y) {
- View capturableView = mCapturableView != null ? mCapturableView : mSlideableView;
- if (capturableView == null) {
- return false;
- }
- int[] viewLocation = new int[2];
- capturableView.getLocationOnScreen(viewLocation);
- int[] parentLocation = new int[2];
- this.getLocationOnScreen(parentLocation);
- int screenX = parentLocation[0] + x;
- int screenY = parentLocation[1] + y;
- return screenX >= viewLocation[0]
- && screenX < viewLocation[0] + capturableView.getWidth()
- && screenY >= viewLocation[1]
- && screenY < viewLocation[1] + capturableView.getHeight();
- }
-
- @Override
- protected ViewGroup.LayoutParams generateDefaultLayoutParams() {
- return new LayoutParams();
- }
-
- @Override
- protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) {
- return p instanceof MarginLayoutParams
- ? new LayoutParams((MarginLayoutParams) p)
- : new LayoutParams(p);
- }
-
- @Override
- protected boolean checkLayoutParams(ViewGroup.LayoutParams p) {
- return p instanceof LayoutParams && super.checkLayoutParams(p);
- }
-
- @Override
- public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) {
- return new LayoutParams(getContext(), attrs);
- }
-
- @Override
- protected Parcelable onSaveInstanceState() {
- Parcelable superState = super.onSaveInstanceState();
-
- SavedState ss = new SavedState(superState);
- ss.isOpen = isSlideable() ? isOpen() : mPreservedOpenState;
-
- return ss;
- }
-
- @Override
- protected void onRestoreInstanceState(Parcelable state) {
- SavedState ss = (SavedState) state;
- super.onRestoreInstanceState(ss.getSuperState());
-
- if (ss.isOpen) {
- openPane();
- } else {
- closePane();
- }
- mPreservedOpenState = ss.isOpen;
- }
-
- @Override
- public boolean onStartNestedScroll(View child, View target, int nestedScrollAxes) {
- final boolean startNestedScroll = (nestedScrollAxes & SCROLL_AXIS_VERTICAL) != 0;
- if (startNestedScroll) {
- mIsInNestedScroll = true;
- mDragHelper.startNestedScroll(mSlideableView);
- }
- if (DEBUG) {
- Log.d(TAG, "onStartNestedScroll: " + startNestedScroll);
- }
- return startNestedScroll;
- }
-
- @Override
- public void onNestedPreScroll(View target, int dx, int dy, int[] consumed) {
- if (dy == 0) {
- // Nothing to do
- return;
- }
- if (DEBUG) {
- Log.d(TAG, "onNestedPreScroll: " + dy);
- }
-
- mInNestedPreScrollDownwards = dy < 0;
- mInNestedPreScrollUpwards = dy > 0;
- mIsInNestedFling = false;
- mDragHelper.processNestedScroll(mSlideableView, 0, -dy, consumed);
- }
-
- @Override
- public boolean onNestedPreFling(View target, float velocityX, float velocityY) {
- if (!(velocityY > 0 && mSlideOffsetPx != 0
- || velocityY < 0 && mSlideOffsetPx < mIntermediateOffset
- || velocityY < 0 && mSlideOffsetPx < mSlideRange
- && mPanelSlideCallbacks.isScrollableChildUnscrolled())) {
- // No need to consume the fling if the fling won't collapse or expand the header.
- // How far we are willing to expand the header depends on isScrollableChildUnscrolled().
- return false;
- }
-
- if (DEBUG) {
- Log.d(TAG, "onNestedPreFling: " + velocityY);
- }
- mInUpwardsPreFling = velocityY > 0;
- mIsInNestedFling = true;
- mIsInNestedScroll = false;
- mDragHelper.processNestedFling(mSlideableView, (int) -velocityY);
- return true;
- }
-
- @Override
- public void onNestedScroll(View target, int dxConsumed, int dyConsumed, int dxUnconsumed,
- int dyUnconsumed) {
- if (DEBUG) {
- Log.d(TAG, "onNestedScroll: " + dyUnconsumed);
- }
- mIsInNestedFling = false;
- mDragHelper.processNestedScroll(mSlideableView, 0, -dyUnconsumed, null);
- }
-
- @Override
- public void onStopNestedScroll(View child) {
- if (DEBUG) {
- Log.d(TAG, "onStopNestedScroll");
- }
- if (mIsInNestedScroll && !mIsInNestedFling) {
- mDragHelper.stopNestedScroll(mSlideableView);
- mInNestedPreScrollDownwards = false;
- mInNestedPreScrollUpwards = false;
- mIsInNestedScroll = false;
- }
- }
-
- private class DragHelperCallback extends ViewDragHelper.Callback {
-
- @Override
- public boolean tryCaptureView(View child, int pointerId) {
- if (mIsUnableToDrag) {
- return false;
- }
-
- return ((LayoutParams) child.getLayoutParams()).slideable;
- }
-
- @Override
- public void onViewDragStateChanged(int state) {
- if (DEBUG) {
- Log.d(TAG, "onViewDragStateChanged: " + state);
- }
-
- if (mDragHelper.getViewDragState() == ViewDragHelper.STATE_IDLE) {
- if (mSlideOffset == 0) {
- updateObscuredViewsVisibility(mSlideableView);
- dispatchOnPanelClosed(mSlideableView);
- mPreservedOpenState = false;
- } else {
- dispatchOnPanelOpened(mSlideableView);
- mPreservedOpenState = true;
- }
- }
-
- if (state == ViewDragHelper.STATE_IDLE
- && mDragHelper.getVelocityMagnitude() > 0
- && mIsInNestedFling) {
- mIsInNestedFling = false;
- final int flingVelocity = !mInUpwardsPreFling ?
- -mDragHelper.getVelocityMagnitude() : mDragHelper.getVelocityMagnitude();
- mPanelSlideCallbacks.onPanelFlingReachesEdge(flingVelocity);
- }
- }
-
- @Override
- public void onViewCaptured(View capturedChild, int activePointerId) {
- // Make all child views visible in preparation for sliding things around
- setAllChildrenVisible();
- }
-
- @Override
- public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) {
- onPanelDragged(top);
- invalidate();
- }
-
- @Override
- public void onViewFling(View releasedChild, float xVelocity, float yVelocity) {
- if (releasedChild == null) {
- return;
- }
- if (DEBUG) {
- Log.d(TAG, "onViewFling: " + yVelocity);
- }
-
- // Flings won't always fully expand or collapse the header. Instead of performing the
- // fling and then waiting for the fling to end before snapping into place, we
- // immediately snap into place if we predict the fling won't fully expand or collapse
- // the header.
- int yOffsetPx = mDragHelper.predictFlingYOffset((int) yVelocity);
- if (yVelocity < 0) {
- // Only perform a fling if we know the fling will fully compress the header.
- if (-yOffsetPx > mSlideOffsetPx) {
- mDragHelper.flingCapturedView(releasedChild.getLeft(), /* minTop = */ 0,
- mSlideRange, Integer.MAX_VALUE, (int) yVelocity);
- } else {
- mIsInNestedFling = false;
- onViewReleased(releasedChild, xVelocity, yVelocity);
- }
- } else {
- // Only perform a fling if we know the fling will expand the header as far
- // as it can possible be expanded, given the isScrollableChildUnscrolled() value.
- if (yOffsetPx + mSlideOffsetPx >= mSlideRange
- && mPanelSlideCallbacks.isScrollableChildUnscrolled()) {
- mDragHelper.flingCapturedView(releasedChild.getLeft(), /* minTop = */ 0,
- Integer.MAX_VALUE, mSlideRange, (int) yVelocity);
- } else if (yOffsetPx + mSlideOffsetPx >= mIntermediateOffset
- && mSlideOffsetPx <= mIntermediateOffset
- && !mPanelSlideCallbacks.isScrollableChildUnscrolled()) {
- mDragHelper.flingCapturedView(releasedChild.getLeft(), /* minTop = */ 0,
- Integer.MAX_VALUE, mIntermediateOffset, (int) yVelocity);
- } else {
- mIsInNestedFling = false;
- onViewReleased(releasedChild, xVelocity, yVelocity);
- }
- }
-
- mInNestedPreScrollDownwards = false;
- mInNestedPreScrollUpwards = false;
-
- // Without this invalidate, some calls to flingCapturedView can have no affect.
- invalidate();
- }
-
- @Override
- public void onViewReleased(View releasedChild, float xvel, float yvel) {
- if (DEBUG) {
- Log.d(TAG, "onViewReleased: "
- + " mIsInNestedFling=" + mIsInNestedFling
- + " unscrolled=" + mPanelSlideCallbacks.isScrollableChildUnscrolled()
- + ", mInNestedPreScrollDownwards = " + mInNestedPreScrollDownwards
- + ", mInNestedPreScrollUpwards = " + mInNestedPreScrollUpwards
- + ", yvel=" + yvel);
- }
- if (releasedChild == null) {
- return;
- }
-
- final LayoutParams lp = (LayoutParams) releasedChild.getLayoutParams();
- int top = getPaddingTop() + lp.topMargin;
-
- // Decide where to snap to according to the current direction of motion and the current
- // position. The velocity's magnitude has no bearing on this.
- if (mInNestedPreScrollDownwards || yvel > 0) {
- // Scrolling downwards
- if (mSlideOffsetPx > mIntermediateOffset + mReleaseScrollSlop) {
- top += mSlideRange;
- } else if (mSlideOffsetPx > mReleaseScrollSlop) {
- top += mIntermediateOffset;
- } else {
- // Offset is very close to 0
- }
- } else if (mInNestedPreScrollUpwards || yvel < 0) {
- // Scrolling upwards
- if (mSlideOffsetPx > mSlideRange - mReleaseScrollSlop) {
- // Offset is very close to mSlideRange
- top += mSlideRange;
- } else if (mSlideOffsetPx > mIntermediateOffset - mReleaseScrollSlop) {
- // Offset is between mIntermediateOffset and mSlideRange.
- top += mIntermediateOffset;
- } else {
- // Offset is between 0 and mIntermediateOffset.
- }
- } else {
- // Not moving upwards or downwards. This case can only be triggered when directly
- // dragging the tabs. We don't bother to remember previous scroll direction
- // when directly dragging the tabs.
- if (0 <= mSlideOffsetPx && mSlideOffsetPx <= mIntermediateOffset / 2) {
- // Offset is between 0 and mIntermediateOffset, but closer to 0
- // Leave top unchanged
- } else if (mIntermediateOffset / 2 <= mSlideOffsetPx
- && mSlideOffsetPx <= (mIntermediateOffset + mSlideRange) / 2) {
- // Offset is closest to mIntermediateOffset
- top += mIntermediateOffset;
- } else {
- // Offset is between mIntermediateOffset and mSlideRange, but closer to
- // mSlideRange
- top += mSlideRange;
- }
- }
-
- mDragHelper.settleCapturedViewAt(releasedChild.getLeft(), top);
- invalidate();
- }
-
- @Override
- public int getViewVerticalDragRange(View child) {
- return mSlideRange;
- }
-
- @Override
- public int clampViewPositionHorizontal(View child, int left, int dx) {
- // Make sure we never move views horizontally.
- return child.getLeft();
- }
-
- @Override
- public int clampViewPositionVertical(View child, int top, int dy) {
- final LayoutParams lp = (LayoutParams) mSlideableView.getLayoutParams();
-
- final int newTop;
- int previousTop = top - dy;
- int topBound = getPaddingTop() + lp.topMargin;
- int bottomBound = topBound + (mPanelSlideCallbacks.isScrollableChildUnscrolled()
- || !mIsInNestedScroll ? mSlideRange : mIntermediateOffset);
- if (previousTop > bottomBound) {
- // We were previously below the bottomBound, so loosen the bottomBound so that this
- // makes sense. This can occur after the view was directly dragged by the tabs.
- bottomBound = Math.max(bottomBound, mSlideRange);
- }
- newTop = Math.min(Math.max(top, topBound), bottomBound);
-
- return newTop;
- }
-
- @Override
- public void onEdgeDragStarted(int edgeFlags, int pointerId) {
- mDragHelper.captureChildView(mSlideableView, pointerId);
- }
- }
-
- public static class LayoutParams extends ViewGroup.MarginLayoutParams {
- private static final int[] ATTRS = new int[] {
- android.R.attr.layout_weight
- };
-
- /**
- * The weighted proportion of how much of the leftover space
- * this child should consume after measurement.
- */
- public float weight = 0;
-
- /**
- * True if this pane is the slideable pane in the layout.
- */
- boolean slideable;
-
- public LayoutParams() {
- super(FILL_PARENT, FILL_PARENT);
- }
-
- public LayoutParams(int width, int height) {
- super(width, height);
- }
-
- public LayoutParams(android.view.ViewGroup.LayoutParams source) {
- super(source);
- }
-
- public LayoutParams(MarginLayoutParams source) {
- super(source);
- }
-
- public LayoutParams(LayoutParams source) {
- super(source);
- this.weight = source.weight;
- }
-
- public LayoutParams(Context c, AttributeSet attrs) {
- super(c, attrs);
-
- final TypedArray a = c.obtainStyledAttributes(attrs, ATTRS);
- this.weight = a.getFloat(0, 0);
- a.recycle();
- }
-
- }
-
- static class SavedState extends BaseSavedState {
- boolean isOpen;
-
- SavedState(Parcelable superState) {
- super(superState);
- }
-
- private SavedState(Parcel in) {
- super(in);
- isOpen = in.readInt() != 0;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- super.writeToParcel(out, flags);
- out.writeInt(isOpen ? 1 : 0);
- }
-
- public static final Parcelable.Creator<SavedState> CREATOR =
- new Parcelable.Creator<SavedState>() {
- public SavedState createFromParcel(Parcel in) {
- return new SavedState(in);
- }
-
- public SavedState[] newArray(int size) {
- return new SavedState[size];
- }
- };
- }
-
- class AccessibilityDelegate extends AccessibilityDelegateCompat {
- private final Rect mTmpRect = new Rect();
-
- @Override
- public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
- final AccessibilityNodeInfoCompat superNode = AccessibilityNodeInfoCompat.obtain(info);
- super.onInitializeAccessibilityNodeInfo(host, superNode);
- copyNodeInfoNoChildren(info, superNode);
- superNode.recycle();
-
- info.setClassName(OverlappingPaneLayout.class.getName());
- info.setSource(host);
-
- final ViewParent parent = ViewCompat.getParentForAccessibility(host);
- if (parent instanceof View) {
- info.setParent((View) parent);
- }
-
- // This is a best-approximation of addChildrenForAccessibility()
- // that accounts for filtering.
- final int childCount = getChildCount();
- for (int i = 0; i < childCount; i++) {
- final View child = getChildAt(i);
- if (child.getVisibility() == View.VISIBLE) {
- // Force importance to "yes" since we can't read the value.
- ViewCompat.setImportantForAccessibility(
- child, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES);
- info.addChild(child);
- }
- }
- }
-
- @Override
- public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) {
- super.onInitializeAccessibilityEvent(host, event);
-
- event.setClassName(OverlappingPaneLayout.class.getName());
- }
-
- /**
- * This should really be in AccessibilityNodeInfoCompat, but there unfortunately
- * seem to be a few elements that are not easily cloneable using the underlying API.
- * Leave it private here as it's not general-purpose useful.
- */
- private void copyNodeInfoNoChildren(AccessibilityNodeInfoCompat dest,
- AccessibilityNodeInfoCompat src) {
- final Rect rect = mTmpRect;
-
- src.getBoundsInParent(rect);
- dest.setBoundsInParent(rect);
-
- src.getBoundsInScreen(rect);
- dest.setBoundsInScreen(rect);
-
- dest.setVisibleToUser(src.isVisibleToUser());
- dest.setPackageName(src.getPackageName());
- dest.setClassName(src.getClassName());
- dest.setContentDescription(src.getContentDescription());
-
- dest.setEnabled(src.isEnabled());
- dest.setClickable(src.isClickable());
- dest.setFocusable(src.isFocusable());
- dest.setFocused(src.isFocused());
- dest.setAccessibilityFocused(src.isAccessibilityFocused());
- dest.setSelected(src.isSelected());
- dest.setLongClickable(src.isLongClickable());
-
- dest.addAction(src.getActions());
-
- dest.setMovementGranularities(src.getMovementGranularities());
- }
- }
-}
diff --git a/src/com/android/dialerbind/ObjectFactory.java b/src/com/android/dialerbind/ObjectFactory.java
index 54a5821df..dfacd3f6d 100644
--- a/src/com/android/dialerbind/ObjectFactory.java
+++ b/src/com/android/dialerbind/ObjectFactory.java
@@ -42,15 +42,15 @@ public class ObjectFactory {
* @param context The context to use.
* @param callFetcher Instance of call fetcher to use.
* @param contactInfoHelper Instance of contact info helper class to use.
- * @param isCallLog Is this call log adapter being used on the call log?
* @return Instance of CallLogAdapter.
*/
- public static CallLogAdapter newCallLogAdapter(Context context,
- CallFetcher callFetcher, ContactInfoHelper contactInfoHelper,
- CallItemExpandedListener callItemExpandedListener,
- OnReportButtonClickListener onReportButtonClickListener, boolean isCallLog) {
- return new CallLogAdapter(context, callFetcher, contactInfoHelper,
- callItemExpandedListener, onReportButtonClickListener, isCallLog);
+ public static CallLogAdapter newCallLogAdapter(
+ Context context,
+ CallFetcher callFetcher,
+ ContactInfoHelper contactInfoHelper,
+ OnReportButtonClickListener onReportButtonClickListener) {
+ return new CallLogAdapter(
+ context, callFetcher, contactInfoHelper, onReportButtonClickListener);
}
public static DialogFragment getReportDialogFragment(String number) {
diff --git a/tests/Android.mk b/tests/Android.mk
index d440f6a6d..30c6286c6 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -10,7 +10,11 @@ LOCAL_JAVA_LIBRARIES := android.test.runner
# Include all test java files.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_STATIC_JAVA_LIBRARIES += com.android.contacts.common.test
+src_dirs := src \
+ ../../ContactsCommon/TestCommon/src
+
+# Include all test java files.
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
LOCAL_PACKAGE_NAME := DialerTests
diff --git a/tests/res/drawable/default_icon.png b/tests/res/drawable/default_icon.png
deleted file mode 100644
index cea0eb3b7..000000000
--- a/tests/res/drawable/default_icon.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/xml/iconset.xml b/tests/res/xml/iconset.xml
index ec3894566..2f7798db1 100644
--- a/tests/res/xml/iconset.xml
+++ b/tests/res/xml/iconset.xml
@@ -17,7 +17,6 @@
<icon-set xmlns:android="http://schemas.android.com/apk/res/android">
- <icon-default android:icon="@drawable/default_icon" />
<icon android:mimeType="vnd.android.cursor.item/phone"
android:icon="@drawable/phone_icon" />
diff --git a/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java b/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
index 7ae2c2293..df4247b8e 100644
--- a/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
+++ b/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
@@ -239,7 +239,7 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase {
public void testSetCallDetailsHeader_PayphoneNumber() {
setCallDetailsHeaderWithNumber("", Calls.PRESENTATION_PAYPHONE);
assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("Pay phone", mNameView.getText().toString());
+ assertEquals("Payphone", mNameView.getText().toString());
}
public void testSetCallDetailsHeader_VoicemailNumber() {
diff --git a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
index 9b3e6bcc4..845e279c9 100644
--- a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
@@ -23,6 +23,8 @@ import android.test.suitebuilder.annotation.SmallTest;
import android.view.View;
import android.widget.LinearLayout;
+import com.android.dialer.contactinfo.ContactInfoCache;
+import com.android.dialer.contactinfo.ContactInfoCache.OnContactInfoChangedListener;
import com.google.common.collect.Lists;
import java.util.List;
@@ -88,9 +90,9 @@ public class CallLogAdapterTest extends AndroidTestCase {
mAdapter.bindStandAloneView(mView, getContext(), mCursor);
// There is one request for contact details.
- assertEquals(1, mAdapter.requests.size());
+ assertEquals(1, mAdapter.getContactInfoCache().requests.size());
- TestCallLogAdapter.Request request = mAdapter.requests.get(0);
+ TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
// It is for the number we need to show.
assertEquals(TEST_NUMBER, request.number);
// It has the right country.
@@ -106,9 +108,9 @@ public class CallLogAdapterTest extends AndroidTestCase {
mAdapter.bindStandAloneView(mView, getContext(), mCursor);
// There is one request for contact details.
- assertEquals(1, mAdapter.requests.size());
+ assertEquals(1, mAdapter.getContactInfoCache().requests.size());
- TestCallLogAdapter.Request request = mAdapter.requests.get(0);
+ TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
// The values passed to the request, match the ones in the call log cache.
assertEquals(TEST_NAME, request.callLogInfo.name);
assertEquals(1, request.callLogInfo.type);
@@ -124,9 +126,9 @@ public class CallLogAdapterTest extends AndroidTestCase {
mAdapter.bindStandAloneView(mView, getContext(), mCursor);
// There is one request for contact details.
- assertEquals(1, mAdapter.requests.size());
+ assertEquals(1, mAdapter.getContactInfoCache().requests.size());
- TestCallLogAdapter.Request request = mAdapter.requests.get(0);
+ TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
// Since there is something in the cache, it is not an immediate request.
assertFalse("should not be immediate", request.immediate);
}
@@ -139,7 +141,7 @@ public class CallLogAdapterTest extends AndroidTestCase {
mAdapter.bindStandAloneView(mView, getContext(), mCursor);
// Cache and call log are up-to-date: no need to request update.
- assertEquals(0, mAdapter.requests.size());
+ assertEquals(0, mAdapter.getContactInfoCache().requests.size());
}
public void testBindView_MismatchBetwenCallLogAndMemoryCache_EnqueueRequest() {
@@ -154,9 +156,9 @@ public class CallLogAdapterTest extends AndroidTestCase {
mAdapter.bindStandAloneView(mView, getContext(), mCursor);
// There is one request for contact details.
- assertEquals(1, mAdapter.requests.size());
+ assertEquals(1, mAdapter.getContactInfoCache().requests.size());
- TestCallLogAdapter.Request request = mAdapter.requests.get(0);
+ TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
// Since there is something in the cache, it is not an immediate request.
assertFalse("should not be immediate", request.immediate);
}
@@ -191,9 +193,20 @@ public class CallLogAdapterTest extends AndroidTestCase {
/**
* Subclass of {@link CallLogAdapter} used in tests to intercept certain calls.
*/
- // TODO: This would be better done by splitting the contact lookup into a collaborator class
- // instead.
private static final class TestCallLogAdapter extends CallLogAdapter {
+ public TestCallLogAdapter(Context context, CallFetcher callFetcher,
+ ContactInfoHelper contactInfoHelper) {
+ super(context, callFetcher, contactInfoHelper, null);
+ mContactInfoCache = new TestContactInfoCache(
+ contactInfoHelper, mOnContactInfoChangedListener);
+ }
+
+ public TestContactInfoCache getContactInfoCache() {
+ return (TestContactInfoCache) mContactInfoCache;
+ }
+ }
+
+ private static final class TestContactInfoCache extends ContactInfoCache {
public static class Request {
public final String number;
public final String countryIso;
@@ -211,9 +224,9 @@ public class CallLogAdapterTest extends AndroidTestCase {
public final List<Request> requests = Lists.newArrayList();
- public TestCallLogAdapter(Context context, CallFetcher callFetcher,
- ContactInfoHelper contactInfoHelper) {
- super(context, callFetcher, contactInfoHelper, null, null, false);
+ public TestContactInfoCache(
+ ContactInfoHelper contactInfoHelper, OnContactInfoChangedListener listener) {
+ super(contactInfoHelper, listener);
}
@Override
diff --git a/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java b/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
index b88989d4d..b57489d55 100644
--- a/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
@@ -57,7 +57,7 @@ import java.util.Random;
* runtest contacts
* or
* adb shell am instrument \
- * -w com.android.contacts.tests/android.test.InstrumentationTestRunner
+ * -w com.android.dialer.tests/android.test.InstrumentationTestRunner
*/
@LargeTest
public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<FragmentTestActivity> {
@@ -126,7 +126,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
// Do not process requests for details during tests. This would start a background thread,
// which makes the tests flaky.
mAdapter.disableRequestProcessingForTest();
- mAdapter.stopRequestProcessing();
+ mAdapter.pauseCache();
mParentView = new FrameLayout(mActivity);
mCursor = new MatrixCursor(CallLogQuery._PROJECTION);
}
@@ -177,7 +177,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
mCursor.moveToFirst();
insertPrivate(NOW, 0);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
}
@MediumTest
@@ -193,7 +193,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
mCursor.moveToFirst();
insert(TEST_NUMBER, Calls.PRESENTATION_ALLOWED, NOW, 0, Calls.INCOMING_TYPE);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
assertNameIs(views, TEST_NUMBER);
@@ -207,7 +207,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
values[CallLogQuery.CACHED_FORMATTED_NUMBER] = TEST_FORMATTED_NUMBER;
insertValues(values);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
assertNameIs(views, TEST_FORMATTED_NUMBER);
@@ -221,7 +221,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
"John Doe", Phone.TYPE_HOME, TEST_DEFAULT_CUSTOM_LABEL);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
assertNameIs(views, "John Doe");
@@ -234,7 +234,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
insertWithCachedValues("sip:johndoe@gmail.com", NOW, 0, Calls.INCOMING_TYPE,
"John Doe", Phone.TYPE_HOME, TEST_DEFAULT_CUSTOM_LABEL);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
assertNameIs(views, "John Doe");
@@ -249,7 +249,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
"John Doe", Phone.TYPE_HOME, TEST_DEFAULT_CUSTOM_LABEL);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
assertNameIs(views, "John Doe");
@@ -264,7 +264,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
"John Doe", Phone.TYPE_WORK, TEST_DEFAULT_CUSTOM_LABEL);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
assertNameIs(views, "John Doe");
@@ -278,7 +278,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
"John Doe", Phone.TYPE_CUSTOM, numberLabel);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
assertNameIs(views, "John Doe");
@@ -291,7 +291,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
"John Doe", Phone.TYPE_HOME, "");
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
assertTrue(views.quickContactView.isEnabled());
@@ -302,7 +302,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
mCursor.moveToFirst();
insert(TEST_NUMBER, Calls.PRESENTATION_ALLOWED, NOW, 0, Calls.INCOMING_TYPE);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
assertFalse(views.quickContactView.isEnabled());
@@ -313,7 +313,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
mCursor.moveToFirst();
insert(TEST_NUMBER, Calls.PRESENTATION_ALLOWED, NOW, 0, Calls.INCOMING_TYPE);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
@@ -334,7 +334,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
mCursor.moveToFirst();
insertVoicemail(TEST_NUMBER, Calls.PRESENTATION_ALLOWED, NOW, 0);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindViewForTest(view, getActivity(), mCursor);
+ bindViewForTest(view, mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
IntentProvider intentProvider = (IntentProvider) views.voicemailButtonView.getTag();
@@ -424,7 +424,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
if (null == mList[i]) {
mList[i] = mAdapter.newStandAloneView(mActivity, mParentView);
}
- mAdapter.bindViewForTest(mList[i], mActivity, mCursor);
+ bindViewForTest(mList[i], mCursor);
mCursor.moveToPrevious();
i++;
}
@@ -442,6 +442,19 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
//
/**
+ * Bind a call log entry view for testing purposes. Also inflates the action view stub so
+ * unit tests can access the buttons contained within.
+ *
+ * @param view The current call log row.
+ * @param cursor The cursor to bind from.
+ */
+ private void bindViewForTest(View view, MatrixCursor cursor) {
+ mAdapter.bindView(view, cursor, /* count */ 1);
+ CallLogListItemViews views = (CallLogListItemViews) view.getTag();
+ mAdapter.expandItem(views, /* expand */ true);
+ }
+
+ /**
* Insert a certain number of random numbers in the DB. Makes sure
* there is at least one private and one unknown number in the DB.
* @param num Of entries to be inserted.
@@ -627,7 +640,7 @@ public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<Fragme
/** Asserts that the name text view is shown and contains the given text. */
private void assertNameIs(CallLogListItemViews views, String name) {
assertEquals(View.VISIBLE, views.phoneCallDetailsViews.nameView.getVisibility());
- assertEquals(name, views.phoneCallDetailsViews.nameView.getText());
+ assertEquals(name, views.phoneCallDetailsViews.nameView.getText().toString());
}
/** Asserts that the label text view contains the given text. */
diff --git a/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java b/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java
index 9d34bbfbe..5b4629318 100644
--- a/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java
+++ b/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java
@@ -29,7 +29,7 @@ public class CallLogQueryTestUtils {
public static Object[] createTestValues() {
Object[] values = new Object[]{
0L, "", 0L, 0L, Calls.INCOMING_TYPE, "", "", "", null, 0, null, null, null, null,
- 0L, null, 0, Calls.PRESENTATION_ALLOWED, null, null, 0, null, null
+ 0L, null, 0, Calls.PRESENTATION_ALLOWED, null, null, 0, null, null, null
};
assertEquals(CallLogQuery._PROJECTION.length, values.length);
return values;
diff --git a/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java b/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java
new file mode 100644
index 000000000..3eb5f06b1
--- /dev/null
+++ b/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java
@@ -0,0 +1,311 @@
+/*
+ * Copyright (C) 2015 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 static com.android.dialer.calllog.GroupingListAdapter.ITEM_TYPE_GROUP_HEADER;
+import static com.android.dialer.calllog.GroupingListAdapter.ITEM_TYPE_IN_GROUP;
+import static com.android.dialer.calllog.GroupingListAdapter.ITEM_TYPE_STANDALONE;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.test.AndroidTestCase;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+
+/**
+ * Tests for {@link GroupingListAdapter}.
+ *
+ * Running all tests:
+ *
+ * adb shell am instrument -e class com.android.dialer.calllog.GroupingListAdapterTests \
+ * -w com.google.android.dialer.tests/android.test.InstrumentationTestRunner
+ */
+public class GroupingListAdapterTests extends AndroidTestCase {
+
+ static private final String[] PROJECTION = new String[] {
+ "_id",
+ "group",
+ };
+
+ private static final int GROUPING_COLUMN_INDEX = 1;
+
+ private MatrixCursor mCursor;
+ private long mNextId;
+
+ private GroupingListAdapter mAdapter = new GroupingListAdapter(null) {
+
+ @Override
+ protected void addGroups(Cursor cursor) {
+ int count = cursor.getCount();
+ int groupItemCount = 1;
+ cursor.moveToFirst();
+ String currentValue = cursor.getString(GROUPING_COLUMN_INDEX);
+ for (int i = 1; i < count; i++) {
+ cursor.moveToNext();
+ String value = cursor.getString(GROUPING_COLUMN_INDEX);
+ if (TextUtils.equals(value, currentValue)) {
+ groupItemCount++;
+ } else {
+ if (groupItemCount > 1) {
+ addGroup(i - groupItemCount, groupItemCount, false);
+ }
+
+ groupItemCount = 1;
+ currentValue = value;
+ }
+ }
+ if (groupItemCount > 1) {
+ addGroup(count - groupItemCount, groupItemCount, false);
+ }
+ }
+
+ @Override
+ protected void bindChildView(View view, Context context, Cursor cursor) {
+ }
+
+ @Override
+ protected void bindGroupView(View view, Context context, Cursor cursor, int groupSize,
+ boolean expanded) {
+ }
+
+ @Override
+ protected void bindStandAloneView(View view, Context context, Cursor cursor) {
+ }
+
+ @Override
+ protected View newChildView(Context context, ViewGroup parent) {
+ return null;
+ }
+
+ @Override
+ protected View newGroupView(Context context, ViewGroup parent) {
+ return null;
+ }
+
+ @Override
+ protected View newStandAloneView(Context context, ViewGroup parent) {
+ return null;
+ }
+ };
+
+ private void buildCursor(String... numbers) {
+ mCursor = new MatrixCursor(PROJECTION);
+ mNextId = 1;
+ for (String number : numbers) {
+ mCursor.addRow(new Object[]{mNextId, number});
+ mNextId++;
+ }
+ }
+
+ public void testGroupingWithoutGroups() {
+ buildCursor("1", "2", "3");
+ mAdapter.changeCursor(mCursor);
+
+ assertEquals(3, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_STANDALONE, false, 1);
+ assertPositionMetadata(2, ITEM_TYPE_STANDALONE, false, 2);
+ }
+
+ public void testGroupingWithCollapsedGroupAtTheBeginning() {
+ buildCursor("1", "1", "2");
+ mAdapter.changeCursor(mCursor);
+
+ assertEquals(2, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_GROUP_HEADER, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_STANDALONE, false, 2);
+ }
+
+ public void testGroupingWithExpandedGroupAtTheBeginning() {
+ buildCursor("1", "1", "2");
+ mAdapter.changeCursor(mCursor);
+ mAdapter.toggleGroup(0);
+
+ assertEquals(4, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_GROUP_HEADER, true, 0);
+ assertPositionMetadata(1, ITEM_TYPE_IN_GROUP, false, 0);
+ assertPositionMetadata(2, ITEM_TYPE_IN_GROUP, false, 1);
+ assertPositionMetadata(3, ITEM_TYPE_STANDALONE, false, 2);
+ }
+
+ public void testGroupingWithExpandCollapseCycleAtTheBeginning() {
+ buildCursor("1", "1", "2");
+ mAdapter.changeCursor(mCursor);
+ mAdapter.toggleGroup(0);
+ mAdapter.toggleGroup(0);
+
+ assertEquals(2, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_GROUP_HEADER, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_STANDALONE, false, 2);
+ }
+
+ public void testGroupingWithCollapsedGroupInTheMiddle() {
+ buildCursor("1", "2", "2", "2", "3");
+ mAdapter.changeCursor(mCursor);
+
+ assertEquals(3, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, false, 1);
+ assertPositionMetadata(2, ITEM_TYPE_STANDALONE, false, 4);
+ }
+
+ public void testGroupingWithExpandedGroupInTheMiddle() {
+ buildCursor("1", "2", "2", "2", "3");
+ mAdapter.changeCursor(mCursor);
+ mAdapter.toggleGroup(1);
+
+ assertEquals(6, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, true, 1);
+ assertPositionMetadata(2, ITEM_TYPE_IN_GROUP, false, 1);
+ assertPositionMetadata(3, ITEM_TYPE_IN_GROUP, false, 2);
+ assertPositionMetadata(4, ITEM_TYPE_IN_GROUP, false, 3);
+ assertPositionMetadata(5, ITEM_TYPE_STANDALONE, false, 4);
+ }
+
+ public void testGroupingWithCollapsedGroupAtTheEnd() {
+ buildCursor("1", "2", "3", "3", "3");
+ mAdapter.changeCursor(mCursor);
+
+ assertEquals(3, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_STANDALONE, false, 1);
+ assertPositionMetadata(2, ITEM_TYPE_GROUP_HEADER, false, 2);
+ }
+
+ public void testGroupingWithExpandedGroupAtTheEnd() {
+ buildCursor("1", "2", "3", "3", "3");
+ mAdapter.changeCursor(mCursor);
+ mAdapter.toggleGroup(2);
+
+ assertEquals(6, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_STANDALONE, false, 1);
+ assertPositionMetadata(2, ITEM_TYPE_GROUP_HEADER, true, 2);
+ assertPositionMetadata(3, ITEM_TYPE_IN_GROUP, false, 2);
+ assertPositionMetadata(4, ITEM_TYPE_IN_GROUP, false, 3);
+ assertPositionMetadata(5, ITEM_TYPE_IN_GROUP, false, 4);
+ }
+
+ public void testGroupingWithMultipleCollapsedGroups() {
+ buildCursor("1", "2", "2", "3", "4", "4", "5", "5", "6");
+ mAdapter.changeCursor(mCursor);
+
+ assertEquals(6, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, false, 1);
+ assertPositionMetadata(2, ITEM_TYPE_STANDALONE, false, 3);
+ assertPositionMetadata(3, ITEM_TYPE_GROUP_HEADER, false, 4);
+ assertPositionMetadata(4, ITEM_TYPE_GROUP_HEADER, false, 6);
+ assertPositionMetadata(5, ITEM_TYPE_STANDALONE, false, 8);
+ }
+
+ public void testGroupingWithMultipleExpandedGroups() {
+ buildCursor("1", "2", "2", "3", "4", "4", "5", "5", "6");
+ mAdapter.changeCursor(mCursor);
+ mAdapter.toggleGroup(1);
+
+ // Note that expanding the group of 2's shifted the group of 5's down from the
+ // 4th to the 6th position
+ mAdapter.toggleGroup(6);
+
+ assertEquals(10, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, true, 1);
+ assertPositionMetadata(2, ITEM_TYPE_IN_GROUP, false, 1);
+ assertPositionMetadata(3, ITEM_TYPE_IN_GROUP, false, 2);
+ assertPositionMetadata(4, ITEM_TYPE_STANDALONE, false, 3);
+ assertPositionMetadata(5, ITEM_TYPE_GROUP_HEADER, false, 4);
+ assertPositionMetadata(6, ITEM_TYPE_GROUP_HEADER, true, 6);
+ assertPositionMetadata(7, ITEM_TYPE_IN_GROUP, false, 6);
+ assertPositionMetadata(8, ITEM_TYPE_IN_GROUP, false, 7);
+ assertPositionMetadata(9, ITEM_TYPE_STANDALONE, false, 8);
+ }
+
+ public void testPositionCache() {
+ buildCursor("1", "2", "2", "3", "4", "4", "5", "5", "6");
+ mAdapter.changeCursor(mCursor);
+
+ // First pass - building up cache
+ assertEquals(6, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, false, 1);
+ assertPositionMetadata(2, ITEM_TYPE_STANDALONE, false, 3);
+ assertPositionMetadata(3, ITEM_TYPE_GROUP_HEADER, false, 4);
+ assertPositionMetadata(4, ITEM_TYPE_GROUP_HEADER, false, 6);
+ assertPositionMetadata(5, ITEM_TYPE_STANDALONE, false, 8);
+
+ // Second pass - using cache
+ assertEquals(6, mAdapter.getCount());
+ assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, false, 1);
+ assertPositionMetadata(2, ITEM_TYPE_STANDALONE, false, 3);
+ assertPositionMetadata(3, ITEM_TYPE_GROUP_HEADER, false, 4);
+ assertPositionMetadata(4, ITEM_TYPE_GROUP_HEADER, false, 6);
+ assertPositionMetadata(5, ITEM_TYPE_STANDALONE, false, 8);
+
+ // Invalidate cache by expanding a group
+ mAdapter.toggleGroup(1);
+
+ // First pass - building up cache
+ assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, true, 1);
+ assertPositionMetadata(2, ITEM_TYPE_IN_GROUP, false, 1);
+ assertPositionMetadata(3, ITEM_TYPE_IN_GROUP, false, 2);
+ assertPositionMetadata(4, ITEM_TYPE_STANDALONE, false, 3);
+ assertPositionMetadata(5, ITEM_TYPE_GROUP_HEADER, false, 4);
+ assertPositionMetadata(6, ITEM_TYPE_GROUP_HEADER, false, 6);
+ assertPositionMetadata(7, ITEM_TYPE_STANDALONE, false, 8);
+
+ // Second pass - using cache
+ assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+ assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, true, 1);
+ assertPositionMetadata(2, ITEM_TYPE_IN_GROUP, false, 1);
+ assertPositionMetadata(3, ITEM_TYPE_IN_GROUP, false, 2);
+ assertPositionMetadata(4, ITEM_TYPE_STANDALONE, false, 3);
+ assertPositionMetadata(5, ITEM_TYPE_GROUP_HEADER, false, 4);
+ assertPositionMetadata(6, ITEM_TYPE_GROUP_HEADER, false, 6);
+ assertPositionMetadata(7, ITEM_TYPE_STANDALONE, false, 8);
+ }
+
+ public void testGroupDescriptorArrayGrowth() {
+ String[] numbers = new String[500];
+ for (int i = 0; i < numbers.length; i++) {
+
+ // Make groups of 2
+ numbers[i] = String.valueOf((i / 2) * 2);
+ }
+
+ buildCursor(numbers);
+ mAdapter.changeCursor(mCursor);
+
+ assertEquals(250, mAdapter.getCount());
+ }
+
+ private void assertPositionMetadata(int position, int itemType, boolean isExpanded,
+ int cursorPosition) {
+ GroupingListAdapter.PositionMetadata metadata = new GroupingListAdapter.PositionMetadata();
+ mAdapter.obtainPositionMetadata(metadata, position);
+ assertEquals(itemType, metadata.itemType);
+ if (metadata.itemType == ITEM_TYPE_GROUP_HEADER) {
+ assertEquals(isExpanded, metadata.isExpanded);
+ }
+ assertEquals(cursorPosition, metadata.cursorPosition);
+ }
+}
diff --git a/tests/src/com/android/dialer/util/TestConstants.java b/tests/src/com/android/dialer/util/TestConstants.java
index 780626a27..ff4a2faad 100644
--- a/tests/src/com/android/dialer/util/TestConstants.java
+++ b/tests/src/com/android/dialer/util/TestConstants.java
@@ -1,7 +1,5 @@
package com.android.dialer.util;
-import android.content.Intent;
-
public class TestConstants {
- public static final String CALL_INTENT_ACTION = Intent.ACTION_CALL;
+ public static final String CALL_INTENT_ACTION = PrivilegedCallUtil.CALL_ACTION;
}