summaryrefslogtreecommitdiff
path: root/java/com/android/dialer
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer')
-rw-r--r--java/com/android/dialer/about/AndroidManifest.xml2
-rw-r--r--java/com/android/dialer/about/res/raw/keep.xml1
-rw-r--r--java/com/android/dialer/app/AndroidManifest.xml1
-rw-r--r--java/com/android/dialer/app/DialtactsActivity.java69
-rw-r--r--java/com/android/dialer/app/SpecialCharSequenceMgr.java5
-rw-r--r--java/com/android/dialer/app/calllog/CallLogAdapter.java158
-rw-r--r--java/com/android/dialer/app/calllog/CallLogFragment.java29
-rw-r--r--java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java82
-rw-r--r--java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java11
-rw-r--r--java/com/android/dialer/app/calllog/IntentProvider.java9
-rw-r--r--java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java6
-rw-r--r--java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipop.java74
-rw-r--r--java/com/android/dialer/app/contactinfo/ContactInfoCache.java8
-rw-r--r--java/com/android/dialer/app/dialpad/DialpadFragment.java10
-rw-r--r--java/com/android/dialer/app/filterednumber/NumbersAdapter.java5
-rw-r--r--java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java1
-rw-r--r--java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java2
-rw-r--r--java/com/android/dialer/app/list/AllContactsFragment.java8
-rw-r--r--java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java33
-rw-r--r--java/com/android/dialer/app/list/DialerViewPager.java55
-rw-r--r--java/com/android/dialer/app/list/ListsFragment.java59
-rw-r--r--java/com/android/dialer/app/list/OldSpeedDialFragment.java18
-rw-r--r--java/com/android/dialer/app/list/PhoneFavoriteListView.java19
-rw-r--r--java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java4
-rw-r--r--java/com/android/dialer/app/list/PhoneFavoriteTileView.java38
-rw-r--r--java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java79
-rw-r--r--java/com/android/dialer/app/list/RegularSearchFragment.java4
-rw-r--r--java/com/android/dialer/app/list/RemoveView.java2
-rw-r--r--java/com/android/dialer/app/list/SearchFragment.java4
-rw-r--r--java/com/android/dialer/app/list/SmartDialSearchFragment.java2
-rw-r--r--java/com/android/dialer/app/manifests/activities/AndroidManifest.xml2
-rw-r--r--java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_48dp.pngbin0 -> 749 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_blue_24dp.pngbin0 -> 408 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable-hdpi/ic_empty_check_mark_white_24dp.pngbin0 -> 375 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable-hdpi/ic_results_phone.pngbin1084 -> 0 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable-mdpi/ic_check_mark_48dp.pngbin0 -> 526 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable-mdpi/ic_results_phone.pngbin801 -> 0 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable-xhdpi/ic_check_mark_48dp.pngbin0 -> 981 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable-xhdpi/ic_results_phone.pngbin1376 -> 0 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable-xxhdpi/ic_check_mark_48dp.pngbin0 -> 1443 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable-xxhdpi/ic_results_phone.pngbin2090 -> 0 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable-xxxhdpi/ic_check_mark_48dp.pngbin0 -> 1893 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable-xxxhdpi/ic_results_phone.pngbin2281 -> 0 bytes
-rw-r--r--java/com/android/dialer/app/res/drawable/ic_search_phone.xml20
-rw-r--r--java/com/android/dialer/app/res/drawable/ic_wifi_calling.xml29
-rw-r--r--java/com/android/dialer/app/res/layout-land/empty_content_view_dialpad_search.xml6
-rw-r--r--java/com/android/dialer/app/res/layout/action_mode_close_button.xml31
-rw-r--r--java/com/android/dialer/app/res/layout/all_contacts_fragment.xml2
-rw-r--r--java/com/android/dialer/app/res/layout/call_log_fragment.xml2
-rw-r--r--java/com/android/dialer/app/res/layout/call_log_list_item.xml2
-rw-r--r--java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml4
-rw-r--r--java/com/android/dialer/app/res/layout/dialpad_fragment.xml47
-rw-r--r--java/com/android/dialer/app/res/layout/empty_content_view_dialpad_search.xml6
-rw-r--r--java/com/android/dialer/app/res/layout/lists_fragment.xml143
-rw-r--r--java/com/android/dialer/app/res/layout/search_edittext.xml2
-rw-r--r--java/com/android/dialer/app/res/layout/speed_dial_fragment.xml2
-rw-r--r--java/com/android/dialer/app/res/values-af/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-am/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ar/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-az/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-be/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-bg/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-bn/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-bs/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ca/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-cs/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-da/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-de/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-el/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-en-rAU/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-en-rGB/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-en-rIN/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-es-rUS/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-es/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-et/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-eu/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-fa/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-fi/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-fr-rCA/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-fr/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-gl/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-gu/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-hi/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-hr/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-hu/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-hy/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-in/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-is/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-it/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-iw/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ja/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ka/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-kk/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-km/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-kn/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ko/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ky/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-lo/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-lt/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-lv/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-mk/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ml/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-mn/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-mr/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ms/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-my/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-nb/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ne/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-nl/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-no/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-pa/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-pl/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-pt-rBR/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-pt-rPT/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-pt/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ro/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ru/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-si/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-sk/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-sl/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-sq/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-sr/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-sv/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-sw/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ta/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-te/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-th/strings.xml14
-rw-r--r--java/com/android/dialer/app/res/values-tl/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-tr/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-uk/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-ur/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-uz/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-vi/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-zh-rCN/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-zh-rHK/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-zh-rTW/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values-zu/strings.xml12
-rw-r--r--java/com/android/dialer/app/res/values/colors.xml4
-rw-r--r--java/com/android/dialer/app/res/values/dimens.xml3
-rw-r--r--java/com/android/dialer/app/res/values/strings.xml55
-rw-r--r--java/com/android/dialer/app/res/values/styles.xml14
-rw-r--r--java/com/android/dialer/app/res/xml/sound_settings.xml4
-rw-r--r--java/com/android/dialer/app/settings/AppCompatPreferenceActivity.java5
-rw-r--r--java/com/android/dialer/app/settings/DialerSettingsActivity.java15
-rw-r--r--java/com/android/dialer/app/settings/SoundSettingsFragment.java10
-rw-r--r--java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java13
-rw-r--r--java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java4
-rw-r--r--java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml2
-rw-r--r--java/com/android/dialer/app/widget/DialpadSearchEmptyContentView.java1
-rw-r--r--java/com/android/dialer/app/widget/SearchEditTextLayout.java22
-rw-r--r--java/com/android/dialer/binary/aosp/AospDialerRootComponent.java2
-rw-r--r--java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java4
-rw-r--r--java/com/android/dialer/binary/common/DialerApplication.java5
-rw-r--r--java/com/android/dialer/callcomposer/AndroidManifest.xml2
-rw-r--r--java/com/android/dialer/callcomposer/CallComposerActivity.java73
-rw-r--r--java/com/android/dialer/callcomposer/CameraComposerFragment.java13
-rw-r--r--java/com/android/dialer/callcomposer/GalleryCursorLoader.java4
-rw-r--r--java/com/android/dialer/callcomposer/MessageComposerFragment.java36
-rw-r--r--java/com/android/dialer/callcomposer/camera/CameraManager.java19
-rw-r--r--java/com/android/dialer/callcomposer/camera/ImagePersistTask.java38
-rw-r--r--java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml12
-rw-r--r--java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml2
-rw-r--r--java/com/android/dialer/callcomposer/res/values-ca/strings.xml4
-rw-r--r--java/com/android/dialer/callcomposer/res/values/styles.xml2
-rw-r--r--java/com/android/dialer/calldetails/AndroidManifest.xml4
-rw-r--r--java/com/android/dialer/calldetails/CallDetailsActivity.java15
-rw-r--r--java/com/android/dialer/calldetails/CallDetailsAdapter.java14
-rw-r--r--java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java19
-rw-r--r--java/com/android/dialer/calldetails/res/layout/contact_container.xml6
-rw-r--r--java/com/android/dialer/calldetails/res/values-af/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-am/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ar/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-az/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-be/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-bg/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-bn/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-bs/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ca/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-cs/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-da/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-de/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-el/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-es/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-et/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-eu/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-fa/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-fi/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-fr/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-gl/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-gu/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-hi/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-hr/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-hu/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-hy/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-in/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-is/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-it/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-iw/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ja/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ka/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-kk/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-km/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-kn/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ko/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ky/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-lo/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-lt/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-lv/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-mk/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ml/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-mn/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-mr/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ms/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-my/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-nb/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ne/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-nl/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-no/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-pa/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-pl/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-pt/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ro/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ru/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-si/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-sk/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-sl/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-sq/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-sr/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-sv/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-sw/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ta/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-te/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-th/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-tl/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-tr/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-uk/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-ur/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-uz/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-vi/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values-zu/strings.xml1
-rw-r--r--java/com/android/dialer/calldetails/res/values/dimens.xml2
-rw-r--r--java/com/android/dialer/calldetails/res/values/strings.xml4
-rw-r--r--java/com/android/dialer/calldetails/res/values/styles.xml18
-rw-r--r--java/com/android/dialer/callintent/call_specific_app_data.proto4
-rw-r--r--java/com/android/dialer/callintent/speed_dial_contact_type.proto18
-rw-r--r--java/com/android/dialer/calllog/CallLogComponent.java2
-rw-r--r--java/com/android/dialer/calllog/CallLogFramework.java3
-rw-r--r--java/com/android/dialer/calllog/CallLogModule.java8
-rw-r--r--java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java113
-rw-r--r--java/com/android/dialer/calllog/database/AndroidManifest.xml28
-rw-r--r--java/com/android/dialer/calllog/database/AnnotatedCallLog.java53
-rw-r--r--java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java310
-rw-r--r--java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java17
-rw-r--r--java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java40
-rw-r--r--java/com/android/dialer/calllog/database/CallLogMutations.java58
-rw-r--r--java/com/android/dialer/calllog/database/Coalescer.java142
-rw-r--r--java/com/android/dialer/calllog/database/MutationApplier.java105
-rw-r--r--java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java114
-rw-r--r--java/com/android/dialer/calllog/datasources/CallLogDataSource.java67
-rw-r--r--java/com/android/dialer/calllog/datasources/CallLogMutations.java110
-rw-r--r--java/com/android/dialer/calllog/datasources/DataSources.java (renamed from java/com/android/dialer/calllog/DataSources.java)5
-rw-r--r--java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java22
-rw-r--r--java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java209
-rw-r--r--java/com/android/dialer/calllog/datasources/util/RowCombiner.java53
-rw-r--r--java/com/android/dialer/calllog/testing/FakeCallLogApplication.java39
-rw-r--r--java/com/android/dialer/calllog/ui/AndroidManifest.xml2
-rw-r--r--java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java48
-rw-r--r--java/com/android/dialer/calllog/ui/NewCallLogAdapter.java53
-rw-r--r--java/com/android/dialer/calllog/ui/NewCallLogFragment.java93
-rw-r--r--java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java43
-rw-r--r--java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml16
-rw-r--r--java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml7
-rw-r--r--java/com/android/dialer/common/Assert.java4
-rw-r--r--java/com/android/dialer/common/concurrent/DialerExecutorComponent.java39
-rw-r--r--java/com/android/dialer/common/concurrent/DialerExecutorModule.java28
-rw-r--r--java/com/android/dialer/compat/CompatUtils.java155
-rw-r--r--java/com/android/dialer/constants/Constants.java3
-rw-r--r--java/com/android/dialer/constants/ScheduledJobIds.java1
-rw-r--r--java/com/android/dialer/constants/TrafficStatsTags.java28
-rw-r--r--java/com/android/dialer/constants/aospdialer/ConstantsImpl.java6
-rw-r--r--java/com/android/dialer/contactactions/AndroidManifest.xml16
-rw-r--r--java/com/android/dialer/contactactions/ContactActionBottomSheet.java136
-rw-r--r--java/com/android/dialer/contactactions/ContactActionModule.java38
-rw-r--r--java/com/android/dialer/contactactions/DividerModule.java41
-rw-r--r--java/com/android/dialer/contactactions/IntentModule.java75
-rw-r--r--java/com/android/dialer/contactactions/res/layout/contact_layout.xml53
-rw-r--r--java/com/android/dialer/contactactions/res/layout/divider_layout.xml23
-rw-r--r--java/com/android/dialer/contactactions/res/layout/module_layout.xml40
-rw-r--r--java/com/android/dialer/contactactions/res/layout/sheet_layout.xml24
-rw-r--r--java/com/android/dialer/contactactions/res/values/dimens.xml20
-rw-r--r--java/com/android/dialer/contactsfragment/ContactViewHolder.java11
-rw-r--r--java/com/android/dialer/contactsfragment/ContactsAdapter.java49
-rw-r--r--java/com/android/dialer/contactsfragment/ContactsCursorLoader.java27
-rw-r--r--java/com/android/dialer/contactsfragment/ContactsFragment.java138
-rw-r--r--java/com/android/dialer/contactsfragment/FastScroller.java129
-rw-r--r--java/com/android/dialer/contactsfragment/res/drawable/fast_scroller_container_background.xml28
-rw-r--r--java/com/android/dialer/contactsfragment/res/drawable/fast_scroller_scroll_bar.xml32
-rw-r--r--java/com/android/dialer/contactsfragment/res/layout/contact_row.xml6
-rw-r--r--java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml40
-rw-r--r--java/com/android/dialer/contactsfragment/res/values/dimens.xml9
-rw-r--r--java/com/android/dialer/database/DialerDatabaseHelper.java357
-rw-r--r--java/com/android/dialer/dialercontact/dialer_contact.proto (renamed from java/com/android/dialer/callcomposer/proto/call_composer_contact.proto)4
-rw-r--r--java/com/android/dialer/dialpadview/res/values/dimens.xml2
-rw-r--r--java/com/android/dialer/interactions/PhoneNumberInteraction.java9
-rw-r--r--java/com/android/dialer/location/CountryDetector.java6
-rw-r--r--java/com/android/dialer/logging/LoggingBindings.java18
-rw-r--r--java/com/android/dialer/logging/LoggingBindingsStub.java17
-rw-r--r--java/com/android/dialer/logging/contact_lookup_result.proto1
-rw-r--r--java/com/android/dialer/logging/contact_source.proto1
-rw-r--r--java/com/android/dialer/logging/dialer_impression.proto19
-rw-r--r--java/com/android/dialer/logging/interaction_event.proto20
-rw-r--r--java/com/android/dialer/logging/reporting_location.proto1
-rw-r--r--java/com/android/dialer/logging/screen_event.proto1
-rw-r--r--java/com/android/dialer/multimedia/MultimediaData.java6
-rw-r--r--java/com/android/dialer/oem/CequintCallerIdManager.java98
-rw-r--r--java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java4
-rw-r--r--java/com/android/dialer/oem/MotorolaUtils.java25
-rw-r--r--java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml17
-rw-r--r--java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml17
-rw-r--r--java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml17
-rw-r--r--java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml17
-rw-r--r--java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml17
-rw-r--r--java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml17
-rw-r--r--java/com/android/dialer/oem/res/values/motorola_config.xml19
-rw-r--r--java/com/android/dialer/phonenumbercache/ContactInfo.java4
-rw-r--r--java/com/android/dialer/phonenumbercache/ContactInfoHelper.java8
-rw-r--r--java/com/android/dialer/postcall/AndroidManifest.xml2
-rw-r--r--java/com/android/dialer/postcall/PostCall.java16
-rw-r--r--java/com/android/dialer/protos/ProtoParsers.java125
-rw-r--r--java/com/android/dialer/searchfragment/AndroidManifest.xml16
-rw-r--r--java/com/android/dialer/searchfragment/NewSearchFragment.java83
-rw-r--r--java/com/android/dialer/searchfragment/QueryUtil.java269
-rw-r--r--java/com/android/dialer/searchfragment/README.md62
-rw-r--r--java/com/android/dialer/searchfragment/SearchAdapter.java84
-rw-r--r--java/com/android/dialer/searchfragment/SearchContactCursor.java390
-rw-r--r--java/com/android/dialer/searchfragment/SearchContactViewHolder.java203
-rw-r--r--java/com/android/dialer/searchfragment/SearchContactsCursorLoader.java57
-rw-r--r--java/com/android/dialer/searchfragment/SearchCursorManager.java229
-rw-r--r--java/com/android/dialer/searchfragment/res/layout/fragment_search.xml21
-rw-r--r--java/com/android/dialer/searchfragment/res/layout/search_contact_row.xml75
-rw-r--r--java/com/android/dialer/searchfragment/res/values/dimens.xml23
-rw-r--r--java/com/android/dialer/shortcuts/AndroidManifest.xml2
-rw-r--r--java/com/android/dialer/telecom/TelecomUtil.java80
-rw-r--r--java/com/android/dialer/theme/res/values-af/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-am/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ar/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-az/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-be/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-bg/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-bn/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-bs/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ca/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-cs/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-da/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-de/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-el/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-en-rAU/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-en-rGB/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-en-rIN/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-es-rUS/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-es/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-et/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-eu/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-fa/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-fi/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-fr-rCA/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-fr/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-gl/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-gu/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-hi/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-hr/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-hu/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-hy/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-in/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-is/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-it/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-iw/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ja/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ka/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-kk/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-km/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-kn/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ko/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ky/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-lo/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-lt/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-lv/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-mk/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ml/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-mn/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-mr/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ms/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-my/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-nb/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ne/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-nl/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-no/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-pa/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-pl/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-pt-rBR/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-pt-rPT/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-pt/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ro/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ru/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-si/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-sk/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-sl/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-sq/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-sr/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-sv/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-sw/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ta/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-te/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-th/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-tl/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-tr/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-uk/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-ur/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-uz/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-vi/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-zh-rCN/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-zh-rHK/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-zh-rTW/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values-zu/strings.xml2
-rw-r--r--java/com/android/dialer/theme/res/values/strings.xml6
-rw-r--r--java/com/android/dialer/theme/res/values/themes.xml43
-rw-r--r--java/com/android/dialer/util/CallUtil.java22
-rw-r--r--java/com/android/dialer/util/PermissionsUtil.java8
-rw-r--r--java/com/android/dialer/widget/DialerToolbar.java5
-rw-r--r--java/com/android/dialer/widget/EmptyContentView.java (renamed from java/com/android/dialer/app/widget/EmptyContentView.java)20
-rw-r--r--java/com/android/dialer/widget/MessageFragment.java29
-rw-r--r--java/com/android/dialer/widget/res/drawable-hdpi/empty_contacts.png (renamed from java/com/android/dialer/app/res/drawable-hdpi/empty_contacts.png)bin2461 -> 2461 bytes
-rw-r--r--java/com/android/dialer/widget/res/drawable-mdpi/empty_contacts.png (renamed from java/com/android/dialer/app/res/drawable-mdpi/empty_contacts.png)bin1778 -> 1778 bytes
-rw-r--r--java/com/android/dialer/widget/res/drawable-xhdpi/empty_contacts.png (renamed from java/com/android/dialer/app/res/drawable-xhdpi/empty_contacts.png)bin3352 -> 3352 bytes
-rw-r--r--java/com/android/dialer/widget/res/drawable-xxhdpi/empty_contacts.png (renamed from java/com/android/dialer/app/res/drawable-xxhdpi/empty_contacts.png)bin3686 -> 3686 bytes
-rw-r--r--java/com/android/dialer/widget/res/drawable-xxxhdpi/empty_contacts.png (renamed from java/com/android/dialer/app/res/drawable-xxxhdpi/empty_contacts.png)bin5204 -> 5204 bytes
-rw-r--r--java/com/android/dialer/widget/res/layout/dialer_toolbar.xml8
-rw-r--r--java/com/android/dialer/widget/res/layout/empty_content_view.xml (renamed from java/com/android/dialer/app/res/layout/empty_content_view.xml)6
-rw-r--r--java/com/android/dialer/widget/res/layout/fragment_message.xml4
-rw-r--r--java/com/android/dialer/widget/res/values-af/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-am/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ar/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-az/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-be/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-bg/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-bn/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-bs/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ca/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-cs/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-da/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-de/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-el/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-en-rAU/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-en-rGB/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-en-rIN/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-es-rUS/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-es/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-et/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-eu/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-fa/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-fi/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-fr-rCA/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-fr/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-gl/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-gu/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-hi/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-hr/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-hu/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-hy/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-in/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-is/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-it/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-iw/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ja/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ka/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-kk/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-km/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-kn/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ko/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ky/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-lo/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-lt/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-lv/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-mk/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ml/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-mn/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-mr/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ms/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-my/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-nb/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ne/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-nl/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-no/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-pa/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-pl/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-pt-rBR/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-pt-rPT/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-pt/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ro/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ru/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-si/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-sk/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-sl/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-sq/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-sr/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-sv/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-sw/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ta/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-te/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-th/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-tl/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-tr/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-uk/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-ur/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-uz/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-vi/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-zh-rCN/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-zh-rHK/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-zh-rTW/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values-zu/strings.xml5
-rw-r--r--java/com/android/dialer/widget/res/values/colors.xml4
-rw-r--r--java/com/android/dialer/widget/res/values/dimens.xml5
-rw-r--r--java/com/android/dialer/widget/res/values/strings.xml15
537 files changed, 6731 insertions, 2072 deletions
diff --git a/java/com/android/dialer/about/AndroidManifest.xml b/java/com/android/dialer/about/AndroidManifest.xml
index e9489ce1e..85c750826 100644
--- a/java/com/android/dialer/about/AndroidManifest.xml
+++ b/java/com/android/dialer/about/AndroidManifest.xml
@@ -1,6 +1,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.dialer.about">
- <application>
+ <application android:theme="@style/Theme.AppCompat">
<activity
android:name="com.android.dialer.about.LicenseMenuActivity"
android:label="@string/licenseActivityLabel"
diff --git a/java/com/android/dialer/about/res/raw/keep.xml b/java/com/android/dialer/about/res/raw/keep.xml
index e41b8b8d0..9215627d1 100644
--- a/java/com/android/dialer/about/res/raw/keep.xml
+++ b/java/com/android/dialer/about/res/raw/keep.xml
@@ -16,4 +16,3 @@
-->
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@raw/*"/>
-
diff --git a/java/com/android/dialer/app/AndroidManifest.xml b/java/com/android/dialer/app/AndroidManifest.xml
index de4b48c51..4200082a6 100644
--- a/java/com/android/dialer/app/AndroidManifest.xml
+++ b/java/com/android/dialer/app/AndroidManifest.xml
@@ -39,6 +39,7 @@
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
+ <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL"/>
<uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL"/>
<uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL"/>
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index 6e2c6be7d..b5e615075 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -91,6 +91,7 @@ import com.android.dialer.callcomposer.CallComposerActivity;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.Assert;
+import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
import com.android.dialer.database.Database;
import com.android.dialer.database.DialerDatabaseHelper;
@@ -106,6 +107,7 @@ import com.android.dialer.p13n.logging.P13nLogger;
import com.android.dialer.p13n.logging.P13nLogging;
import com.android.dialer.postcall.PostCall;
import com.android.dialer.proguard.UsedByReflection;
+import com.android.dialer.searchfragment.NewSearchFragment;
import com.android.dialer.simulator.Simulator;
import com.android.dialer.simulator.SimulatorComponent;
import com.android.dialer.smartdial.SmartDialNameMatcher;
@@ -154,6 +156,7 @@ public class DialtactsActivity extends TransactionSafeActivity
private static final String KEY_FIRST_LAUNCH = "first_launch";
private static final String KEY_WAS_CONFIGURATION_CHANGE = "was_configuration_change";
private static final String KEY_IS_DIALPAD_SHOWN = "is_dialpad_shown";
+ private static final String TAG_NEW_SEARCH_FRAGMENT = "new_search";
private static final String TAG_REGULAR_SEARCH_FRAGMENT = "search";
private static final String TAG_SMARTDIAL_SEARCH_FRAGMENT = "smartdial";
private static final String TAG_FAVORITES_FRAGMENT = "favorites";
@@ -162,6 +165,7 @@ public class DialtactsActivity extends TransactionSafeActivity
private static final int ACTIVITY_REQUEST_CODE_VOICE_SEARCH = 1;
public static final int ACTIVITY_REQUEST_CODE_CALL_COMPOSE = 2;
+ public static final int ACTIVITY_REQUEST_CODE_LIGHTBRINGER = 3;
private static final int FAB_SCALE_IN_DELAY_MS = 300;
@@ -180,6 +184,9 @@ public class DialtactsActivity extends TransactionSafeActivity
/** Fragment for searching phone numbers using the dialpad. */
private SmartDialSearchFragment mSmartDialSearchFragment;
+ /** new Fragment for search phone numbers using the keyboard and the dialpad. */
+ private NewSearchFragment mNewSearchFragment;
+
/** Animation that slides in. */
private Animation mSlideIn;
@@ -262,6 +269,7 @@ public class DialtactsActivity extends TransactionSafeActivity
}
mSearchQuery = newText;
+ // TODO: show p13n when newText is empty.
// Show search fragment only when the query string is changed to non-empty text.
if (!TextUtils.isEmpty(newText)) {
// Call enterSearchUi only if we are switching search modes, or showing a search
@@ -277,6 +285,8 @@ public class DialtactsActivity extends TransactionSafeActivity
mSmartDialSearchFragment.setQueryString(mSearchQuery);
} else if (mRegularSearchFragment != null && mRegularSearchFragment.isVisible()) {
mRegularSearchFragment.setQueryString(mSearchQuery);
+ } else if (mNewSearchFragment != null) {
+ mNewSearchFragment.setQuery(mSearchQuery);
}
}
@@ -630,6 +640,8 @@ public class DialtactsActivity extends TransactionSafeActivity
} else if (fragment instanceof ListsFragment) {
mListsFragment = (ListsFragment) fragment;
mListsFragment.addOnPageChangeListener(this);
+ } else if (fragment instanceof NewSearchFragment) {
+ mNewSearchFragment = (NewSearchFragment) fragment;
}
if (fragment instanceof SearchFragment) {
final SearchFragment searchFragment = (SearchFragment) fragment;
@@ -785,6 +797,7 @@ public class DialtactsActivity extends TransactionSafeActivity
if (animate) {
mFloatingActionButtonController.scaleOut();
+ maybeEnterSearchUi();
} else {
mFloatingActionButtonController.setVisible(false);
maybeEnterSearchUi();
@@ -1057,7 +1070,11 @@ public class DialtactsActivity extends TransactionSafeActivity
}
final String tag;
- if (smartDialSearch) {
+ boolean useNewSearch =
+ ConfigProviderBindings.get(this).getBoolean("enable_new_search_fragment", false);
+ if (useNewSearch) {
+ tag = TAG_NEW_SEARCH_FRAGMENT;
+ } else if (smartDialSearch) {
tag = TAG_SMARTDIAL_SEARCH_FRAGMENT;
} else {
tag = TAG_REGULAR_SEARCH_FRAGMENT;
@@ -1067,40 +1084,52 @@ public class DialtactsActivity extends TransactionSafeActivity
mFloatingActionButtonController.scaleOut();
- SearchFragment fragment = (SearchFragment) getFragmentManager().findFragmentByTag(tag);
if (animate) {
transaction.setCustomAnimations(android.R.animator.fade_in, 0);
} else {
transaction.setTransition(FragmentTransaction.TRANSIT_NONE);
}
+
+ Fragment fragment = getFragmentManager().findFragmentByTag(tag);
if (fragment == null) {
- if (smartDialSearch) {
+ if (useNewSearch) {
+ fragment = new NewSearchFragment();
+ } else if (smartDialSearch) {
fragment = new SmartDialSearchFragment();
} else {
fragment = Bindings.getLegacy(this).newRegularSearchFragment();
- fragment.setOnTouchListener(
- new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- // Show the FAB when the user touches the lists fragment and the soft
- // keyboard is hidden.
- hideDialpadFragment(true, false);
- showFabInSearchUi();
- v.performClick();
- return false;
- }
- });
+ ((SearchFragment) fragment)
+ .setOnTouchListener(
+ (v, event) -> {
+ // Show the FAB when the user touches the lists fragment and the soft
+ // keyboard is hidden.
+ hideDialpadFragment(true, false);
+ v.performClick();
+ return false;
+ });
}
transaction.add(R.id.dialtacts_frame, fragment, tag);
} else {
+ // TODO: if this is a transition from dialpad to searchbar, animate fragment
+ // down, and vice versa. Perhaps just add a coordinator behavior with the search bar.
transaction.show(fragment);
}
+
// DialtactsActivity will provide the options menu
fragment.setHasOptionsMenu(false);
+
// Will show empty list if P13nRanker is not enabled. Else, re-ranked list by the ranker.
- fragment.setShowEmptyListForNullQuery(mP13nRanker.shouldShowEmptyListForNullQuery());
- if (!smartDialSearch) {
- fragment.setQueryString(query);
+ if (!useNewSearch) {
+ ((SearchFragment) fragment)
+ .setShowEmptyListForNullQuery(mP13nRanker.shouldShowEmptyListForNullQuery());
+ } else {
+ // TODO: add p13n ranker to new search.
+ }
+
+ if (!smartDialSearch && !useNewSearch) {
+ ((SearchFragment) fragment).setQueryString(query);
+ } else if (useNewSearch) {
+ ((NewSearchFragment) fragment).setQuery(query);
}
transaction.commit();
@@ -1146,6 +1175,9 @@ public class DialtactsActivity extends TransactionSafeActivity
if (mRegularSearchFragment != null) {
transaction.remove(mRegularSearchFragment);
}
+ if (mNewSearchFragment != null) {
+ transaction.remove(mNewSearchFragment);
+ }
transaction.commit();
Assert.isNotNull(mListsFragment.getView()).animate().alpha(1).withLayer();
@@ -1477,6 +1509,7 @@ public class DialtactsActivity extends TransactionSafeActivity
Arrays.toString(grantResults)));
}
+ /** Popup menu accessible from the search bar */
protected class OptionsPopupMenu extends PopupMenu {
public OptionsPopupMenu(Context context, View anchor) {
diff --git a/java/com/android/dialer/app/SpecialCharSequenceMgr.java b/java/com/android/dialer/app/SpecialCharSequenceMgr.java
index 85c2ea650..20222d68c 100644
--- a/java/com/android/dialer/app/SpecialCharSequenceMgr.java
+++ b/java/com/android/dialer/app/SpecialCharSequenceMgr.java
@@ -47,7 +47,6 @@ import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.Selec
import com.android.dialer.calllogutils.PhoneAccountUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.CompatUtils;
import com.android.dialer.oem.MotorolaUtils;
import com.android.dialer.telecom.TelecomUtil;
import java.util.ArrayList;
@@ -299,9 +298,7 @@ public class SpecialCharSequenceMgr {
: R.string.meid;
List<String> deviceIds = new ArrayList<String>();
- if (TelephonyManagerCompat.getPhoneCount(telephonyManager) > 1
- && CompatUtils.isMethodAvailable(
- TelephonyManagerCompat.TELEPHONY_MANAGER_CLASS, "getDeviceId", Integer.TYPE)) {
+ if (TelephonyManagerCompat.getPhoneCount(telephonyManager) > 1) {
for (int slot = 0; slot < telephonyManager.getPhoneCount(); slot++) {
String deviceId = telephonyManager.getDeviceId(slot);
if (!TextUtils.isEmpty(deviceId)) {
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index 2f8a58c8a..3357ee2f1 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -86,6 +86,7 @@ import com.android.dialer.phonenumbercache.ContactInfoHelper;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import com.android.dialer.spam.Spam;
import com.android.dialer.util.PermissionsUtil;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -105,11 +106,12 @@ public class CallLogAdapter extends GroupingListAdapter
private static final String KEY_EXPANDED_POSITION = "expanded_position";
private static final String KEY_EXPANDED_ROW_ID = "expanded_row_id";
+ private static final String KEY_ACTION_MODE = "action_mode_selected_items";
public static final String LOAD_DATA_TASK_IDENTIFIER = "load_data";
public static final String ENABLE_CALL_LOG_MULTI_SELECT = "enable_call_log_multiselect";
- public static final boolean ENABLE_CALL_LOG_MULTI_SELECT_FLAG = false;
+ public static final boolean ENABLE_CALL_LOG_MULTI_SELECT_FLAG = true;
protected final Activity mActivity;
protected final VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
@@ -117,6 +119,7 @@ public class CallLogAdapter extends GroupingListAdapter
protected final CallLogCache mCallLogCache;
private final CallFetcher mCallFetcher;
+ private final MultiSelectRemoveView mMultiSelectRemoveView;
@NonNull private final FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler;
private final int mActivityType;
@@ -136,6 +139,8 @@ public class CallLogAdapter extends GroupingListAdapter
private final CallLogAlertManager mCallLogAlertManager;
public ActionMode mActionMode = null;
+ public boolean selectAllMode = false;
+ public boolean deselectAllMode = false;
private final SparseArray<String> selectedItems = new SparseArray<>();
private final ActionMode.Callback mActionModeCallback =
@@ -144,10 +149,16 @@ public class CallLogAdapter extends GroupingListAdapter
// Called when the action mode is created; startActionMode() was called
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+ if (mActivity != null) {
+ announceforAccessibility(
+ mActivity.getCurrentFocus(),
+ mActivity.getString(R.string.description_entering_bulk_action_mode));
+ }
mActionMode = mode;
// Inflate a menu resource providing context menu items
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.actionbar_delete, menu);
+ mMultiSelectRemoveView.showMultiSelectRemoveView(true);
return true;
}
@@ -165,7 +176,6 @@ public class CallLogAdapter extends GroupingListAdapter
if (selectedItems.size() > 0) {
showDeleteSelectedItemsDialog();
}
- mode.finish();
return true;
} else {
return false;
@@ -175,8 +185,16 @@ public class CallLogAdapter extends GroupingListAdapter
// Called when the user exits the action mode
@Override
public void onDestroyActionMode(ActionMode mode) {
+ if (mActivity != null) {
+ announceforAccessibility(
+ mActivity.getCurrentFocus(),
+ mActivity.getString(R.string.description_leaving_bulk_action_mode));
+ }
selectedItems.clear();
mActionMode = null;
+ selectAllMode = false;
+ deselectAllMode = false;
+ mMultiSelectRemoveView.showMultiSelectRemoveView(false);
notifyDataSetChanged();
}
};
@@ -202,6 +220,7 @@ public class CallLogAdapter extends GroupingListAdapter
@Override
public void onClick(DialogInterface dialog, int id) {
deleteSelectedItems(voicemailsToDeleteOnConfirmation);
+ mActionMode.finish();
dialog.cancel();
}
});
@@ -258,22 +277,15 @@ public class CallLogAdapter extends GroupingListAdapter
return;
}
if (mActionMode != null && viewHolder.voicemailUri != null) {
+ selectAllMode = false;
+ deselectAllMode = false;
+ mMultiSelectRemoveView.setSelectAllModeToFalse();
int id = getVoicemailId(viewHolder.voicemailUri);
if (selectedItems.get(id) != null) {
- selectedItems.delete(id);
- viewHolder.checkBoxView.setVisibility(View.GONE);
- viewHolder.quickContactView.setVisibility(View.VISIBLE);
+ uncheckMarkCallLogEntry(viewHolder, id);
} else {
- viewHolder.quickContactView.setVisibility(View.GONE);
- viewHolder.checkBoxView.setVisibility(View.VISIBLE);
- selectedItems.put(getVoicemailId(viewHolder.voicemailUri), viewHolder.voicemailUri);
- }
-
- if (selectedItems.size() == 0) {
- mActionMode.finish();
- return;
+ checkMarkCallLogEntry(viewHolder);
}
- mActionMode.setTitle(Integer.toString(selectedItems.size()));
return;
}
@@ -312,6 +324,48 @@ public class CallLogAdapter extends GroupingListAdapter
}
};
+ private void checkMarkCallLogEntry(CallLogListItemViewHolder viewHolder) {
+ announceforAccessibility(
+ mActivity.getCurrentFocus(),
+ mActivity.getString(
+ R.string.description_selecting_bulk_action_mode, viewHolder.nameOrNumber));
+ viewHolder.quickContactView.setVisibility(View.GONE);
+ viewHolder.checkBoxView.setVisibility(View.VISIBLE);
+ selectedItems.put(getVoicemailId(viewHolder.voicemailUri), viewHolder.voicemailUri);
+ updateActionBar();
+ }
+
+ private void announceforAccessibility(View view, String announcement) {
+ if (view != null) {
+ view.announceForAccessibility(announcement);
+ }
+ }
+
+ private void updateActionBar() {
+ if (mActionMode == null && selectedItems.size() > 0) {
+ mActivity.startActionMode(mActionModeCallback);
+ }
+ if (mActionMode != null) {
+ mActionMode.setTitle(
+ mActivity
+ .getResources()
+ .getString(
+ R.string.voicemailMultiSelectActionBarTitle,
+ Integer.toString(selectedItems.size())));
+ }
+ }
+
+ private void uncheckMarkCallLogEntry(CallLogListItemViewHolder viewHolder, int id) {
+ announceforAccessibility(
+ mActivity.getCurrentFocus(),
+ mActivity.getString(
+ R.string.description_unselecting_bulk_action_mode, viewHolder.nameOrNumber));
+ selectedItems.delete(id);
+ viewHolder.checkBoxView.setVisibility(View.GONE);
+ viewHolder.quickContactView.setVisibility(View.VISIBLE);
+ updateActionBar();
+ }
+
private static int getVoicemailId(String voicemailUri) {
Assert.checkArgument(voicemailUri != null);
Assert.checkArgument(voicemailUri.length() > 0);
@@ -358,6 +412,7 @@ public class CallLogAdapter extends GroupingListAdapter
Activity activity,
ViewGroup alertContainer,
CallFetcher callFetcher,
+ MultiSelectRemoveView multiSelectRemoveView,
CallLogCache callLogCache,
ContactInfoCache contactInfoCache,
VoicemailPlaybackPresenter voicemailPlaybackPresenter,
@@ -367,6 +422,7 @@ public class CallLogAdapter extends GroupingListAdapter
mActivity = activity;
mCallFetcher = callFetcher;
+ mMultiSelectRemoveView = multiSelectRemoveView;
mVoicemailPlaybackPresenter = voicemailPlaybackPresenter;
if (mVoicemailPlaybackPresenter != null) {
mVoicemailPlaybackPresenter.setOnVoicemailDeletedListener(this);
@@ -426,6 +482,14 @@ public class CallLogAdapter extends GroupingListAdapter
public void onSaveInstanceState(Bundle outState) {
outState.putInt(KEY_EXPANDED_POSITION, mCurrentlyExpandedPosition);
outState.putLong(KEY_EXPANDED_ROW_ID, mCurrentlyExpandedRowId);
+
+ ArrayList<String> listOfSelectedItems = new ArrayList<>();
+ if (selectedItems.size() > 0) {
+ for (int i = 0; i < selectedItems.size(); i++) {
+ listOfSelectedItems.add(Integer.toString(selectedItems.keyAt(i)));
+ }
+ }
+ outState.putStringArrayList(KEY_ACTION_MODE, listOfSelectedItems);
}
public void onRestoreInstanceState(Bundle savedInstanceState) {
@@ -434,6 +498,18 @@ public class CallLogAdapter extends GroupingListAdapter
savedInstanceState.getInt(KEY_EXPANDED_POSITION, RecyclerView.NO_POSITION);
mCurrentlyExpandedRowId =
savedInstanceState.getLong(KEY_EXPANDED_ROW_ID, NO_EXPANDED_LIST_ITEM);
+
+ // Restoring multi selected entries
+ ArrayList<String> listOfSelectedItems =
+ savedInstanceState.getStringArrayList(KEY_ACTION_MODE);
+ if (!listOfSelectedItems.isEmpty()) {
+ for (int i = 0; i < listOfSelectedItems.size(); i++) {
+ String voicemailId = listOfSelectedItems.get(i);
+ int id = Integer.parseInt(voicemailId);
+ selectedItems.put(id, voicemailId);
+ }
+ updateActionBar();
+ }
}
}
@@ -559,6 +635,8 @@ public class CallLogAdapter extends GroupingListAdapter
public void onViewRecycled(ViewHolder viewHolder) {
if (viewHolder.getItemViewType() == VIEW_TYPE_CALLLOG) {
CallLogListItemViewHolder views = (CallLogListItemViewHolder) viewHolder;
+ updateCheckMarkedStatusOfEntry(views);
+
if (views.asyncTask != null) {
views.asyncTask.cancel(true);
}
@@ -591,6 +669,8 @@ public class CallLogAdapter extends GroupingListAdapter
return;
}
CallLogListItemViewHolder views = (CallLogListItemViewHolder) viewHolder;
+ updateCheckMarkedStatusOfEntry(views);
+
views.isLoaded = false;
int groupSize = getGroupSize(position);
CallDetailsEntries callDetailsEntries = createCallDetailsEntries(c, groupSize);
@@ -609,6 +689,17 @@ public class CallLogAdapter extends GroupingListAdapter
loadAndRender(views, views.rowId, details, callDetailsEntries);
}
+ private void updateCheckMarkedStatusOfEntry(CallLogListItemViewHolder views) {
+ if (selectedItems.size() > 0 && views.voicemailUri != null) {
+ int id = getVoicemailId(views.voicemailUri);
+ if (selectedItems.get(id) != null) {
+ checkMarkCallLogEntry(views);
+ } else {
+ uncheckMarkCallLogEntry(views, id);
+ }
+ }
+ }
+
private void loadAndRender(
final CallLogListItemViewHolder views,
final long rowId,
@@ -917,6 +1008,12 @@ public class CallLogAdapter extends GroupingListAdapter
views.workIconView.setVisibility(
details.contactUserType == ContactsUtils.USER_TYPE_WORK ? View.VISIBLE : View.GONE);
+ if (selectAllMode && views.voicemailUri != null) {
+ selectedItems.put(getVoicemailId(views.voicemailUri), views.voicemailUri);
+ }
+ if (deselectAllMode && views.voicemailUri != null) {
+ selectedItems.delete(getVoicemailId(views.voicemailUri));
+ }
if (views.voicemailUri != null
&& selectedItems.get(getVoicemailId(views.voicemailUri)) != null) {
views.checkBoxView.setVisibility(View.VISIBLE);
@@ -925,7 +1022,6 @@ public class CallLogAdapter extends GroupingListAdapter
views.checkBoxView.setVisibility(View.GONE);
views.quickContactView.setVisibility(View.VISIBLE);
}
-
mCallLogListItemHelper.setPhoneCallDetails(views, details);
if (mCurrentlyExpandedRowId == views.rowId) {
// In case ViewHolders were added/removed, update the expanded position if the rowIds
@@ -1192,9 +1288,41 @@ public class CallLogAdapter extends GroupingListAdapter
notifyDataSetChanged();
}
+ public void onAllSelected() {
+ selectAllMode = true;
+ deselectAllMode = false;
+ selectedItems.clear();
+ for (int i = 0; i < getItemCount(); i++) {
+ Cursor c = (Cursor) getItem(i);
+ if (c != null) {
+ Assert.checkArgument(CallLogQuery.VOICEMAIL_URI == c.getColumnIndex("voicemail_uri"));
+ String voicemailUri = c.getString(CallLogQuery.VOICEMAIL_URI);
+ selectedItems.put(getVoicemailId(voicemailUri), voicemailUri);
+ }
+ }
+ updateActionBar();
+ notifyDataSetChanged();
+ }
+
+ public void onAllDeselected() {
+ selectAllMode = false;
+ deselectAllMode = true;
+ selectedItems.clear();
+ updateActionBar();
+ notifyDataSetChanged();
+ }
+
/** Interface used to initiate a refresh of the content. */
public interface CallFetcher {
void fetchCalls();
}
+
+ /** Interface used to hide the fragments. */
+ public interface MultiSelectRemoveView {
+
+ void showMultiSelectRemoveView(boolean show);
+
+ void setSelectAllModeToFalse();
+ }
}
diff --git a/java/com/android/dialer/app/calllog/CallLogFragment.java b/java/com/android/dialer/app/calllog/CallLogFragment.java
index 6e4b23fc1..1571c1aef 100644
--- a/java/com/android/dialer/app/calllog/CallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/CallLogFragment.java
@@ -49,15 +49,16 @@ import com.android.dialer.app.contactinfo.ContactInfoCache.OnContactInfoChangedL
import com.android.dialer.app.contactinfo.ExpirableCacheHeadlessFragment;
import com.android.dialer.app.list.ListsFragment;
import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
-import com.android.dialer.app.widget.EmptyContentView;
-import com.android.dialer.app.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.database.CallLogQueryHandler;
import com.android.dialer.location.GeoUtil;
+import com.android.dialer.oem.CequintCallerIdManager;
import com.android.dialer.phonenumbercache.ContactInfoHelper;
import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
/**
* Displays a list of call log entries. To filter for a particular kind of call (all, missed or
@@ -66,6 +67,7 @@ import com.android.dialer.util.PermissionsUtil;
public class CallLogFragment extends Fragment
implements CallLogQueryHandler.Listener,
CallLogAdapter.CallFetcher,
+ CallLogAdapter.MultiSelectRemoveView,
OnEmptyViewActionButtonClickedListener,
FragmentCompat.OnRequestPermissionsResultCallback,
CallLogModalAlertManager.Listener {
@@ -317,6 +319,7 @@ public class CallLogFragment extends Fragment
getActivity(),
mRecyclerView,
this,
+ this,
CallLogCache.getCallLogCache(getActivity()),
mContactInfoCache,
getVoicemailPlaybackPresenter(),
@@ -380,6 +383,16 @@ public class CallLogFragment extends Fragment
}
@Override
+ public void onStart() {
+ super.onStart();
+ CequintCallerIdManager cequintCallerIdManager = null;
+ if (CequintCallerIdManager.isCequintCallerIdEnabled(getContext())) {
+ cequintCallerIdManager = CequintCallerIdManager.createInstanceForCallLog();
+ }
+ mContactInfoCache.setCequintCallerIdManager(cequintCallerIdManager);
+ }
+
+ @Override
public void onStop() {
updateOnTransition();
@@ -451,6 +464,8 @@ public class CallLogFragment extends Fragment
mEmptyListView.setActionLabel(EmptyContentView.NO_LABEL);
} else if (filterType == CallLogQueryHandler.CALL_TYPE_ALL) {
mEmptyListView.setActionLabel(R.string.call_log_all_empty_action);
+ } else {
+ mEmptyListView.setActionLabel(EmptyContentView.NO_LABEL);
}
}
@@ -589,6 +604,16 @@ public class CallLogFragment extends Fragment
}
}
+ @Override
+ public void showMultiSelectRemoveView(boolean show) {
+ ((ListsFragment) getParentFragment()).showMultiSelectRemoveView(show);
+ }
+
+ @Override
+ public void setSelectAllModeToFalse() {
+ ((ListsFragment) getParentFragment()).setSelectAllModeToFalse();
+ }
+
public interface HostInterface {
void showDialpad();
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index 1daccd1a4..a9a4d1d42 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -17,6 +17,7 @@
package com.android.dialer.app.calllog;
import android.app.Activity;
+import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
@@ -31,7 +32,6 @@ import android.support.annotation.VisibleForTesting;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
import android.telephony.PhoneNumberUtils;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
@@ -44,10 +44,13 @@ import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.QuickContactBadge;
import android.widget.TextView;
+import android.widget.Toast;
import com.android.contacts.common.ClipboardUtils;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
import com.android.contacts.common.dialog.CallSubjectDialog;
+import com.android.contacts.common.lettertiles.LetterTileDrawable;
+import com.android.contacts.common.lettertiles.LetterTileDrawable.ContactType;
import com.android.contacts.common.util.UriUtils;
import com.android.dialer.app.DialtactsActivity;
import com.android.dialer.app.R;
@@ -58,15 +61,16 @@ import com.android.dialer.blocking.BlockedNumbersMigrator;
import com.android.dialer.blocking.FilteredNumberCompat;
import com.android.dialer.blocking.FilteredNumbersUtil;
import com.android.dialer.callcomposer.CallComposerActivity;
-import com.android.dialer.callcomposer.CallComposerContact;
import com.android.dialer.calldetails.CallDetailsEntries;
import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
import com.android.dialer.compat.CompatUtils;
+import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.lightbringer.Lightbringer;
import com.android.dialer.lightbringer.LightbringerComponent;
import com.android.dialer.logging.ContactSource;
import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
import com.android.dialer.phonenumbercache.CachedNumberLookupService;
@@ -251,6 +255,20 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
phoneCallDetailsViews.nameView.setElegantTextHeight(false);
phoneCallDetailsViews.callLocationAndDate.setElegantTextHeight(false);
+ if (mContext instanceof CallLogActivity) {
+ Logger.get(mContext)
+ .logQuickContactOnTouch(
+ quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CALL_HISTORY, true);
+ } else if (mVoicemailPlaybackPresenter == null) {
+ Logger.get(mContext)
+ .logQuickContactOnTouch(
+ quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CALL_LOG, true);
+ } else {
+ Logger.get(mContext)
+ .logQuickContactOnTouch(
+ quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_VOICEMAIL, false);
+ }
+
quickContactView.setOverlay(null);
if (CompatUtils.hasPrioritizedMimeType()) {
quickContactView.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
@@ -467,7 +485,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
primaryActionButtonView.setContentDescription(
TextUtils.expandTemplate(
mContext.getString(R.string.description_call_action), validNameOrNumber));
- primaryActionButtonView.setImageResource(R.drawable.quantum_ic_call_white_24);
+ primaryActionButtonView.setImageResource(R.drawable.quantum_ic_call_vd_theme_24);
primaryActionButtonView.setVisibility(View.VISIBLE);
} else {
primaryActionButtonView.setTag(null);
@@ -717,19 +735,14 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
getContactType());
}
- private int getContactType() {
- int contactType = ContactPhotoManager.TYPE_DEFAULT;
- if (mCallLogCache.isVoicemailNumber(accountHandle, number)) {
- contactType = ContactPhotoManager.TYPE_VOICEMAIL;
- } else if (isSpam) {
- contactType = ContactPhotoManager.TYPE_SPAM;
- } else if (mCachedNumberLookupService != null
- && mCachedNumberLookupService.isBusiness(info.sourceType)) {
- contactType = ContactPhotoManager.TYPE_BUSINESS;
- } else if (numberPresentation == TelecomManager.PRESENTATION_RESTRICTED) {
- contactType = ContactPhotoManager.TYPE_GENERIC_AVATAR;
- }
- return contactType;
+ private @ContactType int getContactType() {
+ return LetterTileDrawable.getContactTypeFromPrimitives(
+ mCallLogCache.isVoicemailNumber(accountHandle, number),
+ isSpam,
+ mCachedNumberLookupService != null
+ && mCachedNumberLookupService.isBusiness(info.sourceType),
+ numberPresentation,
+ false);
}
@Override
@@ -795,19 +808,40 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
mVoicemailPlaybackPresenter.shareVoicemail();
} else {
logCallLogAction(view.getId());
+
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);
- }
+ if (intentProvider == null) {
+ return;
}
+
+ final Intent intent = intentProvider.getIntent(mContext);
+ // See IntentProvider.getCallDetailIntentProvider() for why this may be null.
+ if (intent == null) {
+ return;
+ }
+
+ // We check to see if we are starting a Lightbringer intent. The reason is Lightbringer
+ // intents need to be started using startActivityForResult instead of the usual startActivity
+ String packageName = intent.getPackage();
+ if (packageName != null && packageName.equals(getLightbringer().getPackageName(mContext))) {
+ startLightbringerActivity(intent);
+ } else {
+ DialerUtils.startActivityWithErrorToast(mContext, intent);
+ }
+ }
+ }
+
+ private void startLightbringerActivity(Intent intent) {
+ try {
+ Activity activity = (Activity) mContext;
+ activity.startActivityForResult(intent, DialtactsActivity.ACTIVITY_REQUEST_CODE_LIGHTBRINGER);
+ } catch (ActivityNotFoundException e) {
+ Toast.makeText(mContext, R.string.activity_not_available, Toast.LENGTH_SHORT).show();
}
}
- private CallComposerContact buildContact() {
- CallComposerContact.Builder contact = CallComposerContact.newBuilder();
+ private DialerContact buildContact() {
+ DialerContact.Builder contact = DialerContact.newBuilder();
contact.setPhotoId(info.photoId);
if (info.photoUri != null) {
contact.setPhotoUri(info.photoUri.toString());
diff --git a/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java b/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java
index 58fe6fa2c..1f45f7086 100644
--- a/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java
+++ b/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java
@@ -225,14 +225,18 @@ public class DefaultVoicemailNotifier implements Worker<Void, Void> {
int count,
String voicemailNumber,
PendingIntent callVoicemailIntent,
- PendingIntent voicemailSettingIntent) {
+ PendingIntent voicemailSettingIntent,
+ boolean isRefresh) {
Assert.isNotNull(phoneAccountHandle);
Assert.checkArgument(BuildCompat.isAtLeastO());
TelephonyManager telephonyManager =
context
.getSystemService(TelephonyManager.class)
.createForPhoneAccountHandle(phoneAccountHandle);
- Assert.isNotNull(telephonyManager);
+ if (telephonyManager == null) {
+ LogUtil.e(TAG, "invalid PhoneAccountHandle, ignoring");
+ return;
+ }
LogUtil.i(TAG, "Creating legacy voicemail notification");
PersistableBundle carrierConfig = telephonyManager.getCarrierConfig();
@@ -275,7 +279,8 @@ public class DefaultVoicemailNotifier implements Worker<Void, Void> {
.setSound(telephonyManager.getVoicemailRingtoneUri(phoneAccountHandle))
.setOngoing(
carrierConfig.getBoolean(
- CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL));
+ CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL))
+ .setOnlyAlertOnce(isRefresh);
if (telephonyManager.isVoicemailVibrationEnabled(phoneAccountHandle)) {
builder.setDefaults(Notification.DEFAULT_VIBRATE);
diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java
index a94c6781e..9c3c18b60 100644
--- a/java/com/android/dialer/app/calllog/IntentProvider.java
+++ b/java/com/android/dialer/app/calllog/IntentProvider.java
@@ -24,12 +24,14 @@ import android.provider.ContactsContract;
import android.telecom.PhoneAccountHandle;
import com.android.contacts.common.model.Contact;
import com.android.contacts.common.model.ContactLoader;
-import com.android.dialer.callcomposer.CallComposerContact;
import com.android.dialer.calldetails.CallDetailsActivity;
import com.android.dialer.calldetails.CallDetailsEntries;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.lightbringer.LightbringerComponent;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
import com.android.dialer.util.CallUtil;
import com.android.dialer.util.IntentUtil;
import java.util.ArrayList;
@@ -68,6 +70,7 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
+ Logger.get(context).logImpression(DialerImpression.Type.IMS_VIDEO_REQUESTED_FROM_CALL_LOG);
return new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
.setPhoneAccountHandle(accountHandle)
.setIsVideoCall(true)
@@ -80,6 +83,8 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
+ Logger.get(context)
+ .logImpression(DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FROM_CALL_LOG);
return LightbringerComponent.get(context).getLightbringer().getIntent(context, number);
}
};
@@ -112,7 +117,7 @@ public abstract class IntentProvider {
* @return The call details intent provider.
*/
public static IntentProvider getCallDetailIntentProvider(
- CallDetailsEntries callDetailsEntries, CallComposerContact contact) {
+ CallDetailsEntries callDetailsEntries, DialerContact contact) {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
diff --git a/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java b/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java
index 7645a333e..6728dfb38 100644
--- a/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java
+++ b/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java
@@ -19,7 +19,6 @@ package com.android.dialer.app.calllog.calllogcache;
import android.content.Context;
import android.telecom.PhoneAccountHandle;
import com.android.dialer.app.calllog.CallLogAdapter;
-import com.android.dialer.compat.CompatUtils;
import com.android.dialer.util.CallUtil;
/**
@@ -46,10 +45,7 @@ public abstract class CallLogCache {
/** Return the most compatible version of the TelecomCallLogCache. */
public static CallLogCache getCallLogCache(Context context) {
- if (CompatUtils.isClassAvailable("android.telecom.PhoneAccountHandle")) {
- return new CallLogCacheLollipopMr1(context);
- }
- return new CallLogCacheLollipop(context);
+ return new CallLogCacheLollipopMr1(context);
}
public void reset() {
diff --git a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipop.java b/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipop.java
deleted file mode 100644
index 78aaa4193..000000000
--- a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipop.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.app.calllog.calllogcache;
-
-import android.content.Context;
-import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
-import android.telephony.PhoneNumberUtils;
-import android.text.TextUtils;
-
-/**
- * This is a compatibility class for the CallLogCache for versions of dialer before Lollipop Mr1
- * (the introduction of phone accounts).
- *
- * <p>This class should not be initialized directly and instead be acquired from {@link
- * CallLogCache#getCallLogCache}.
- */
-class CallLogCacheLollipop extends CallLogCache {
-
- private String mVoicemailNumber;
-
- /* package */ CallLogCacheLollipop(Context context) {
- super(context);
- }
-
- @Override
- public boolean isVoicemailNumber(PhoneAccountHandle accountHandle, CharSequence number) {
- if (TextUtils.isEmpty(number)) {
- return false;
- }
-
- String numberString = number.toString();
-
- if (!TextUtils.isEmpty(mVoicemailNumber)) {
- return PhoneNumberUtils.compare(numberString, mVoicemailNumber);
- }
-
- if (PhoneNumberUtils.isVoiceMailNumber(numberString)) {
- mVoicemailNumber = numberString;
- return true;
- }
-
- return false;
- }
-
- @Override
- public String getAccountLabel(PhoneAccountHandle accountHandle) {
- return null;
- }
-
- @Override
- public int getAccountColor(PhoneAccountHandle accountHandle) {
- return PhoneAccount.NO_HIGHLIGHT_COLOR;
- }
-
- @Override
- public boolean doesAccountSupportCallSubject(PhoneAccountHandle accountHandle) {
- return false;
- }
-}
diff --git a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
index e561b5607..32bbf06b5 100644
--- a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
+++ b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
@@ -24,6 +24,7 @@ import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import com.android.dialer.common.LogUtil;
import com.android.dialer.logging.ContactSource.Type;
+import com.android.dialer.oem.CequintCallerIdManager;
import com.android.dialer.phonenumbercache.ContactInfo;
import com.android.dialer.phonenumbercache.ContactInfoHelper;
import com.android.dialer.util.ExpirableCache;
@@ -55,6 +56,7 @@ public class ContactInfoCache {
private final OnContactInfoChangedListener mOnContactInfoChangedListener;
private final BlockingQueue<ContactInfoRequest> mUpdateRequests;
private final Handler mHandler;
+ private CequintCallerIdManager mCequintCallerIdManager;
private QueryThread mContactInfoQueryThread;
private volatile boolean mRequestProcessingDisabled = false;
@@ -95,6 +97,10 @@ public class ContactInfoCache {
mHandler = new InnerHandler(new WeakReference<>(this));
}
+ public void setCequintCallerIdManager(CequintCallerIdManager cequintCallerIdManager) {
+ mCequintCallerIdManager = cequintCallerIdManager;
+ }
+
public ContactInfo getValue(
String number,
String countryIso,
@@ -160,7 +166,7 @@ public class ContactInfoCache {
// TODO: Maybe skip look up if it's already available in cached number lookup
// service.
long start = SystemClock.elapsedRealtime();
- mContactInfoHelper.updateFromCequintCallerId(info, request.number);
+ mContactInfoHelper.updateFromCequintCallerId(mCequintCallerIdManager, info, request.number);
long time = SystemClock.elapsedRealtime() - start;
LogUtil.d(
"ContactInfoCache.queryContactInfo", "Cequint Caller Id look up takes %d ms", time);
diff --git a/java/com/android/dialer/app/dialpad/DialpadFragment.java b/java/com/android/dialer/app/dialpad/DialpadFragment.java
index e9d57b399..c0b26c91a 100644
--- a/java/com/android/dialer/app/dialpad/DialpadFragment.java
+++ b/java/com/android/dialer/app/dialpad/DialpadFragment.java
@@ -29,6 +29,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
+import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -84,6 +85,7 @@ import com.android.dialer.common.LogUtil;
import com.android.dialer.dialpadview.DialpadKeyButton;
import com.android.dialer.dialpadview.DialpadView;
import com.android.dialer.location.GeoUtil;
+import com.android.dialer.oem.MotorolaUtils;
import com.android.dialer.proguard.UsedByReflection;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.CallUtil;
@@ -626,6 +628,14 @@ public class DialpadFragment extends Fragment
Trace.beginSection(TAG + " onResume");
super.onResume();
+ Resources res = getResources();
+ int iconId = R.drawable.quantum_ic_call_vd_theme_24;
+ if (MotorolaUtils.isWifiCallingAvailable(getContext())) {
+ iconId = R.drawable.ic_wifi_calling;
+ }
+ mFloatingActionButtonController.changeIcon(
+ res.getDrawable(iconId, null), res.getString(R.string.description_dial_button));
+
final DialtactsActivity activity = (DialtactsActivity) getActivity();
mDialpadQueryListener = activity;
diff --git a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
index f71517a44..d98395ec7 100644
--- a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
+++ b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
@@ -28,6 +28,7 @@ import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.contacts.common.util.UriUtils;
import com.android.dialer.app.R;
import com.android.dialer.compat.CompatUtils;
@@ -98,8 +99,8 @@ public class NumbersAdapter extends SimpleCursorAdapter {
info.lookupUri == null ? null : UriUtils.getLookupKeyFromUri(info.lookupUri);
final int contactType =
mContactInfoHelper.isBusiness(info.sourceType)
- ? ContactPhotoManager.TYPE_BUSINESS
- : ContactPhotoManager.TYPE_DEFAULT;
+ ? LetterTileDrawable.TYPE_BUSINESS
+ : LetterTileDrawable.TYPE_DEFAULT;
final DefaultImageRequest request =
new DefaultImageRequest(displayName, lookupKey, contactType, true /* isCircular */);
badge.assignContactUri(info.lookupUri);
diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java
index 1cdeb2175..c208fd57d 100644
--- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java
+++ b/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java
@@ -40,6 +40,7 @@ public interface DialerLegacyBindings {
Activity activity,
ViewGroup alertContainer,
CallLogAdapter.CallFetcher callFetcher,
+ CallLogAdapter.MultiSelectRemoveView multiSelectRemoveView,
CallLogCache callLogCache,
ContactInfoCache contactInfoCache,
VoicemailPlaybackPresenter voicemailPlaybackPresenter,
diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java
index 6e32843ba..19fa1a70c 100644
--- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java
+++ b/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java
@@ -34,6 +34,7 @@ public class DialerLegacyBindingsStub implements DialerLegacyBindings {
Activity activity,
ViewGroup alertContainer,
CallLogAdapter.CallFetcher callFetcher,
+ CallLogAdapter.MultiSelectRemoveView multiSelectRemoveView,
CallLogCache callLogCache,
ContactInfoCache contactInfoCache,
VoicemailPlaybackPresenter voicemailPlaybackPresenter,
@@ -43,6 +44,7 @@ public class DialerLegacyBindingsStub implements DialerLegacyBindings {
activity,
alertContainer,
callFetcher,
+ multiSelectRemoveView,
callLogCache,
contactInfoCache,
voicemailPlaybackPresenter,
diff --git a/java/com/android/dialer/app/list/AllContactsFragment.java b/java/com/android/dialer/app/list/AllContactsFragment.java
index 04609970a..f5fdb9e2d 100644
--- a/java/com/android/dialer/app/list/AllContactsFragment.java
+++ b/java/com/android/dialer/app/list/AllContactsFragment.java
@@ -38,12 +38,14 @@ import com.android.contacts.common.list.ContactEntryListFragment;
import com.android.contacts.common.list.ContactListFilter;
import com.android.contacts.common.list.DefaultContactListAdapter;
import com.android.dialer.app.R;
-import com.android.dialer.app.widget.EmptyContentView;
-import com.android.dialer.app.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
import com.android.dialer.compat.CompatUtils;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.IntentUtil;
import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
/** Fragments to show all contacts with phone numbers. */
public class AllContactsFragment extends ContactEntryListFragment<ContactEntryListAdapter>
@@ -149,6 +151,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) {
+ Logger.get(getContext())
+ .logInteraction(InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_ALL_CONTACTS_GENERAL);
if (CompatUtils.hasPrioritizedMimeType()) {
QuickContact.showQuickContact(getContext(), view, uri, null, Phone.CONTENT_ITEM_TYPE);
} else {
diff --git a/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java b/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java
index 537f488d5..04927cf7a 100644
--- a/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java
+++ b/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java
@@ -19,6 +19,7 @@ package com.android.dialer.app.list;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
+import android.graphics.drawable.Drawable;
import android.telephony.PhoneNumberUtils;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
@@ -29,7 +30,6 @@ import com.android.contacts.common.list.PhoneNumberListAdapter;
import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.dialer.app.R;
import com.android.dialer.location.GeoUtil;
-import com.android.dialer.util.CallUtil;
/**
* {@link PhoneNumberListAdapter} with the following added shortcuts, that are displayed as list
@@ -50,7 +50,6 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
private final boolean[] mShortcutEnabled = new boolean[SHORTCUT_COUNT];
private final BidiFormatter mBidiFormatter = BidiFormatter.getInstance();
- private final boolean mVideoCallingEnabled;
private final String mCountryIso;
private String mFormattedQueryString;
@@ -59,7 +58,6 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
super(context);
mCountryIso = GeoUtil.getCurrentCountryIso(context);
- mVideoCallingEnabled = CallUtil.isVideoEnabled(context);
}
@Override
@@ -110,8 +108,7 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
return convertView;
} else {
final ContactListItemView v =
- new ContactListItemView(
- getContext(), null, mVideoCallingEnabled, isCallAndShareEnabled());
+ new ContactListItemView(getContext(), null, mIsImsVideoEnabled);
assignShortcutToView(v, shortcutType);
return v;
}
@@ -125,8 +122,7 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
final ContactListItemView view = super.newView(context, partition, cursor, position, parent);
- view.setSupportVideoCallIcon(mVideoCallingEnabled);
- view.setSupportCallAndShareIcon(isCallAndShareEnabled());
+ view.setSupportVideoCallIcon(mIsImsVideoEnabled);
return view;
}
@@ -171,7 +167,7 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
private void assignShortcutToView(ContactListItemView v, int shortcutType) {
final CharSequence text;
- final int drawableId;
+ final Drawable drawable;
final Resources resources = getContext().getResources();
final String number = getFormattedQueryString();
switch (shortcutType) {
@@ -181,34 +177,39 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
resources,
R.string.search_shortcut_call_number,
mBidiFormatter.unicodeWrap(number, TextDirectionHeuristics.LTR));
- drawableId = R.drawable.ic_search_phone;
+ drawable = getContext().getResources().getDrawable(R.drawable.quantum_ic_call_vd_theme_24);
break;
case SHORTCUT_CREATE_NEW_CONTACT:
text = resources.getString(R.string.search_shortcut_create_new_contact);
- drawableId = R.drawable.ic_search_add_contact;
+ drawable =
+ getContext().getResources().getDrawable(R.drawable.quantum_ic_person_add_vd_theme_24);
+ drawable.setAutoMirrored(true);
break;
case SHORTCUT_ADD_TO_EXISTING_CONTACT:
text = resources.getString(R.string.search_shortcut_add_to_contact);
- drawableId = R.drawable.quantum_ic_person_white_24;
+ drawable =
+ getContext().getResources().getDrawable(R.drawable.quantum_ic_person_add_vd_theme_24);
break;
case SHORTCUT_SEND_SMS_MESSAGE:
text = resources.getString(R.string.search_shortcut_send_sms_message);
- drawableId = R.drawable.quantum_ic_message_white_24;
+ drawable =
+ getContext().getResources().getDrawable(R.drawable.quantum_ic_message_vd_theme_24);
break;
case SHORTCUT_MAKE_VIDEO_CALL:
text = resources.getString(R.string.search_shortcut_make_video_call);
- drawableId = R.drawable.quantum_ic_videocam_white_24;
+ drawable =
+ getContext().getResources().getDrawable(R.drawable.quantum_ic_videocam_vd_theme_24);
break;
case SHORTCUT_BLOCK_NUMBER:
text = resources.getString(R.string.search_shortcut_block_number);
- drawableId = R.drawable.ic_not_interested_googblue_24dp;
+ drawable =
+ getContext().getResources().getDrawable(R.drawable.ic_not_interested_googblue_24dp);
break;
default:
throw new IllegalArgumentException("Invalid shortcut type");
}
- v.setDrawableResource(drawableId);
+ v.setDrawable(drawable);
v.setDisplayName(text);
- v.setPhotoPosition(super.getPhotoPosition());
v.setAdjustSelectionBoundsEnabled(false);
}
diff --git a/java/com/android/dialer/app/list/DialerViewPager.java b/java/com/android/dialer/app/list/DialerViewPager.java
new file mode 100644
index 000000000..ae99f0521
--- /dev/null
+++ b/java/com/android/dialer/app/list/DialerViewPager.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2017 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.app.list;
+
+import android.content.Context;
+import android.support.v4.view.ViewPager;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+/** Class that handles enabling/disabling swiping between @{ViewPagerTabs}. */
+public class DialerViewPager extends ViewPager {
+
+ private boolean enableSwipingPages;
+
+ public DialerViewPager(Context context, AttributeSet attributeSet) {
+ super(context, attributeSet);
+ enableSwipingPages = true;
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent event) {
+ if (enableSwipingPages) {
+ return super.onInterceptTouchEvent(event);
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ if (enableSwipingPages) {
+ return super.onTouchEvent(event);
+ }
+
+ return false;
+ }
+
+ public void setEnableSwipingPages(boolean enabled) {
+ enableSwipingPages = enabled;
+ }
+}
diff --git a/java/com/android/dialer/app/list/ListsFragment.java b/java/com/android/dialer/app/list/ListsFragment.java
index 8dd52a9d4..32501d556 100644
--- a/java/com/android/dialer/app/list/ListsFragment.java
+++ b/java/com/android/dialer/app/list/ListsFragment.java
@@ -31,19 +31,23 @@ import android.os.Handler;
import android.os.Trace;
import android.preference.PreferenceManager;
import android.provider.VoicemailContract;
-import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.View.OnClickListener;
import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
import com.android.contacts.common.list.ViewPagerTabs;
import com.android.dialer.app.R;
import com.android.dialer.app.calllog.CallLogFragment;
import com.android.dialer.app.calllog.CallLogNotificationsService;
+import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
import com.android.dialer.app.voicemail.error.VoicemailStatusCorruptionHandler;
import com.android.dialer.app.voicemail.error.VoicemailStatusCorruptionHandler.Source;
import com.android.dialer.common.LogUtil;
import com.android.dialer.database.CallLogQueryHandler;
+import com.android.dialer.database.CallLogQueryHandler.Listener;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
@@ -61,24 +65,28 @@ import java.util.ArrayList;
* containing the lists up above the search bar and pin it against the top of the screen.
*/
public class ListsFragment extends Fragment
- implements ViewPager.OnPageChangeListener, CallLogQueryHandler.Listener {
+ implements OnPageChangeListener, Listener, OnClickListener {
private static final String TAG = "ListsFragment";
- private ViewPager mViewPager;
+ private DialerViewPager mViewPager;
private ViewPagerTabs mViewPagerTabs;
private DialtactsPagerAdapter mAdapter;
private RemoveView mRemoveView;
private View mRemoveViewContent;
+ private View mMultiSelectSelectAllViewContent;
+ private TextView mSelectUnselectAllViewText;
+ private ImageView mSelectUnselectAllIcon;
private Fragment mCurrentPage;
private SharedPreferences mPrefs;
private boolean mHasFetchedVoicemailStatus;
+ private boolean selectAllMode;
private boolean mShowVoicemailTabAfterVoicemailStatusIsFetched;
private VoicemailStatusHelper mVoicemailStatusHelper;
private final ArrayList<OnPageChangeListener> mOnPageChangeListeners = new ArrayList<>();
/** The position of the currently selected tab. */
private int mTabIndex = TAB_INDEX_SPEED_DIAL;
- private boolean mPaused;
+ private boolean mPaused;
private CallLogQueryHandler mCallLogQueryHandler;
private final ContentObserver mVoicemailStatusObserver =
@@ -163,7 +171,7 @@ public class ListsFragment extends Fragment
tabIcons[TAB_INDEX_ALL_CONTACTS] = R.drawable.quantum_ic_people_white_24;
tabIcons[TAB_INDEX_VOICEMAIL] = R.drawable.quantum_ic_voicemail_white_24;
- mViewPager = (ViewPager) parentView.findViewById(R.id.lists_pager);
+ mViewPager = (DialerViewPager) parentView.findViewById(R.id.lists_pager);
mAdapter =
new DialtactsPagerAdapter(
getContext(),
@@ -180,9 +188,15 @@ public class ListsFragment extends Fragment
mViewPagerTabs.configureTabIcons(tabIcons);
mViewPagerTabs.setViewPager(mViewPager);
addOnPageChangeListener(mViewPagerTabs);
-
mRemoveView = (RemoveView) parentView.findViewById(R.id.remove_view);
mRemoveViewContent = parentView.findViewById(R.id.remove_view_content);
+ mMultiSelectSelectAllViewContent =
+ parentView.findViewById(R.id.multi_select_select_all_view_content);
+ mSelectUnselectAllViewText = (TextView) parentView.findViewById(R.id.select_all_view_text);
+ mSelectUnselectAllIcon = (ImageView) parentView.findViewById(R.id.select_all_view_icon);
+ mMultiSelectSelectAllViewContent.setOnClickListener(null);
+ mSelectUnselectAllIcon.setOnClickListener(this);
+ mSelectUnselectAllViewText.setOnClickListener(this);
if (PermissionsUtil.hasReadVoicemailPermissions(getContext())
&& PermissionsUtil.hasAddVoicemailPermissions(getContext())) {
@@ -191,7 +205,7 @@ public class ListsFragment extends Fragment
.registerContentObserver(
VoicemailContract.Status.CONTENT_URI, true, mVoicemailStatusObserver);
} else {
- LogUtil.w("ListsFragment.onCreateView", "no voicemail read/add permissions");
+ LogUtil.w("ListsFragment.onCreateView", "no voicemail read permissions");
}
Trace.endSection();
@@ -385,6 +399,13 @@ public class ListsFragment extends Fragment
mRemoveView.animate().alpha(show ? 1 : 0).start();
}
+ public void showMultiSelectRemoveView(boolean show) {
+ mMultiSelectSelectAllViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
+ mMultiSelectSelectAllViewContent.setAlpha(show ? 0 : 1);
+ mMultiSelectSelectAllViewContent.animate().alpha(show ? 1 : 0).start();
+ mViewPager.setEnableSwipingPages(!show);
+ }
+
public boolean hasFrequents() {
Fragment page = mAdapter.getItem(mAdapter.getRtlPosition(TAB_INDEX_SPEED_DIAL));
return page instanceof OldSpeedDialFragment
@@ -424,4 +445,28 @@ public class ListsFragment extends Fragment
}
Logger.get(getActivity()).logScreenView(screenType, getActivity());
}
+
+ @Override
+ public void onClick(View v) {
+ updateSelectAllIcon();
+ selectAllMode = !selectAllMode;
+ }
+
+ public void setSelectAllModeToFalse() {
+ selectAllMode = false;
+ mSelectUnselectAllIcon.setImageDrawable(
+ getContext().getDrawable(R.drawable.ic_empty_check_mark_white_24dp));
+ }
+
+ private void updateSelectAllIcon() {
+ if (selectAllMode) {
+ mSelectUnselectAllIcon.setImageDrawable(
+ getContext().getDrawable(R.drawable.ic_empty_check_mark_white_24dp));
+ ((VisualVoicemailCallLogFragment) mCurrentPage).getAdapter().onAllDeselected();
+ } else {
+ mSelectUnselectAllIcon.setImageDrawable(
+ getContext().getDrawable(R.drawable.ic_check_mark_blue_24dp));
+ ((VisualVoicemailCallLogFragment) mCurrentPage).getAdapter().onAllSelected();
+ }
+ }
}
diff --git a/java/com/android/dialer/app/list/OldSpeedDialFragment.java b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
index 40fe74565..1ddc0f4e1 100644
--- a/java/com/android/dialer/app/list/OldSpeedDialFragment.java
+++ b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
@@ -50,12 +50,11 @@ import com.android.contacts.common.ContactTileLoaderFactory;
import com.android.contacts.common.list.ContactTileView;
import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
import com.android.dialer.app.R;
-import com.android.dialer.app.widget.EmptyContentView;
-import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.LogUtil;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.util.ViewUtil;
+import com.android.dialer.widget.EmptyContentView;
import java.util.ArrayList;
/** This fragment displays the user's favorite/frequent contacts in a grid. */
@@ -430,7 +429,7 @@ public class OldSpeedDialFragment extends Fragment
void showAllContactsTab();
}
- private class ContactTileLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
+ class ContactTileLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
@Override
public CursorLoader onCreateLoader(int id, Bundle args) {
@@ -460,24 +459,17 @@ public class OldSpeedDialFragment extends Fragment
private class ContactTileAdapterListener implements ContactTileView.Listener {
@Override
- public void onContactSelected(Uri contactUri, Rect targetRect) {
+ public void onContactSelected(
+ Uri contactUri, Rect targetRect, CallSpecificAppData callSpecificAppData) {
if (mPhoneNumberPickerActionListener != null) {
- CallSpecificAppData callSpecificAppData =
- CallSpecificAppData.newBuilder()
- .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL)
- .build();
mPhoneNumberPickerActionListener.onPickDataUri(
contactUri, false /* isVideoCall */, callSpecificAppData);
}
}
@Override
- public void onCallNumberDirectly(String phoneNumber) {
+ public void onCallNumberDirectly(String phoneNumber, CallSpecificAppData callSpecificAppData) {
if (mPhoneNumberPickerActionListener != null) {
- CallSpecificAppData callSpecificAppData =
- CallSpecificAppData.newBuilder()
- .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL)
- .build();
mPhoneNumberPickerActionListener.onPickPhoneNumber(
phoneNumber, false /* isVideoCall */, callSpecificAppData);
}
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteListView.java b/java/com/android/dialer/app/list/PhoneFavoriteListView.java
index 9516f0611..f4f395ff0 100644
--- a/java/com/android/dialer/app/list/PhoneFavoriteListView.java
+++ b/java/com/android/dialer/app/list/PhoneFavoriteListView.java
@@ -1,6 +1,5 @@
/*
- * Copyright (C) 2012 Google Inc.
- * Licensed to The Android Open Source Project.
+ * Copyright (C) 2017 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.
@@ -24,7 +23,6 @@ import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.os.Handler;
import android.util.AttributeSet;
-import android.util.Log;
import android.view.DragEvent;
import android.view.MotionEvent;
import android.view.View;
@@ -33,6 +31,7 @@ import android.widget.GridView;
import android.widget.ImageView;
import com.android.dialer.app.R;
import com.android.dialer.app.list.DragDropController.DragItemContainer;
+import com.android.dialer.common.LogUtil;
/** Viewgroup that presents the user's speed dial contacts in a grid. */
public class PhoneFavoriteListView extends GridView
@@ -40,14 +39,14 @@ public class PhoneFavoriteListView extends GridView
public static final String LOG_TAG = PhoneFavoriteListView.class.getSimpleName();
final int[] mLocationOnScreen = new int[2];
- private final long SCROLL_HANDLER_DELAY_MILLIS = 5;
- private final int DRAG_SCROLL_PX_UNIT = 25;
- private final float DRAG_SHADOW_ALPHA = 0.7f;
+ private static final long SCROLL_HANDLER_DELAY_MILLIS = 5;
+ private static final int DRAG_SCROLL_PX_UNIT = 25;
+ private static final float DRAG_SHADOW_ALPHA = 0.7f;
/**
* {@link #mTopScrollBound} and {@link mBottomScrollBound} will be offseted to the top / bottom by
* {@link #getHeight} * {@link #BOUND_GAP_RATIO} pixels.
*/
- private final float BOUND_GAP_RATIO = 0.2f;
+ private static final float BOUND_GAP_RATIO = 0.2f;
private float mTouchSlop;
private int mTopScrollBound;
@@ -67,7 +66,6 @@ public class PhoneFavoriteListView extends GridView
}
};
private boolean mIsDragScrollerRunning = false;
- private int mTouchDownForDragStartX;
private int mTouchDownForDragStartY;
private Bitmap mDragShadowBitmap;
private ImageView mDragShadowOverlay;
@@ -98,7 +96,7 @@ public class PhoneFavoriteListView extends GridView
}
public PhoneFavoriteListView(Context context, AttributeSet attrs) {
- this(context, attrs, -1);
+ this(context, attrs, 0);
}
public PhoneFavoriteListView(Context context, AttributeSet attrs, int defStyle) {
@@ -121,7 +119,6 @@ public class PhoneFavoriteListView extends GridView
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
- mTouchDownForDragStartX = (int) ev.getX();
mTouchDownForDragStartY = (int) ev.getY();
}
@@ -287,7 +284,7 @@ public class PhoneFavoriteListView extends GridView
try {
bitmap = cache.copy(Bitmap.Config.ARGB_8888, false);
} catch (final OutOfMemoryError e) {
- Log.w(LOG_TAG, "Failed to copy bitmap from Drawing cache", e);
+ LogUtil.w(LOG_TAG, "Failed to copy bitmap from Drawing cache", e);
bitmap = null;
}
}
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
index 5a18d039b..40f23ea6f 100644
--- a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
+++ b/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
@@ -26,6 +26,8 @@ import android.widget.TextView;
import com.android.contacts.common.list.ContactEntry;
import com.android.dialer.app.R;
import com.android.dialer.compat.CompatUtils;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
/** Displays the contact's picture overlaid with their name and number type in a tile. */
public class PhoneFavoriteSquareTileView extends PhoneFavoriteTileView {
@@ -87,6 +89,8 @@ public class PhoneFavoriteSquareTileView extends PhoneFavoriteTileView {
new OnClickListener() {
@Override
public void onClick(View v) {
+ Logger.get(getContext())
+ .logInteraction(InteractionEvent.Type.SPEED_DIAL_OPEN_CONTACT_CARD);
launchQuickContact();
}
});
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
index db89cf3dc..835b448bd 100644
--- a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
+++ b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
@@ -18,16 +18,22 @@ package com.android.dialer.app.list;
import android.content.ClipData;
import android.content.Context;
+import android.provider.ContactsContract.PinnedPositions;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
-import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.contacts.common.list.ContactEntry;
import com.android.contacts.common.list.ContactTileView;
import com.android.dialer.app.R;
+import com.android.dialer.callintent.CallInitiationType;
+import com.android.dialer.callintent.CallSpecificAppData;
+import com.android.dialer.callintent.SpeedDialContactType;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
/**
* A light version of the {@link com.android.contacts.common.list.ContactTileView} that is used in
@@ -42,7 +48,6 @@ public abstract class PhoneFavoriteTileView extends ContactTileView {
// tile is long pressed.
static final String DRAG_PHONE_FAVORITE_TILE = "PHONE_FAVORITE_TILE";
private static final String TAG = PhoneFavoriteTileView.class.getSimpleName();
- private static final boolean DEBUG = false;
// These parameters instruct the photo manager to display the default image/letter at 70% of
// its normal size, and vertically offset upwards 12% towards the top of the letter tile, to
// make room for the contact name and number label at the bottom of the image.
@@ -55,6 +60,8 @@ public abstract class PhoneFavoriteTileView extends ContactTileView {
private View mShadowOverlay;
/** Users' most frequent phone number. */
private String mPhoneNumberString;
+ private boolean isPinned;
+ private boolean isStarred;
public PhoneFavoriteTileView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -83,6 +90,8 @@ public abstract class PhoneFavoriteTileView extends ContactTileView {
super.loadFromContact(entry);
// Set phone number to null in case we're reusing the view.
mPhoneNumberString = null;
+ isPinned = (entry.pinned != PinnedPositions.UNPINNED);
+ isStarred = entry.isFavorite;
if (entry != null) {
// Grab the phone-number to call directly. See {@link onClick()}.
mPhoneNumberString = entry.phoneNumber;
@@ -113,16 +122,35 @@ public abstract class PhoneFavoriteTileView extends ContactTileView {
if (mListener == null) {
return;
}
+
+ CallSpecificAppData.Builder callSpecificAppData =
+ CallSpecificAppData.newBuilder()
+ .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL)
+ .setSpeedDialContactPosition(
+ ((PhoneFavoriteListView) v.getParent()).getPositionForView(v));
+ if (isStarred) {
+ callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.STARRED_CONTACT);
+ } else {
+ callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.FREQUENT_CONTACT);
+ }
+ if (isPinned) {
+ callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.PINNED_CONTACT);
+ }
+
if (TextUtils.isEmpty(mPhoneNumberString)) {
// Copy "superclass" implementation
+ Logger.get(getContext())
+ .logInteraction(InteractionEvent.Type.SPEED_DIAL_CLICK_CONTACT_WITH_AMBIGUOUS_NUMBER);
mListener.onContactSelected(
- getLookupUri(), MoreContactUtils.getTargetRectFromView(PhoneFavoriteTileView.this));
+ getLookupUri(),
+ MoreContactUtils.getTargetRectFromView(PhoneFavoriteTileView.this),
+ callSpecificAppData.build());
} else {
// When you tap a frequently-called contact, you want to
// call them at the number that you usually talk to them
// at (i.e. the one displayed in the UI), regardless of
// whether that's their default number.
- mListener.onCallNumberDirectly(mPhoneNumberString);
+ mListener.onCallNumberDirectly(mPhoneNumberString, callSpecificAppData.build());
}
}
};
@@ -133,7 +161,7 @@ public abstract class PhoneFavoriteTileView extends ContactTileView {
return new DefaultImageRequest(
displayName,
lookupKey,
- ContactPhotoManager.TYPE_DEFAULT,
+ LetterTileDrawable.TYPE_DEFAULT,
DEFAULT_IMAGE_LETTER_SCALE,
DEFAULT_IMAGE_LETTER_OFFSET,
false);
diff --git a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
index c692ecac7..ce8598261 100644
--- a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
+++ b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
@@ -30,7 +30,6 @@ import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.PinnedPositions;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
-import android.util.Log;
import android.util.LongSparseArray;
import android.view.View;
import android.view.ViewGroup;
@@ -41,6 +40,11 @@ import com.android.contacts.common.list.ContactEntry;
import com.android.contacts.common.list.ContactTileView;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.dialer.app.R;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.lightbringer.Lightbringer;
+import com.android.dialer.lightbringer.LightbringerComponent;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
import com.android.dialer.shortcuts.ShortcutRefresher;
import com.google.common.collect.ComparisonChain;
import java.util.ArrayList;
@@ -190,6 +194,14 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop
// Track the length of {@link #mContactEntries} and compare to {@link #TILES_SOFT_LIMIT}.
int counter = 0;
+ // Data for logging
+ int starredContactsCount = 0;
+ int pinnedContactsCount = 0;
+ int multipleNumbersContactsCount = 0;
+ int contactsWithPhotoCount = 0;
+ int contactsWithNameCount = 0;
+ int duoReachableContactsCount = 0;
+
// The cursor should not be closed since this is invoked from a CursorLoader.
if (cursor.moveToFirst()) {
int starredColumn = cursor.getColumnIndexOrThrow(Contacts.STARRED);
@@ -262,6 +274,22 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop
contact.pinned = pinned;
mContactEntries.add(contact);
+ // Set counts for logging
+ if (isStarred) {
+ // mNumStarred might be larger than the number of visible starred contact,
+ // since it includes invisible ones (starred contact with no phone number).
+ starredContactsCount++;
+ }
+ if (pinned != PinnedPositions.UNPINNED) {
+ pinnedContactsCount++;
+ }
+ if (!TextUtils.isEmpty(name)) {
+ contactsWithNameCount++;
+ }
+ if (photoUri != null) {
+ contactsWithPhotoCount++;
+ }
+
duplicates.put(id, contact);
counter++;
@@ -274,6 +302,47 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop
ShortcutRefresher.refresh(mContext, mContactEntries);
notifyDataSetChanged();
+
+ Lightbringer lightbringer = LightbringerComponent.get(mContext).getLightbringer();
+ for (ContactEntry contact : mContactEntries) {
+ if (contact.phoneNumber == null) {
+ multipleNumbersContactsCount++;
+ } else if (lightbringer.isReachable(mContext, contact.phoneNumber)) {
+ duoReachableContactsCount++;
+ }
+ }
+
+ Logger.get(mContext)
+ .logSpeedDialContactComposition(
+ counter,
+ starredContactsCount,
+ pinnedContactsCount,
+ multipleNumbersContactsCount,
+ contactsWithPhotoCount,
+ contactsWithNameCount,
+ duoReachableContactsCount);
+ // Logs for manual testing
+ LogUtil.v("PhoneFavoritesTileAdapter.saveCursorToCache", "counter: %d", counter);
+ LogUtil.v(
+ "PhoneFavoritesTileAdapter.saveCursorToCache",
+ "starredContactsCount: %d",
+ starredContactsCount);
+ LogUtil.v(
+ "PhoneFavoritesTileAdapter.saveCursorToCache",
+ "pinnedContactsCount: %d",
+ pinnedContactsCount);
+ LogUtil.v(
+ "PhoneFavoritesTileAdapter.saveCursorToCache",
+ "multipleNumbersContactsCount: %d",
+ multipleNumbersContactsCount);
+ LogUtil.v(
+ "PhoneFavoritesTileAdapter.saveCursorToCache",
+ "contactsWithPhotoCount: %d",
+ contactsWithPhotoCount);
+ LogUtil.v(
+ "PhoneFavoritesTileAdapter.saveCursorToCache",
+ "contactsWithNameCount: %d",
+ contactsWithNameCount);
}
/** Iterates over the {@link Cursor} Returns position of the first NON Starred Contact */
@@ -347,7 +416,7 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop
@Override
public void notifyDataSetChanged() {
if (DEBUG) {
- Log.v(TAG, "notifyDataSetChanged");
+ LogUtil.v(TAG, "notifyDataSetChanged");
}
super.notifyDataSetChanged();
}
@@ -355,7 +424,7 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (DEBUG) {
- Log.v(TAG, "get view for " + String.valueOf(position));
+ LogUtil.v(TAG, "get view for " + position);
}
PhoneFavoriteTileView tileView = null;
@@ -455,8 +524,9 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop
// update the database here with the new pinned positions
try {
mContext.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations);
+ Logger.get(mContext).logInteraction(InteractionEvent.Type.SPEED_DIAL_PIN_CONTACT);
} catch (RemoteException | OperationApplicationException e) {
- Log.e(TAG, "Exception thrown when pinning contacts", e);
+ LogUtil.e(TAG, "Exception thrown when pinning contacts", e);
}
}
}
@@ -609,6 +679,7 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop
if (mDraggedEntry != null) {
unstarAndUnpinContact(mDraggedEntry.lookupUri);
mAwaitingRemove = true;
+ Logger.get(mContext).logInteraction(InteractionEvent.Type.SPEED_DIAL_REMOVE_CONTACT);
}
}
diff --git a/java/com/android/dialer/app/list/RegularSearchFragment.java b/java/com/android/dialer/app/list/RegularSearchFragment.java
index 02896793b..4f032032f 100644
--- a/java/com/android/dialer/app/list/RegularSearchFragment.java
+++ b/java/com/android/dialer/app/list/RegularSearchFragment.java
@@ -25,12 +25,12 @@ import android.view.ViewGroup;
import com.android.contacts.common.list.ContactEntryListAdapter;
import com.android.contacts.common.list.PinnedHeaderListView;
import com.android.dialer.app.R;
-import com.android.dialer.app.widget.EmptyContentView;
-import com.android.dialer.app.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.phonenumbercache.CachedNumberLookupService;
import com.android.dialer.phonenumbercache.PhoneNumberCache;
import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
public class RegularSearchFragment extends SearchFragment
implements OnEmptyViewActionButtonClickedListener,
diff --git a/java/com/android/dialer/app/list/RemoveView.java b/java/com/android/dialer/app/list/RemoveView.java
index 3b917db43..1d566c5a0 100644
--- a/java/com/android/dialer/app/list/RemoveView.java
+++ b/java/com/android/dialer/app/list/RemoveView.java
@@ -41,7 +41,7 @@ public class RemoveView extends FrameLayout {
}
public RemoveView(Context context, AttributeSet attrs) {
- this(context, attrs, -1);
+ this(context, attrs, 0);
}
public RemoveView(Context context, AttributeSet attrs, int defStyle) {
diff --git a/java/com/android/dialer/app/list/SearchFragment.java b/java/com/android/dialer/app/list/SearchFragment.java
index fcf8236e3..7f2d17650 100644
--- a/java/com/android/dialer/app/list/SearchFragment.java
+++ b/java/com/android/dialer/app/list/SearchFragment.java
@@ -34,19 +34,18 @@ import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Space;
import com.android.contacts.common.list.ContactEntryListAdapter;
-import com.android.contacts.common.list.ContactListItemView;
import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
import com.android.contacts.common.list.PhoneNumberPickerFragment;
import com.android.dialer.animation.AnimUtils;
import com.android.dialer.app.R;
import com.android.dialer.app.dialpad.DialpadFragment.ErrorDialogFragment;
import com.android.dialer.app.widget.DialpadSearchEmptyContentView;
-import com.android.dialer.app.widget.EmptyContentView;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.LogUtil;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.IntentUtil;
import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.widget.EmptyContentView;
public class SearchFragment extends PhoneNumberPickerFragment {
@@ -80,7 +79,6 @@ public class SearchFragment extends PhoneNumberPickerFragment {
setQuickContactEnabled(true);
setAdjustSelectionBoundsEnabled(false);
setDarkTheme(false);
- setPhotoPosition(ContactListItemView.getDefaultPhotoPosition(false /* opposite */));
setUseCallableUri(true);
try {
diff --git a/java/com/android/dialer/app/list/SmartDialSearchFragment.java b/java/com/android/dialer/app/list/SmartDialSearchFragment.java
index eb1508c72..fc21c8bc3 100644
--- a/java/com/android/dialer/app/list/SmartDialSearchFragment.java
+++ b/java/com/android/dialer/app/list/SmartDialSearchFragment.java
@@ -29,11 +29,11 @@ import android.support.v13.app.FragmentCompat;
import com.android.contacts.common.list.ContactEntryListAdapter;
import com.android.dialer.app.R;
import com.android.dialer.app.dialpad.SmartDialCursorLoader;
-import com.android.dialer.app.widget.EmptyContentView;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.common.LogUtil;
import com.android.dialer.database.DialerDatabaseHelper;
import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.widget.EmptyContentView;
/** Implements a fragment to load and display SmartDial search results. */
public class SmartDialSearchFragment extends SearchFragment
diff --git a/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml b/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml
index ca93da0de..7c6df9448 100644
--- a/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml
+++ b/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml
@@ -19,7 +19,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.dialer.app">
- <application>
+ <application android:theme="@style/Theme.AppCompat">
<activity
android:exported="false"
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_48dp.png
new file mode 100644
index 000000000..eeed895f1
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_48dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_blue_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_blue_24dp.png
new file mode 100644
index 000000000..b041a74bd
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_blue_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_empty_check_mark_white_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_empty_check_mark_white_24dp.png
new file mode 100644
index 000000000..2c5ba8d58
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_empty_check_mark_white_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_results_phone.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_results_phone.png
deleted file mode 100644
index 3a1a7a790..000000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/ic_results_phone.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_check_mark_48dp.png
new file mode 100644
index 000000000..f3b76be4c
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-mdpi/ic_check_mark_48dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_results_phone.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_results_phone.png
deleted file mode 100644
index 74ccf14b8..000000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/ic_results_phone.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_check_mark_48dp.png
new file mode 100644
index 000000000..01a3bbe06
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-xhdpi/ic_check_mark_48dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_results_phone.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_results_phone.png
deleted file mode 100644
index 0e24fa45c..000000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/ic_results_phone.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_check_mark_48dp.png
new file mode 100644
index 000000000..204327950
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_check_mark_48dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_results_phone.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_results_phone.png
deleted file mode 100644
index 9594619cb..000000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_results_phone.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_check_mark_48dp.png
new file mode 100644
index 000000000..bfbe69e35
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_check_mark_48dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_results_phone.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_results_phone.png
deleted file mode 100644
index 395652cdf..000000000
--- a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_results_phone.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable/ic_search_phone.xml b/java/com/android/dialer/app/res/drawable/ic_search_phone.xml
deleted file mode 100644
index 5d449ee56..000000000
--- a/java/com/android/dialer/app/res/drawable/ic_search_phone.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/ic_results_phone"
- android:tint="@color/search_shortcut_icon_color"/>
diff --git a/java/com/android/dialer/app/res/drawable/ic_wifi_calling.xml b/java/com/android/dialer/app/res/drawable/ic_wifi_calling.xml
new file mode 100644
index 000000000..968713376
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable/ic_wifi_calling.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:tint="?attr/colorControlNormal"
+ android:viewportHeight="30"
+ android:viewportWidth="30"
+ android:width="24dp">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M14.88,16.3h0L25,3.66a16.51,16.51 0,0 0,-20.3 0L14.88,16.3Z"/>
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M26.42,18.88a1.25,1.25 0,0 0,-0.89 -0.36,1.28 1.28,0 0,0 -0.87,0.35 14.26,14.26 0,0 1,-3.32 2.31,1.24 1.24,0 0,0 -0.7,1.12v3.87a18.27,18.27 0,0 1,-5.75 0.91,18.63 18.63,0 0,1 -5.75,-0.9v-3.87a1.26,1.26 0,0 0,-0.7 -1.12,14.73 14.73,0 0,1 -3.34,-2.31 1.23,1.23 0,0 0,-0.87 -0.35,1.25 1.25,0 0,0 -0.89,0.36L0.24,22a1.24,1.24 0,0 0,-0.36 0.89,1.23 1.23,0 0,0 0.37,0.87 21.26,21.26 0,0 0,29.26 0,1.27 1.27,0 0,0 0,-1.77Z"/>
+</vector> \ No newline at end of file
diff --git a/java/com/android/dialer/app/res/layout-land/empty_content_view_dialpad_search.xml b/java/com/android/dialer/app/res/layout-land/empty_content_view_dialpad_search.xml
index 5f8068067..59d13636a 100644
--- a/java/com/android/dialer/app/res/layout-land/empty_content_view_dialpad_search.xml
+++ b/java/com/android/dialer/app/res/layout-land/empty_content_view_dialpad_search.xml
@@ -26,14 +26,14 @@
android:layout_height="0dp"
android:layout_weight="1"/>
<ImageView
- android:id="@+id/emptyListViewImage"
+ android:id="@+id/empty_list_view_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:importantForAccessibility="no"/>
<TextView
- android:id="@+id/emptyListViewMessage"
+ android:id="@+id/empty_list_view_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
@@ -45,7 +45,7 @@
android:textSize="@dimen/empty_list_message_text_size"/>
<TextView
- android:id="@+id/emptyListViewAction"
+ android:id="@+id/empty_list_view_action"
style="@style/TextActionStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/java/com/android/dialer/app/res/layout/action_mode_close_button.xml b/java/com/android/dialer/app/res/layout/action_mode_close_button.xml
new file mode 100644
index 000000000..4cb85d458
--- /dev/null
+++ b/java/com/android/dialer/app/res/layout/action_mode_close_button.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+
+<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/action_mode_close_button"
+ style="?attr/actionModeCloseButtonStyle"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_marginEnd="16dip"
+ android:layout_marginRight="16dip"
+ android:paddingStart="8dp"
+ android:paddingLeft="8dp"
+ android:clickable="true"
+ android:contentDescription="@string/description_cancel_multi_select"
+ android:focusable="true"
+ android:src="@drawable/quantum_ic_close_white_24"/>
+
+
diff --git a/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml b/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml
index 17a45208d..422c52991 100644
--- a/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml
+++ b/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml
@@ -45,7 +45,7 @@
android:cropToPadding="false"
android:clipToPadding="false"/>
- <com.android.dialer.app.widget.EmptyContentView
+ <com.android.dialer.widget.EmptyContentView
android:id="@+id/empty_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/java/com/android/dialer/app/res/layout/call_log_fragment.xml b/java/com/android/dialer/app/res/layout/call_log_fragment.xml
index 64f7c10e6..8ed2d5b8a 100644
--- a/java/com/android/dialer/app/res/layout/call_log_fragment.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_fragment.xml
@@ -37,7 +37,7 @@
android:background="@color/background_dialer_call_log"
android:clipToPadding="false"/>
- <com.android.dialer.app.widget.EmptyContentView
+ <com.android.dialer.widget.EmptyContentView
android:id="@+id/empty_list_view"
android:layout_width="match_parent"
android:layout_height="0dp"
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item.xml b/java/com/android/dialer/app/res/layout/call_log_list_item.xml
index 0fbbb9dd1..4a3a83683 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item.xml
@@ -80,7 +80,7 @@
android:layout_width="@dimen/contact_photo_size"
android:layout_height="@dimen/contact_photo_size"
android:visibility="gone"
- android:src="@drawable/quantum_ic_check_circle_googblue_24" />
+ android:src="@drawable/ic_check_mark_48dp" />
</FrameLayout>
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
index d3a553130..504638348 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
@@ -50,7 +50,7 @@
<TextView
android:id="@+id/call_action_text"
style="@style/CallLogActionTextStyle"
- android:text="@string/description_call_log_call_action"/>
+ android:text="@string/call"/>
<TextView
android:id="@+id/call_type_or_location_text"
@@ -135,7 +135,7 @@
<ImageView
style="@style/CallLogActionIconStyle"
- android:src="@drawable/ic_call_and_share"/>
+ android:src="@drawable/ic_phone_attach"/>
<TextView
style="@style/CallLogActionTextStyle"
diff --git a/java/com/android/dialer/app/res/layout/dialpad_fragment.xml b/java/com/android/dialer/app/res/layout/dialpad_fragment.xml
index dd6dab747..9b95e1fbf 100644
--- a/java/com/android/dialer/app/res/layout/dialpad_fragment.xml
+++ b/java/com/android/dialer/app/res/layout/dialpad_fragment.xml
@@ -21,42 +21,42 @@
android:orientation="horizontal">
<LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
<!-- spacer view -->
<View
- android:id="@+id/spacer"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:background="#00000000"/>
+ android:id="@+id/spacer"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:background="#00000000"/>
<!-- Dialpad shadow -->
<View
- android:layout_width="match_parent"
- android:layout_height="@dimen/shadow_length"
- android:background="@drawable/shadow_fade_up"/>
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/shadow_length"
+ android:background="@drawable/shadow_fade_up"/>
<include layout="@layout/dialpad_view"/>
<!-- "Dialpad chooser" UI, shown only when the user brings up the
Dialer while a call is already in progress.
When this UI is visible, the other Dialer elements
(the textfield/button and the dialpad) are hidden. -->
<ListView
- android:id="@+id/dialpadChooser"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="@color/background_dialer_light"
- android:visibility="gone"/>
+ android:id="@+id/dialpadChooser"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@color/background_dialer_light"
+ android:visibility="gone"/>
</LinearLayout>
<!-- Margin bottom and alignParentBottom don't work well together, so use a Space instead. -->
<Space
- android:id="@+id/dialpad_floating_action_button_margin_bottom"
- android:layout_width="match_parent"
- android:layout_height="@dimen/floating_action_button_margin_bottom"
- android:layout_alignParentBottom="true"/>
+ android:id="@+id/dialpad_floating_action_button_margin_bottom"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/floating_action_button_margin_bottom"
+ android:layout_alignParentBottom="true"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/dialpad_floating_action_button"
@@ -64,8 +64,9 @@
android:layout_height="@dimen/floating_action_button_height"
android:layout_above="@id/dialpad_floating_action_button_margin_bottom"
android:layout_centerHorizontal="true"
- android:src="@drawable/quantum_ic_call_white_24"
android:contentDescription="@string/description_dial_button"
- app:elevation="@dimen/floating_action_button_translation_z"
- app:backgroundTint="@color/dialpad_fab_green"/>
+ android:src="@drawable/quantum_ic_call_vd_theme_24"
+ app:backgroundTint="@color/dialpad_fab_green"
+ app:colorControlNormal="#ffffff"
+ app:elevation="@dimen/floating_action_button_translation_z"/>
</view>
diff --git a/java/com/android/dialer/app/res/layout/empty_content_view_dialpad_search.xml b/java/com/android/dialer/app/res/layout/empty_content_view_dialpad_search.xml
index e245aaca0..1d2047982 100644
--- a/java/com/android/dialer/app/res/layout/empty_content_view_dialpad_search.xml
+++ b/java/com/android/dialer/app/res/layout/empty_content_view_dialpad_search.xml
@@ -16,7 +16,7 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
- android:id="@+id/emptyListViewImage"
+ android:id="@+id/empty_list_view_image"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_width="match_parent"
@@ -24,7 +24,7 @@
android:gravity="center_horizontal" />
<TextView
- android:id="@+id/emptyListViewMessage"
+ android:id="@+id/empty_list_view_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal|top"
@@ -36,7 +36,7 @@
android:paddingBottom="8dp"/>
<TextView
- android:id="@+id/emptyListViewAction"
+ android:id="@+id/empty_list_view_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
diff --git a/java/com/android/dialer/app/res/layout/lists_fragment.xml b/java/com/android/dialer/app/res/layout/lists_fragment.xml
index 442b428f2..71867d705 100644
--- a/java/com/android/dialer/app/res/layout/lists_fragment.xml
+++ b/java/com/android/dialer/app/res/layout/lists_fragment.xml
@@ -15,41 +15,41 @@
-->
<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">
-
- <LinearLayout
+ 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:orientation="vertical">
+ android:animateLayoutChanges="true">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ 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"
- android:elevation="@dimen/tab_elevation"/>
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/action_bar_height_large"
+ android:background="@color/actionbar_background_color"
+ android:elevation="@dimen/tab_elevation"/>
<com.android.contacts.common.list.ViewPagerTabs
- android:id="@+id/lists_pager_header"
- style="@style/DialtactsActionBarTabTextStyle"
- android:layout_width="match_parent"
- android:layout_height="@dimen/tab_height"
- android:layout_gravity="top"
- android:elevation="@dimen/tab_elevation"
- android:orientation="horizontal"
- android:textAllCaps="true"/>
-
- <android.support.v4.view.ViewPager
- android:id="@+id/lists_pager"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"/>
+ android:id="@+id/lists_pager_header"
+ style="@style/DialtactsActionBarTabTextStyle"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/tab_height"
+ android:layout_gravity="top"
+ android:elevation="@dimen/tab_elevation"
+ android:orientation="horizontal"
+ android:textAllCaps="true"/>
+
+ <com.android.dialer.app.list.DialerViewPager
+ android:id="@+id/lists_pager"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"/>
</LinearLayout>
@@ -58,41 +58,80 @@
This is required since drag and drop event is only sent to views are visible when drag
starts. -->
<com.android.dialer.app.list.RemoveView
- android:id="@+id/remove_view"
- android:layout_width="match_parent"
- android:layout_height="@dimen/tab_height"
- android:layout_marginTop="@dimen/action_bar_height_large"
- android:contentDescription="@string/remove_contact"
- android:importantForAccessibility="no">
+ android:id="@+id/remove_view"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/tab_height"
+ android:layout_marginTop="@dimen/action_bar_height_large"
+ android:contentDescription="@string/remove_contact"
+ android:importantForAccessibility="no">
<LinearLayout
- android:id="@+id/remove_view_content"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/actionbar_background_color"
- android:gravity="center"
- android:orientation="horizontal"
- android:visibility="gone">
+ android:id="@+id/remove_view_content"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/actionbar_background_color"
+ android:gravity="center"
+ android:orientation="horizontal"
+ android:visibility="gone">
<ImageView
- android:id="@+id/remove_view_icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="8dp"
- android:layout_marginBottom="8dp"
- android:src="@drawable/ic_remove"
- android:tint="@color/remove_text_color"/>
+ android:id="@+id/remove_view_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp"
+ android:src="@drawable/ic_remove"
+ android:tint="@color/remove_text_color"/>
<TextView
- android:id="@+id/remove_view_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/remove_contact"
- android:textColor="@color/remove_text_color"
- android:textSize="@dimen/remove_text_size"/>
+ android:id="@+id/remove_view_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/remove_contact"
+ android:textColor="@color/remove_text_color"
+ android:textSize="@dimen/remove_text_size"/>
</LinearLayout>
</com.android.dialer.app.list.RemoveView>
+ <FrameLayout
+ android:id="@+id/multi_select_view"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/tab_height"
+ android:layout_marginTop="@dimen/action_bar_height_large"
+ android:contentDescription="@string/remove_contact"
+ android:importantForAccessibility="no">
+
+ <LinearLayout
+ android:id="@+id/multi_select_select_all_view_content"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="center"
+ android:background="@color/actionbar_background_color"
+ android:orientation="horizontal"
+ android:visibility="gone">
+
+ <ImageView
+ android:id="@+id/select_all_view_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:paddingLeft="12dp"
+ android:gravity="center_vertical"
+ android:src="@drawable/ic_empty_check_mark_white_24dp"/>
+ <TextView
+ android:id="@+id/select_all_view_text"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:paddingLeft="30dp"
+ android:gravity="center_vertical"
+ android:text="@string/select_all"
+ android:textAllCaps="true"
+ android:textStyle="bold"
+ android:textColor="@color/remove_text_color"
+ android:textSize="@dimen/remove_text_size"/>
+ </LinearLayout>
+
+ </FrameLayout>
+
</FrameLayout>
diff --git a/java/com/android/dialer/app/res/layout/search_edittext.xml b/java/com/android/dialer/app/res/layout/search_edittext.xml
index c02512d80..bb6a5f7de 100644
--- a/java/com/android/dialer/app/res/layout/search_edittext.xml
+++ b/java/com/android/dialer/app/res/layout/search_edittext.xml
@@ -29,7 +29,7 @@
android:padding="@dimen/search_box_search_icon_padding"
android:importantForAccessibility="no"
android:scaleType="center"
- android:src="@drawable/quantum_ic_search_white_24"
+ android:src="@drawable/quantum_ic_search_vd_theme_24"
android:tint="@color/searchbox_icon_tint"/>
<TextView
diff --git a/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml b/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml
index c778c6bc4..3fa3be229 100644
--- a/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml
+++ b/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml
@@ -41,7 +41,7 @@
android:numColumns="@integer/contact_tile_column_count_in_favorites"/>
</FrameLayout>
- <com.android.dialer.app.widget.EmptyContentView
+ <com.android.dialer.widget.EmptyContentView
android:id="@+id/empty_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/java/com/android/dialer/app/res/values-af/strings.xml b/java/com/android/dialer/app/res/values-af/strings.xml
index 2eb462b1c..4f4c65b8a 100644
--- a/java/com/android/dialer/app/res/values-af/strings.xml
+++ b/java/com/android/dialer/app/res/values-af/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Keer terug na oproep wat besig is"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Voeg oproep by"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Inkomende oproepe"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Gaan tans grootmaathandelingmodus in"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Het grootmaathandelingmodus verlaat"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Het <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> gekies"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Het <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ontkies"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Speel stemboodskap"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Bekyk kontak <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Bel <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Stemboodskap"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Kanselleer grootmaathandelingmodus"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"stemboodskap"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"stemboodskappe"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nee"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Vee geselekteerde <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> uit?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> gekies"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> om <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Laai tans van SIM-kaart af…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM-kaartkontakte"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Geen kontakte-program beskikbaar nie"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Stemsoektog is nie beskikbaar nie"</string>
<string name="call_not_available" msgid="7850148370757361155">"Kan nie \'n foonoproep maak nie want die Foon-program is gedeaktiveer."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Deursoek kontakte"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> nuwe gemiste oproepe"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Daar is nog niemand op jou spoedbel nie"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Voeg \'n gunsteling by"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Jy het nog nie enige kontakte nie"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Voeg \'n kontak by"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Raak aan prent om al die nommers te sien of raak en hou om te herorganiseer"</string>
<string name="remove_contact" msgid="2353580570488923668">"Verwyder"</string>
+ <string name="select_all" msgid="408601760696146245">"Kies alles"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Video-oproep"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Stuur \'n boodskap"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Oproepbesonderhede"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Geblokkeerde nommers"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> is reeds geblokkeer."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Oproeprekeninge"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Skakel aan"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Stel toestemmings"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Skakel die kontaktetoestemming aan om spoedbel te aktiveer."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Skakel die foontoestemming aan om jou oproeprekord te sien."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Skakel die kontaktetoestemming aan om jou kontakte te sien."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Skakel die foontoestemming aan om na jou stemboodskapdiens te gaan."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Skakel die Kontakte-toestemmings aan om jou kontakte te deursoek."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Skakel die foontoestemming aan om \'n oproep te maak."</string>
diff --git a/java/com/android/dialer/app/res/values-am/strings.xml b/java/com/android/dialer/app/res/values-am/strings.xml
index 82303019c..7f4a622d7 100644
--- a/java/com/android/dialer/app/res/values-am/strings.xml
+++ b/java/com/android/dialer/app/res/values-am/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"በመካሄድ ላይ ወዳለው ጥሪ ተመለስ"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"ጥሪ ያክሉ"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"ገቢ ጥሪዎች"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"ወደ የጅምላ እርምጃ ሁነታ በመግባት ላይ"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"ከጅምላ እርምጃ ሁነታ ለቀው ወጥተዋል"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ተመርጧል"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> አልተመረጠም"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"የድምፅ መልዕክት አጫውት"</string>
<string name="description_view_contact" msgid="3940984937384372665">"ዕውቂያ <xliff:g id="NAME">%1$s</xliff:g> ዕይ"</string>
<string name="description_call" msgid="1532402285334775372">"ጥሪ <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"የድምፅ መልዕክት"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ሰከንድ"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> ደቂቃ <xliff:g id="SECONDS">%s</xliff:g> ሴከ"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"የጅምላ እርምጃ ሁነታ ይቅር"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"የድምፅ መልዕክት"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"የድምፅ መልዕክቶች"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"አዎ"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"አይ"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"የተመረጠው <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> ይሰረዝ?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> ተመርጠዋል"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g> ላይ"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"ከSIM ካርድ ላይ በመጫን ላይ..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"የSIM ካርድ ዕውቂያዎች"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"ምንም የእውቂያዎች መተግበሪያ አይገኝም"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"የድምጽ ፍለጋ አይገኝም"</string>
<string name="call_not_available" msgid="7850148370757361155">"የስልክ መተግበሪያው ስለተሰናከለ የስልክ ጥሪ ማድረግ አይቻልም።"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"ዕውቅያዎችን ፈልግ"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> አዲስ ያልተመለሱ ጥሪዎች"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"በፈጥኖ መደወያ ላይ ገና ማንም የለዎትም"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"ተወዳጅ አክል"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"ገና ምንም እውቂያዎች የሉዎትም"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"ዕውቂያ አክል"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"ሁሉንም ቁጥሮች ለማየት ምስል ይንኩ ወይም ዳግም ለመደርደር ነክተው ይያዙት"</string>
<string name="remove_contact" msgid="2353580570488923668">"አስወግድ"</string>
+ <string name="select_all" msgid="408601760696146245">"ሁሉንም ምረጥ"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"የቪዲዮ ጥሪ"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"መልእክት ላክ"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"የጥሪ ዝርዝሮች"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"የታገዱ ቁጥሮች"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ቀድሞውኑ ታግዷል።"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"የመደወያ መለያዎች"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"አብራ"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"ፍቃዶችን አዋቅር"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"ፈጥኖ መደወያን ለማንቃት የእውቂያዎች ፍቃዱን ያብሩ።"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"የጥሪ ምዝግብ ማስታወአሽዎን ለማየት የስልክ ፍቃዱን ያብሩ።"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"የእርስዎን እውቂያዎች ለማየት የእውቂያዎች ፍቃዱን ያብሩ።"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"የድምፅ መልዕክትዎን ለመድረስ የስልክ ፍቃዱን ያብሩ።"</string>
<string name="permission_no_search" msgid="2424710404207193826">"የእርስዎን እውቂያዎች ለመከታተል የእውቂያዎች ፍቃዶችን ያብሩ።"</string>
<string name="permission_place_call" msgid="8686908130349369423">"ስልክ ለመደወል የስልክ ፍቃዱን ያብሩ።"</string>
diff --git a/java/com/android/dialer/app/res/values-ar/strings.xml b/java/com/android/dialer/app/res/values-ar/strings.xml
index e4dfb4d9e..3687d0bcb 100644
--- a/java/com/android/dialer/app/res/values-ar/strings.xml
+++ b/java/com/android/dialer/app/res/values-ar/strings.xml
@@ -89,6 +89,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"عودة إلى المكالمة الجارية"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"إضافة مكالمة"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"المكالمات الواردة"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"يتم الدخول إلى وضع الإجراء المجمَّع"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"تمت مغادرة وضع الإجراء المجمَّع"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"تم تحديد <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"تم إلغاء تحديد <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"تشغيل البريد الصوتي"</string>
<string name="description_view_contact" msgid="3940984937384372665">"عرض جهة الاتصال <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"الاتصال بـ <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -103,11 +107,13 @@
<string name="voicemail" msgid="8899540969000957954">"البريد الصوتي"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ثانية"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> دقيقة <xliff:g id="SECONDS">%s</xliff:g> ثانية"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"إلغاء وضع الإجراءات المجمَّع"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"البريد الصوتي"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"رسائل البريد الصوتي"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"نعم"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"لا"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"حذف رسائل <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> المحددة؟"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"تم تحديد <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> في <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -120,7 +126,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"‏جارٍ التحميل من شريحة SIM…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"‏شريحة SIM وجهات الاتصال"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"لا يتوفر تطبيق لجهات الاتصال"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"البحث الصوتي غير متاح"</string>
<string name="call_not_available" msgid="7850148370757361155">"يتعذر إجراء مكالمة هاتفية نظرًا لأنه تم تعطيل تطبيق الهاتف."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"البحث في جهات الاتصال"</string>
@@ -149,10 +154,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> من المكالمات الجديدة الفائتة"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"لم تتم إضافة أية جهة اتصال إلى قائمة الاتصال السريع حتى الآن"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"إضافة مفضلة"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"ليست لديك أية جهات اتصال حتى الآن"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"إضافة جهة اتصال"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"المس الصورة للاطلاع على جميع الأرقام أو المس مع الاستمرار لإعادة الترتيب"</string>
<string name="remove_contact" msgid="2353580570488923668">"إزالة"</string>
+ <string name="select_all" msgid="408601760696146245">"تحديد الكل"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"مكالمة فيديو"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"إرسال رسالة"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"تفاصيل المكالمة"</string>
@@ -221,11 +225,9 @@
<string name="block_list" msgid="4701585783411870782">"الأرقام المحظورة"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"تم حظر <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"حسابات الاتصال"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"تشغيل"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"تعيين الأذونات"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"لتمكين الاتصال السريع، شغِّل إذن جهات الاتصال."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"للاطلاع على سجل المكالمات، شغِّل إذن الهاتف."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"للاطلاع على جهات الاتصال، شغِّل إذن جهات الاتصال."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"للوصول إلى البريد الصوتي، شغِّل إذن الهاتف."</string>
<string name="permission_no_search" msgid="2424710404207193826">"للبحث عن جهات الاتصال، عليك تشغيل أذونات جهات الاتصال."</string>
<string name="permission_place_call" msgid="8686908130349369423">"لإجراء مكالمة، شغِّل إذن الهاتف."</string>
diff --git a/java/com/android/dialer/app/res/values-az/strings.xml b/java/com/android/dialer/app/res/values-az/strings.xml
index 62bc117ba..b6681c9e2 100644
--- a/java/com/android/dialer/app/res/values-az/strings.xml
+++ b/java/com/android/dialer/app/res/values-az/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Davam edən zəngə qayıdın"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Zəng əlavə edin"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Gələn zənglər"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Toplu əməliyyat rejiminə daxil olunur"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Toplu əməliyyat rejimi tərk edilir"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> seçildi"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> seçilmədi"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Səsli məktubu oxudun"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> adlı kontakta baxın"</string>
<string name="description_call" msgid="1532402285334775372">"Zəng <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Səsli poçt"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> san"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> dəq <xliff:g id="SECONDS">%s</xliff:g> san"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Qrup əməliyyatları rejimini ləğv edin"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"səsli e-məktub"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"səsli e-məktublar"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Bəli"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Xeyr"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Seçilmiş <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> silinsin?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> seçilib"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> tarixində <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM kartdan yüklənir..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM kart kontaktları"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Əlaqələr proqramı mövcud deyil"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Səsli axtarış mövcud deyil"</string>
<string name="call_not_available" msgid="7850148370757361155">"Telefon tətbiqi deaktiv edildiyinə görə telefon zəngi etmək mümkün deyil."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Kontakt axtarın"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> yeni buraxılmış zəng"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Hələ sürətli zəng siyahınızda hec kim yoxdur"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Sevimlilərə əlavə edin"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Hələ heç bir kontaktınız yoxdur"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Kontakt əlavə edin"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Bütün nömrələri görmək üçün təsvirə toxunun və ya yenidən qaydaya salmaq üçün basıb saxlayın"</string>
<string name="remove_contact" msgid="2353580570488923668">"Yığışdır"</string>
+ <string name="select_all" msgid="408601760696146245">"Hamısını seçin"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Video zəng"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Mesaj göndərin"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Zəng detalları"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Bloklanmış nömrələr"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> artıq bloklanıb."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Hesabların çağrılması"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Aktiv edin"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"İcazələri quraşdırın"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Sürətli yığımı aktivləşdirmək üçün, Kontakt icazələrini aktivləşdirin."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Çağrı jurnalınızı görmək üçün Telefon icazəsini aktivləşdirin."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Kontaktlarınızı görmək üçün Kontakt icazəsini aktivləşdirin."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Səsli poçta daxil olmaq üçün, Telefon icazəsini aktivləşdirin."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Kontaktlarınızı axtarmaq üçün, Kontakt icazələrini aktiv edin."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Zəng etmək üçün, Telefon icazəsini aktivləşdirin."</string>
diff --git a/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
index 9df729108..40c0886c8 100644
--- a/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
@@ -86,6 +86,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Vrati se na poziv koji je u toku"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Dodaj poziv"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Dolazni pozivi"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Ulazite u režim grupnih radnji"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Izašli ste iz režima grupnih radnji"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Izabrano je <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Opozvan je izbor <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Puštanje govorne pošte"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Prikaži kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Pozovi <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -100,11 +104,13 @@
<string name="voicemail" msgid="8899540969000957954">"Govorna pošta"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Otkažite režim grupnih radnji"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"govornu poruku"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"govorne poruke"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Da"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Želite li da izbrišete izabranu(e) <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Izabranih: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> u <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -117,7 +123,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Učitava se sa SIM kartice…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakti na SIM kartici"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nema dostupne aplikacije za kontakte"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Glasovna pretraga nije dostupna"</string>
<string name="call_not_available" msgid="7850148370757361155">"Nije moguće uputiti telefonski poziv jer je aplikacija Telefon onemogućena."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Pretraži kontakte"</string>
@@ -146,10 +151,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Novih propuštenih poziva: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Nemate nijedan kontakt na brzom biranju"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Dodaj omiljen kontakt"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Još uvek nemate nijedan kontakt"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Dodaj kontakt"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Dodirnite sliku da biste videli sve brojeve ili dodirnite i zadržite da biste im promenili raspored"</string>
<string name="remove_contact" msgid="2353580570488923668">"Ukloni"</string>
+ <string name="select_all" msgid="408601760696146245">"Izaberi sve"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Video poziv"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Pošalji poruku"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detalji poziva"</string>
@@ -215,11 +219,9 @@
<string name="block_list" msgid="4701585783411870782">"Blokirani brojevi"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> je već blokiran."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Nalozi za pozivanje"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Uključi"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Podesi dozvole"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Da biste omogućili brzo biranje, uključite dozvolu za Kontakte."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Da biste videli evidenciju poziva, uključite dozvolu za Telefon."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Da biste videli kontakte, uključite dozvolu za Kontakte."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Da biste pristupili govornoj pošti, uključite dozvolu za Telefon."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Da biste pretražili kontakte, uključite dozvole za Kontakte."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Da biste uputili poziv, uključite dozvolu za Telefon."</string>
diff --git a/java/com/android/dialer/app/res/values-be/strings.xml b/java/com/android/dialer/app/res/values-be/strings.xml
index aac3df2bd..f2ad3342b 100644
--- a/java/com/android/dialer/app/res/values-be/strings.xml
+++ b/java/com/android/dialer/app/res/values-be/strings.xml
@@ -87,6 +87,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Звярнуцца да бягучага выкліку"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Дадаць выклік"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Уваходныя выклікі"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Уваход у рэжым групавога дзеяння"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Выхад з рэжыму групавога дзеяння"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Выбрана: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Выбар скасаваны: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Прайграць паведамленне галасавой пошты"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Прагледзець кантакт <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Выклікаць карыстальнiка <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -101,11 +105,13 @@
<string name="voicemail" msgid="8899540969000957954">"Галасавая пошта"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> с"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> хв <xliff:g id="SECONDS">%s</xliff:g> с"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Скасаваць рэжым пакетных дзеянняў"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"галасавая пошта"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"галасавая пошта"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Так"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Не"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Выдаліць вылучанае: <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Выбрана: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> у <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -118,7 +124,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Загрузка з SIM-карты..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Кантакты SIM-карты"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Праграмы для аперацый з кантактамі няма"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Галасавы пошук недаступны"</string>
<string name="call_not_available" msgid="7850148370757361155">"Немагчыма зрабіць выклік па тэлефоне, таму што праграма Тэлефон была адключана."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Пошук кантактаў"</string>
@@ -147,10 +152,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Новых прапушчаных выклікаў: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"У вас пакуль нікога няма на хуткім наборы"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Дадаць улюбёны"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"У вас пакуль няма ніякіх кантактаў"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Дадаць кантакт"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Дакраніцеся да відарыса, каб прагледзець усе нумары, або дакраніцеся і ўтрымлівайце, каб змяніць парадак"</string>
<string name="remove_contact" msgid="2353580570488923668">"Выдаліць"</string>
+ <string name="select_all" msgid="408601760696146245">"Выбраць усё"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Відэавыклік"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Адправiць паведамленне"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Падрабязнасці выкліку"</string>
@@ -217,11 +221,9 @@
<string name="block_list" msgid="4701585783411870782">"Заблакіраваныя нумары"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ужо заблакіраваны."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Уліковыя запісы для выклікаў"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Уключыць"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Задаць дазволы"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Каб уключыць хуткі набор, уключыце дазвол для Кантактаў."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Каб прагледзець свой журнал выклікаў, уключыце дазволы Тэлефона."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Каб бачыць свае кантакты, уключыце дазвол для Кантактаў."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Каб атрымаць доступ да галасавой пошты, уключыце дазвол для Тэлефона."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Каб шукаць свае кантакты, уключыце дазвол для Кантактаў."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Каб зрабіць выклік, уключыце дазвол для Тэлефона."</string>
diff --git a/java/com/android/dialer/app/res/values-bg/strings.xml b/java/com/android/dialer/app/res/values-bg/strings.xml
index 7bab71f3b..8083f4828 100644
--- a/java/com/android/dialer/app/res/values-bg/strings.xml
+++ b/java/com/android/dialer/app/res/values-bg/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Назад към текущото обаждане"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Добавяне на обаждане"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Вх. обаждания"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Влизате в режима на групови действия"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Излязохте от режима на групови действия"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Избрахте <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Премахнахте избора от <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Пускане на гласовата поща"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Преглед на контактa <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Обаждане на <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Гласова поща"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Анулиране на режима на групови действия"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"гласово съобщение"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"гласови съобщения"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Да"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Не"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Избрахте <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> – да се изтрие ли избраното?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Избрахте <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> в <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Зарежда се от SIM карта..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Контакти от SIM карта"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Няма налично приложение за контакти"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Гласовото търсене не е налице"</string>
<string name="call_not_available" msgid="7850148370757361155">"Не може да се осъществи телефонно обаждане, защото приложението Телефон е деактивирано."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Търсене в контактите"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> нови пропуснати обаждания"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Още нямате контакти за бързо набиране"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Добавяне на любим контакт"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Още нямате контакти"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Добавяне на контакт"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Докоснете изображението, за да видите всички номера, или го натиснете и задръжте за пренареждане"</string>
<string name="remove_contact" msgid="2353580570488923668">"Премахване"</string>
+ <string name="select_all" msgid="408601760696146245">"Избиране на всички"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Видеообаждане"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Изпращане на съобщение"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Подробности за обаждането"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Блокирани номера"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"Номер <xliff:g id="NUMBER">%1$s</xliff:g> вече е блокиран."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Профили за обаждане"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Включване"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Задаване на разрешенията"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"За да активирате бързото набиране, включете разрешението за Контакти."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"За да видите списъка с обажданията си, включете разрешението за Телефон."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"За да видите контактите си, включете разрешението за Контакти."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"За да осъществите достъп до гласовата си поща, включете разрешението за Телефон."</string>
<string name="permission_no_search" msgid="2424710404207193826">"За да търсите в контактите си, включете разрешенията за тях."</string>
<string name="permission_place_call" msgid="8686908130349369423">"За да извършите обаждане, включете разрешението за Телефон."</string>
diff --git a/java/com/android/dialer/app/res/values-bn/strings.xml b/java/com/android/dialer/app/res/values-bn/strings.xml
index 271247be3..4d2d7cc1e 100644
--- a/java/com/android/dialer/app/res/values-bn/strings.xml
+++ b/java/com/android/dialer/app/res/values-bn/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"প্রগতিতে থাকা কলে প্রত্যাবর্তন"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"কল যোগ করুন"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"ইনকামিং কলগুলি"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"বাল্ক অ্যাকশন মোডে প্রবেশ করা হচ্ছে"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"বাল্ক অ্যাকশন মোড ত্যাগ করুন"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> নির্বাচন করা হয়েছে"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> অনির্বাচন করা হয়েছে"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"ভয়েসমেল প্লে করুন"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> পরিচিতি দেখুন"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> কে কল করুন"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"ভয়েসমেল"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> সেকেন্ড"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> মিনিট <xliff:g id="SECONDS">%s</xliff:g> সেকেন্ড"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"ব্যাচ অ্যাকশন মোড বাতিল করুন"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ভয়েসমেল"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ভয়েসমেলগুলি"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"হ্যাঁ"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"না"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"নির্বাচিত <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> মুছে ফেলতে চান?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g>টি নির্বাচিত"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> তারিখে <xliff:g id="TIME">%2$s</xliff:g>\'টায়"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"সিম কার্ড থেকে লোড করা হচ্ছে…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"সিম কার্ডের পরিচিতিগুলি"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"কোনো পরিচিতি অ্যাপ্লিকেশান উপলব্ধ নয়"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"ভয়েস অনুসন্ধান অনুপলব্ধ"</string>
<string name="call_not_available" msgid="7850148370757361155">"কোনো ফোন কল করা যাবে না কারণ ফোন অ্যাপ্লিকেশানটি অক্ষম করা হয়েছে৷"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"পরিচিতিগুলি খুঁজুন"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g>টি নতুন মিসড কল"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"আপনার স্পীড ডায়ালে এখনও পর্যন্ত কেউ নেই"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"একটি পছন্দসই যোগ করুন"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"আপনার এখনও পর্যন্ত কোনো পরিচিতি নেই"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"একটি পরিচিতি যোগ করুন"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"সমস্ত নম্বর দেখতে ছবিতে স্পর্শ করুন বা রেকর্ড করতে স্পর্শ করে ধরে রাখুন"</string>
<string name="remove_contact" msgid="2353580570488923668">"সরান"</string>
+ <string name="select_all" msgid="408601760696146245">"সবগুলি নির্বাচন করুন"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"ভিডিও কল"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"একটি বার্তা পাঠান"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"কলের বিশদ বিবরণ"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"ব্লক করা নাম্বারগুলি"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ইতিমধ্যেই অববোধ করা রয়েছে৷"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"কলিং অ্যাকাউন্টগুলি"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"চালু করুন"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"অনুমতিগুলি সেট করুন"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"স্পীড ডায়াল সক্ষম করতে, পরিচিতিগুলির অনুমতি চালু করুন।"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"আপনার কল লগ দেখতে, ফোনের অনুমতি চালু করুন।"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"আপনার পরিচিতিগুলি দেখতে, পরিচিতিগুলির অনুমতি চালু করুন।"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"আপনার ভয়েসমেল অ্যাক্সেস করতে, ফোনের অনুমতি চালু করুন।"</string>
<string name="permission_no_search" msgid="2424710404207193826">"আপনার পরিচিতিগুলি অনুসন্ধান করতে, পরিচিতির অনুমতিগুলি চালু করুন।"</string>
<string name="permission_place_call" msgid="8686908130349369423">"একটি কল করতে, ফোনের অনুমতি চালু করুন।"</string>
diff --git a/java/com/android/dialer/app/res/values-bs/strings.xml b/java/com/android/dialer/app/res/values-bs/strings.xml
index 92c9c14e0..d8347723d 100644
--- a/java/com/android/dialer/app/res/values-bs/strings.xml
+++ b/java/com/android/dialer/app/res/values-bs/strings.xml
@@ -86,6 +86,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Povratak na poziv u toku"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Dodaj poziv"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Dolazni pozivi"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Ulazak u način rada za skupnu radnju"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Napuštanje načina rada za skupnu radnju"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Odabrano <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Poništen odabir <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Pokretanje govorne pošte"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Prikaži kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Pozovi kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -100,11 +104,13 @@
<string name="voicemail" msgid="8899540969000957954">"Govorna pošta"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Otkaži način rada za grupnu radnju"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"poruka govorne pošte"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"poruke govorne pošte"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Da"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Izbrisati izabranu/e <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Odabrano <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> u <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -117,7 +123,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Učitavanje sa SIM kartice…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakti sa SIM kartice"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nije dostupna nijedna aplikacija za kontakte"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Glasovna pretraga nije dostupna"</string>
<string name="call_not_available" msgid="7850148370757361155">"Nije moguće uputiti poziv jer je aplikacija Telefon onemogućena."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Traži kontakte"</string>
@@ -146,10 +151,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Broj novih propuštenih poziva: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Nemate nikog na brzom biranju"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Dodaj u favorite"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Još nemate nijedan kontakt"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Dodaj kontakt"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Dodirnite sliku da vidite sve brojeve ili dodirnite i držite da promijenite raspored."</string>
<string name="remove_contact" msgid="2353580570488923668">"Ukloni"</string>
+ <string name="select_all" msgid="408601760696146245">"Izaberi sve"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videopoziv"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Pošalji poruku"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detalji o pozivu"</string>
@@ -215,11 +219,9 @@
<string name="block_list" msgid="4701585783411870782">"Blokirani brojevi"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> je već blokiran."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Računi za pozivanje"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Uključi"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Postavi dozvole"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Da omogućite brzo biranje, uključite dozvolu za Kontakte."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Da vidite popis poziva, uključite dozvolu za Telefon."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Da vidite kontakte, uključite dozvolu za Kontakte."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Da pristupite govornoj pošti,uključite dozvolu za telefon."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Da pretražujete kontakte, uključite dozvole za Kontakte."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Da uputite poziv, uključite dozvolu za Telefon."</string>
diff --git a/java/com/android/dialer/app/res/values-ca/strings.xml b/java/com/android/dialer/app/res/values-ca/strings.xml
index fa04dd980..7b12e0dbd 100644
--- a/java/com/android/dialer/app/res/values-ca/strings.xml
+++ b/java/com/android/dialer/app/res/values-ca/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Torna a la trucada en curs"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Afegeix una trucada"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Trucades entrants"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"S\'està accedint al mode d\'acció massiva"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"S\'ha sortit del mode d\'acció massiva"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"S\'ha seleccionat <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"S\'ha desseleccionat <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Reprodueix el missatge de veu"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Visualitza el contacte <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Truca a <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Bústia de veu"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Cancel·la el mode d\'accions en lot"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"missatge de veu"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"missatges de veu"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sí"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Vols suprimir l\'element o elements seleccionats (<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>)?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> seleccionades"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> a les <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"S\'està carregant des de la targeta SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Contactes de la targeta SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"No hi ha cap contacte disponible."</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"La cerca per veu no està disponible."</string>
<string name="call_not_available" msgid="7850148370757361155">"No es pot fer una trucada telefònica perquè s\'ha desactivat l\'aplicació de telèfon."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Cerca als contactes"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> trucades perdudes noves"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Encara no tens cap contacte al marcatge ràpid"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Afegeix un preferit"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Encara no tens cap contacte"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Afegeix un contacte"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Toca la imatge per veure\'n tots els números o bé mantén-la premuda per canviar-ne l\'ordre"</string>
<string name="remove_contact" msgid="2353580570488923668">"Suprimeix"</string>
+ <string name="select_all" msgid="408601760696146245">"Selecciona-ho tot"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videotrucada"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Envia un missatge"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detalls de la trucada"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Números bloquejats"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ja està bloquejat."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Comptes de trucades"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Activa"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Defineix els permisos"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Activa el permís Contactes per activar el marcatge ràpid."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Activa el permís Telèfon per veure el teu registre de trucades."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Activa el permís Contactes per veure els teus contactes."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Activa el permís Telèfon per accedir a la bústia de veu."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Per cercar els teus contactes, activa els permisos de Contactes."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Activa el permís Telèfon per fer una trucada."</string>
diff --git a/java/com/android/dialer/app/res/values-cs/strings.xml b/java/com/android/dialer/app/res/values-cs/strings.xml
index 5a3e42913..bbcb35847 100644
--- a/java/com/android/dialer/app/res/values-cs/strings.xml
+++ b/java/com/android/dialer/app/res/values-cs/strings.xml
@@ -87,6 +87,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Návrat k probíhajícímu hovoru"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Přidat hovor"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Příchozí volání"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Vstupování do režimu hromadných akcí"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Opustili jste režim hromadných akcí"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Položka <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> je vybrána"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Položka <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> není vybrána"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Přehrát hlasovou schránku"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Zobrazit kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Volat kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -101,11 +105,13 @@
<string name="voicemail" msgid="8899540969000957954">"Hlasová schránka"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Zrušit režim hromadných akcí"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"vybranou hlasovou zprávu"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"vybrané hlasové zprávy"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ano"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Smazat <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Vybráno: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> v <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -118,7 +124,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Načítání ze SIM karty..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakty na SIM kartě"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Není k dispozici žádná aplikace pro práci s kontakty."</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Hlasové vyhledávání není k dispozici."</string>
<string name="call_not_available" msgid="7850148370757361155">"Telefonický hovor nelze uskutečnit, protože aplikace Telefon byla zakázána."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Vyhledat kontakty"</string>
@@ -147,10 +152,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Nové zmeškané hovory: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"V rychlém vytáčení zatím nemáte žádný kontakt."</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Přidat oblíbený kontakt"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Zatím nemáte žádné kontakty"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Přidat kontakt"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Klepnutím na obrázek zobrazíte všechna čísla. Podržením můžete změnit pořadí."</string>
<string name="remove_contact" msgid="2353580570488923668">"Odstranit"</string>
+ <string name="select_all" msgid="408601760696146245">"Vybrat všechny"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videohovor"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Odeslat zprávu"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Podrobnosti hovoru"</string>
@@ -217,11 +221,9 @@
<string name="block_list" msgid="4701585783411870782">"Blokovaná čísla"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"Číslo <xliff:g id="NUMBER">%1$s</xliff:g> je již blokováno."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Účty pro volání"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Zapnout"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Nastavit oprávnění"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Chcete-li povolit rychlé vytáčení, aktivujte oprávnění Kontakty."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Chcete-li zobrazit seznam hovorů, aktivujte oprávnění Telefon."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Chcete-li zobrazit kontakty, aktivujte oprávnění Kontakty."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Chcete-li přejít do hlasové schránky, aktivujte oprávnění Telefon."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Chcete-li vyhledat kontakty, zapněte oprávnění Kontakty."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Chcete-li uskutečnit hovor, aktivujte oprávnění Telefon."</string>
diff --git a/java/com/android/dialer/app/res/values-da/strings.xml b/java/com/android/dialer/app/res/values-da/strings.xml
index 42aa66378..31cf8e33d 100644
--- a/java/com/android/dialer/app/res/values-da/strings.xml
+++ b/java/com/android/dialer/app/res/values-da/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Vend tilbage til igangværende opkald"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Tilføj opkald"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Indgående opkald"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Massehandlingstilstanden startes"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Massehandlingstilstanden blev afsluttet"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Vælg <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Fravælg <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Afspil telefonsvarerbesked"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Vis kontaktpersonen <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Ring til <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Telefonsvarer"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Annuller massehandlingstilstand"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"talebesked"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"talebeskeder"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nej"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Vil du slette de valgte <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> er valgt"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Indlæser fra SIM-kort ..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakter på SIM-kort"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Der er ingen app til kontaktpersoner"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Talesøgning er ikke tilgængelig"</string>
<string name="call_not_available" msgid="7850148370757361155">"Det er ikke muligt at foretage et telefonopkald, fordi applikationen Telefon er deaktiveret."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Søg i kontakter"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> nye ubesvarede opkald"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Der er endnu ingen kontaktpersoner i Hurtigopkald"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Angiv en kontaktperson som foretrukken"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Du har endnu ikke nogen kontaktpersoner"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Tilføj en kontaktperson"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Tryk på billedet for at se alle numre, eller tryk og hold nede på billedet for at omarrangere"</string>
<string name="remove_contact" msgid="2353580570488923668">"Fjern"</string>
+ <string name="select_all" msgid="408601760696146245">"Vælg alt"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videoopkald"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Send en sms-besked"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Opkaldsinfo"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Blokerede telefonnumre"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> er allerede blokeret."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Opkaldskonti"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Aktivér"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Angiv tilladelser"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Slå tilladelsen Kontaktpersoner til for at aktivere hurtigopkald."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Slå tilladelsen Telefon til for at se din opkaldsliste."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Slå tilladelsen Kontaktpersoner til for at se dine kontaktpersoner."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Slå tilladelsen Telefon til for at få adgang til din telefonsvarer,"</string>
<string name="permission_no_search" msgid="2424710404207193826">"Hvis du vil søge i dine kontaktpersoner, skal du slå tilladelserne Kontaktpersoner til."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Slå tilladelsen Telefon til for at foretage et opkald."</string>
diff --git a/java/com/android/dialer/app/res/values-de/strings.xml b/java/com/android/dialer/app/res/values-de/strings.xml
index 5653e0f12..c1f644119 100644
--- a/java/com/android/dialer/app/res/values-de/strings.xml
+++ b/java/com/android/dialer/app/res/values-de/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Zurück zum aktuellen Anruf"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Anruf hinzufügen"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Eingehende Anrufe"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Es wird in den Modus für Bulk-Aktionen gewechselt"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Der Modus für Bulk-Aktionen wurde verlassen"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ausgewählt"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Auswahl für <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> aufgehoben"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Mailbox abhören"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Kontakt <xliff:g id="NAME">%1$s</xliff:g> anzeigen"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> anrufen"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Mailbox"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Modus für Batch-Aktionen abbrechen"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"Mailboxnachricht"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"Mailboxnachrichten"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nein"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Ausgewählte <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> löschen?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> ausgewählt"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> um <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Ladevorgang von SIM-Karte läuft..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakte auf SIM-Karte"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Keine Kontakte-App verfügbar"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Sprachsuche nicht verfügbar"</string>
<string name="call_not_available" msgid="7850148370757361155">"Es kann kein Anruf getätigt werden, da die App \"Telefon\" deaktiviert wurde."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"In Kontakten suchen"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> neue entgangene Anrufe"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Du hast für noch niemanden eine Kurzwahl festgelegt"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Favoriten hinzufügen"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Du hast noch keine Kontakte."</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Kontakt hinzufügen"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Tippe auf das Bild, um alle Nummern zu sehen, oder halte das Bild länger gedrückt, um sie neu anzuordnen"</string>
<string name="remove_contact" msgid="2353580570488923668">"Entfernen"</string>
+ <string name="select_all" msgid="408601760696146245">"Alle auswählen"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videoanruf"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"SMS senden"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Anrufdetails"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Blockierte Nummern"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ist bereits blockiert."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Anrufkonten"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Aktivieren"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Berechtigungen festlegen"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Aktiviere die Berechtigung \"Kontakte\", um die Kurzwahlfunktion zu verwenden."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Aktiviere die Berechtigung \"Telefon\", um dein Anrufprotokoll abzurufen."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Aktiviere die Berechtigung \"Kontakte\", um deine Kontakte abzurufen."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Aktiviere die Berechtigung \"Telefon\", um auf deine Mailbox zuzugreifen."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Aktiviere die Berechtigungen \"Kontakte\", um deine Kontakte zu suchen."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Aktiviere die Berechtigung \"Telefon\", um einen Anruf zu tätigen."</string>
diff --git a/java/com/android/dialer/app/res/values-el/strings.xml b/java/com/android/dialer/app/res/values-el/strings.xml
index 847f60a26..c4ba02d0f 100644
--- a/java/com/android/dialer/app/res/values-el/strings.xml
+++ b/java/com/android/dialer/app/res/values-el/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Επιστροφή στην κλήση που βρίσκεται σε εξέλιξη"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Προσθήκη κλήσης"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Εισερχόμενες κλήσεις"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Εισαγωγή στη λειτουργία μαζικών ενεργειών"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Αποχώρηση από τη λειτουργία μαζικών ενεργειών"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Έγινε επιλογή <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Καταργήθηκε η επιλογή <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Αναπαραγωγή μηνύματος αυτόματου τηλεφωνητή"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Προβολή επαφής <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Κλήση <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Αυτόματος τηλεφωνητής"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> δευτερόλεπτα"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> λεπτά <xliff:g id="SECONDS">%s</xliff:g> δευτερόλεπτα"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Ακύρωση λειτουργίας μαζικών ενεργειών"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"φωνητικού μηνύματος αυτόματου τηλεφωνητή"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"φωνητικών μηνυμάτων αυτόματου τηλεφωνητή"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ναι"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Όχι"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Διαγραφή επιλεγμ. <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>;"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Έχουν επιλεγεί <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> στις <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Φόρτωση από κάρτα SIM…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Επαφές στην κάρτα SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Δεν υπάρχουν διαθέσιμες εφαρμογές επαφών"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Η φωνητική αναζήτηση δεν είναι διαθέσιμη"</string>
<string name="call_not_available" msgid="7850148370757361155">"Δεν είναι δυνατή η πραγματοποίηση τηλεφωνικής κλήσης επειδή η εφαρμογή \"Τηλέφωνο\" έχει απενεργοποιηθεί."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Αναζήτηση επαφών"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> νέες αναπάντητες κλήσεις"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Δεν έχετε ορίσει ακόμη κάποια επαφή στις ταχείες κλήσεις"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Προσθέστε ένα αγαπημένο"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Δεν έχετε επαφές ακόμη"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Προσθήκη επαφής"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Αγγίξτε την εικόνα για να δείτε όλους τους αριθμούς ή αγγίξτε παρατεταμένα για αναδιάταξη"</string>
<string name="remove_contact" msgid="2353580570488923668">"Κατάργηση"</string>
+ <string name="select_all" msgid="408601760696146245">"Επιλογή όλων"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Βιντεοκλήση"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Αποστολή μηνύματος"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Λεπτομέρειες κλήσης"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Αποκλεισμένοι αριθμοί"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"Ο αριθμός <xliff:g id="NUMBER">%1$s</xliff:g> αποκλείστηκε ήδη."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Λογαριασμοί κλήσης"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Ενεργοποίηση"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Ορισμός αδειών"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Για να ενεργοποιήσετε την ταχεία κλήση, ενεργοποιήστε την άδεια επαφών."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Για να δείτε το αρχείο καταγραφής κλήσεών σας, ενεργοποιήστε την άδεια τηλεφώνου."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Για να δείτε τις επαφές σας, ενεργοποιήστε την άδεια επαφών."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Για να αποκτήσετε πρόσβαση στον τηλεφωνητή σας, ενεργοποιήστε την άδεια τηλεφώνου."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Για να κάνετε αναζήτηση στις επαφές σας, ενεργοποιήστε τις άδειες \"Επαφές\"."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Για να πραγματοποιήσετε μια κλήση, ενεργοποιήστε την άδεια τηλεφώνου."</string>
diff --git a/java/com/android/dialer/app/res/values-en-rAU/strings.xml b/java/com/android/dialer/app/res/values-en-rAU/strings.xml
index 28eea8b4d..cb7e912c7 100644
--- a/java/com/android/dialer/app/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rAU/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Return to call in progress"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Add call"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Incoming calls"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Entering bulk action mode"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Left bulk action mode"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Selected <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Unselected <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Play voicemail"</string>
<string name="description_view_contact" msgid="3940984937384372665">"View contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Call <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Voicemail"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Cancel batch actions mode"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"voicemail"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"voicemails"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Yes"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Delete selected <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> selected"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> at <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Loading from SIM card…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM card contacts"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"No contacts app available"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Voice search not available"</string>
<string name="call_not_available" msgid="7850148370757361155">"Cannot make a phone call because the Phone application has been disabled."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Search contacts"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"No one is on your speed dial yet"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Add a favourite"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"You don\'t have any contacts yet"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Add a contact"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Touch image to see all numbers, or touch &amp; hold to re-arrange"</string>
<string name="remove_contact" msgid="2353580570488923668">"Remove"</string>
+ <string name="select_all" msgid="408601760696146245">"Select all"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Video call"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Send a message"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Call details"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Blocked numbers"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> is already blocked."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Calling accounts"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Turn on"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Set permissions"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"To enable speed dial, turn on the Contacts permission."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"To see your call log, turn on the Phone permission."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"To see your contacts, turn on the Contacts permission."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"To access your voicemail, turn on the Phone permission."</string>
<string name="permission_no_search" msgid="2424710404207193826">"To search your contacts, turn on the Contacts permissions."</string>
<string name="permission_place_call" msgid="8686908130349369423">"To place a call, turn on the Phone permission."</string>
diff --git a/java/com/android/dialer/app/res/values-en-rGB/strings.xml b/java/com/android/dialer/app/res/values-en-rGB/strings.xml
index 28eea8b4d..cb7e912c7 100644
--- a/java/com/android/dialer/app/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rGB/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Return to call in progress"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Add call"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Incoming calls"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Entering bulk action mode"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Left bulk action mode"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Selected <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Unselected <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Play voicemail"</string>
<string name="description_view_contact" msgid="3940984937384372665">"View contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Call <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Voicemail"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Cancel batch actions mode"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"voicemail"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"voicemails"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Yes"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Delete selected <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> selected"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> at <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Loading from SIM card…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM card contacts"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"No contacts app available"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Voice search not available"</string>
<string name="call_not_available" msgid="7850148370757361155">"Cannot make a phone call because the Phone application has been disabled."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Search contacts"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"No one is on your speed dial yet"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Add a favourite"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"You don\'t have any contacts yet"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Add a contact"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Touch image to see all numbers, or touch &amp; hold to re-arrange"</string>
<string name="remove_contact" msgid="2353580570488923668">"Remove"</string>
+ <string name="select_all" msgid="408601760696146245">"Select all"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Video call"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Send a message"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Call details"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Blocked numbers"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> is already blocked."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Calling accounts"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Turn on"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Set permissions"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"To enable speed dial, turn on the Contacts permission."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"To see your call log, turn on the Phone permission."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"To see your contacts, turn on the Contacts permission."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"To access your voicemail, turn on the Phone permission."</string>
<string name="permission_no_search" msgid="2424710404207193826">"To search your contacts, turn on the Contacts permissions."</string>
<string name="permission_place_call" msgid="8686908130349369423">"To place a call, turn on the Phone permission."</string>
diff --git a/java/com/android/dialer/app/res/values-en-rIN/strings.xml b/java/com/android/dialer/app/res/values-en-rIN/strings.xml
index 28eea8b4d..cb7e912c7 100644
--- a/java/com/android/dialer/app/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rIN/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Return to call in progress"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Add call"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Incoming calls"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Entering bulk action mode"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Left bulk action mode"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Selected <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Unselected <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Play voicemail"</string>
<string name="description_view_contact" msgid="3940984937384372665">"View contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Call <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Voicemail"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Cancel batch actions mode"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"voicemail"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"voicemails"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Yes"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Delete selected <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> selected"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> at <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Loading from SIM card…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM card contacts"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"No contacts app available"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Voice search not available"</string>
<string name="call_not_available" msgid="7850148370757361155">"Cannot make a phone call because the Phone application has been disabled."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Search contacts"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"No one is on your speed dial yet"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Add a favourite"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"You don\'t have any contacts yet"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Add a contact"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Touch image to see all numbers, or touch &amp; hold to re-arrange"</string>
<string name="remove_contact" msgid="2353580570488923668">"Remove"</string>
+ <string name="select_all" msgid="408601760696146245">"Select all"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Video call"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Send a message"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Call details"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Blocked numbers"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> is already blocked."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Calling accounts"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Turn on"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Set permissions"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"To enable speed dial, turn on the Contacts permission."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"To see your call log, turn on the Phone permission."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"To see your contacts, turn on the Contacts permission."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"To access your voicemail, turn on the Phone permission."</string>
<string name="permission_no_search" msgid="2424710404207193826">"To search your contacts, turn on the Contacts permissions."</string>
<string name="permission_place_call" msgid="8686908130349369423">"To place a call, turn on the Phone permission."</string>
diff --git a/java/com/android/dialer/app/res/values-es-rUS/strings.xml b/java/com/android/dialer/app/res/values-es-rUS/strings.xml
index 9d80bc9e2..79d607fc7 100644
--- a/java/com/android/dialer/app/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/app/res/values-es-rUS/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Regresar a la llamada en curso"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Agregar llamada"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Llamadas entrantes"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Entrando al modo de acción masiva"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Saliendo del modo de acción masiva"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Se seleccionó <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Se anuló la selección de <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Reproducir mensaje de voz"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Ver contacto <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Llamar a <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Correo de voz"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Cancelar el modo de acción masiva"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"el mensaje de voz"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"los mensajes de voz"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sí"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"¿Deseas borrar <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> que seleccionaste?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> seleccionada(s)"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"El <xliff:g id="DATE">%1$s</xliff:g> a la hora <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Cargando desde tarjeta SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Contactos de tarjeta SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"No hay aplicaciones de contactos disponibles."</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Búsqueda por voz no disponible"</string>
<string name="call_not_available" msgid="7850148370757361155">"No se pueden realizar llamadas porque se inhabilitó la aplicación Teléfono."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Buscar contactos"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> llamadas perdidas nuevas"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Aún no tienes contactos en la opción de marcado rápido"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Agregar un favorito"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Aún no tienes contactos"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Agregar un contacto"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Toca la imagen para ver todos los números o mantenla presionada para reorganizar"</string>
<string name="remove_contact" msgid="2353580570488923668">"Eliminar"</string>
+ <string name="select_all" msgid="408601760696146245">"Seleccionar todo"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videollamada"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Enviar un mensaje"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detalles de la llamada"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Números bloqueados"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ya está bloqueado."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Cuentas telefónicas"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Activar"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Configurar permisos"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Para habilitar el marcado rápido, activa el permiso Contactos."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Para ver el registro de llamadas, activa el permiso Teléfono."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Para ver los contactos, activa el permiso Contactos."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Para acceder al buzón de voz, activa el permiso Teléfono."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Para buscar contactos, activa el permiso Contactos."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Para realizar una llamada, activa el permiso Teléfono."</string>
diff --git a/java/com/android/dialer/app/res/values-es/strings.xml b/java/com/android/dialer/app/res/values-es/strings.xml
index b7383d970..170edc8ca 100644
--- a/java/com/android/dialer/app/res/values-es/strings.xml
+++ b/java/com/android/dialer/app/res/values-es/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Volver a la llamada"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Añadir llamada"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Llamadas entrantes"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Entrando en el modo de acción en bloque"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Se ha salido del modo de acción en bloque"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> seleccionado"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Selección de <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> anulada"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Reproducir mensaje de voz"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Ver contacto <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Llamar a <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Buzón de voz"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min y <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Cancelar el modo de acciones en lote"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"mensaje de voz"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"mensajes de voz"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sí"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"¿Eliminar la selección de <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Se han seleccionado <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> a las <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Cargando desde tarjeta SIM…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Contactos de tarjeta SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"No hay aplicaciones de contactos disponibles"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"La búsqueda por voz no está disponible"</string>
<string name="call_not_available" msgid="7850148370757361155">"No se puede hacer llamadas porque se ha inhabilitado la aplicación Teléfono."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Buscar contactos"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> llamadas perdidas nuevas"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Aún no tienes contactos en la función de marcación rápida"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Añadir un favorito"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Aún no tienes contactos"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Añadir un contacto"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Tocar la imagen para ver todos los números o mantenerla pulsada para cambiar el orden"</string>
<string name="remove_contact" msgid="2353580570488923668">"Eliminar"</string>
+ <string name="select_all" msgid="408601760696146245">"Seleccionar todo"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videollamada"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Enviar un mensaje"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detalles de la llamada"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Números bloqueados"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ya está bloqueado."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Cuentas de llamadas"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Activar"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Establecer permisos"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Para habilitar la marcación rápida, activa el permiso la aplicación Contactos."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Para ver el registro de llamadas, activa el permiso de la aplicación Teléfono."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Para ver tus contactos, activa el permiso de la aplicación Contactos."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Para acceder al buzón de voz, activa el permiso de la aplicación Teléfono."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Para poder buscar tus contactos, activa los permisos de contactos."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Para hacer una llamada, activa el permiso de la aplicación Teléfono."</string>
diff --git a/java/com/android/dialer/app/res/values-et/strings.xml b/java/com/android/dialer/app/res/values-et/strings.xml
index d4e4faa59..e32b10403 100644
--- a/java/com/android/dialer/app/res/values-et/strings.xml
+++ b/java/com/android/dialer/app/res/values-et/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Tagasi käimasolevale kõnele"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Lisa kõne"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Sissetulevad kõned"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Sisenemine hulgitoimingute režiimi"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Lahkumine hulgitoimingute režiimist"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> on valitud"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> on valimata"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Esita kõnepostisõnum"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Kuva kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Helista kasutajale <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Kõnepost"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Mitme toimigu režiimi tühistamine"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"kõnepostisõnum"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"kõnepostisõnumid"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Jah"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ei"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Kas kustutada valitud kõnepostisõnumid <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> on valitud"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kell <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Laadimine SIM-kaardilt ..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM-kaardi kontaktid"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Kontaktide rakendus pole saadaval"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Häälotsing ei ole saadaval"</string>
<string name="call_not_available" msgid="7850148370757361155">"Helistada ei saa, sest telefonirakendus on keelatud."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Otsige kontakte"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> uus/uut vastamata kõne(t)"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Te pole veel kedagi kiirvalimisse lisanud"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Lisa lemmik"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Teil pole veel kontakte"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Lisa kontakt"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Puudutage kujutist kõigi numbrite nägemiseks või puudutage pikalt järjestuse muutmiseks"</string>
<string name="remove_contact" msgid="2353580570488923668">"Eemalda"</string>
+ <string name="select_all" msgid="408601760696146245">"Vali kõik"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videokõne"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Saada sõnum"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Kõne üksikasjad"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Blokeeritud numbrid"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> on juba blokeeritud."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Helistamiskontod"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Lülita sisse"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Määra load"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Kiirvalimise lubamiseks lülitage sisse kontaktiluba."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Kõnelogi vaatamiseks lülitage sisse telefoniluba."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Kontaktide vaatamiseks lülitage sisse kontaktiluba."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Kõnepostile juurdepääsemiseks lülitage sisse telefoniluba."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Kontaktide otsimiseks lülitage sisse kontaktiload."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Helistamiseks lülitage sisse telefoniluba."</string>
diff --git a/java/com/android/dialer/app/res/values-eu/strings.xml b/java/com/android/dialer/app/res/values-eu/strings.xml
index 95f4621a4..57ef67d88 100644
--- a/java/com/android/dialer/app/res/values-eu/strings.xml
+++ b/java/com/android/dialer/app/res/values-eu/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Itzuli abian den deira"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Gehitu deia"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Sarrerako deiak"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Ekintzak multzoka gauzatzeko modua aktibatzen"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Ekintzak multzoka gauzatzeko modua desaktibatu da"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> hautatu da"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> desautatu da"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Erreproduzitu erantzungailuko ahots-mezuak"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Ikusi <xliff:g id="NAME">%1$s</xliff:g> kontaktua"</string>
<string name="description_call" msgid="1532402285334775372">"Deitu <xliff:g id="NAME">%1$s</xliff:g> erabiltzaileari"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Erantzungailua"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Utzi bertan behera ekintzak multzoka gauzatzeko modua"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ahots-mezua"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ahots-mezuak"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Bai"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ez"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Hautatutako <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> ezabatu?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> hautatu dira"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> (<xliff:g id="TIME">%2$s</xliff:g>)"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM txarteletik kargatzen…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM txarteleko kontaktuak"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Ez dago kontaktuen aplikaziorik erabilgarri"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Ahozko bilaketa ez dago erabilgarri"</string>
<string name="call_not_available" msgid="7850148370757361155">"Ezin da telefono-deirik egin Telefonoa aplikazioa desgaitu egin delako."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Bilatu kontaktuetan"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> dei galdu berri"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Ez duzu inor markatze bizkorrean oraindik"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Gehitu gogokoak"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Ez duzu kontakturik oraindik"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Gehitu kontaktua"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Ukitu irudia zenbaki guztiak ikusteko, edo eduki ezazu sakatuta berrantolatzeko"</string>
<string name="remove_contact" msgid="2353580570488923668">"Kendu"</string>
+ <string name="select_all" msgid="408601760696146245">"Hautatu guztiak"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Bideo-deia"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Bidali mezua"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Deiaren xehetasunak"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Blokeatutako zenbakiak"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> blokeatuta dago dagoeneko."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Deiak egiteko kontuak"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Aktibatu"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Ezarri baimenak"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Markatze bizkorra gaitzeko, aktibatu Kontaktuak erabiltzeko baimena."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Deien erregistroa ikusteko, aktibatu Telefonoa erabiltzeko baimena."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Kontaktuak ikusteko, aktibatu Kontaktuak erabiltzeko baimena."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Erantzungailuan sartzeko, aktibatu Telefonoa erabiltzeko baimena."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Kontaktuak bilatzeko, aktibatu kontaktuak atzitzeko baimenak."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Deiak egiteko, aktibatu Telefonoa erabiltzeko baimena."</string>
diff --git a/java/com/android/dialer/app/res/values-fa/strings.xml b/java/com/android/dialer/app/res/values-fa/strings.xml
index 9c8c01b64..eadb0dcb7 100644
--- a/java/com/android/dialer/app/res/values-fa/strings.xml
+++ b/java/com/android/dialer/app/res/values-fa/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"برگشت به تماس درحال انجام"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"افزودن تماس"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"تماس‌های ورودی"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"درحال ورود به حالت اقدام انبوه"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"خروج از حالت اقدام انبوه"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> انتخاب شد"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> از حالت انتخاب خارج شد"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"پخش پست صوتی"</string>
<string name="description_view_contact" msgid="3940984937384372665">"مشاهده مخاطب <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"تماس با <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"پست صوتی"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ثانیه"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> دقیقه <xliff:g id="SECONDS">%s</xliff:g> ثانیه"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"لغو حالت اقدام‌ دسته‌ای"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"پست صوتی"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"پست‌های صوتی"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"بله"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"نه"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> انتخاب‌شده حذف شود؟"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> مورد انتخاب شد"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ساعت <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"در حال بارگیری سیم کارت..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"مخاطبین سیم کارت"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"هیچ برنامه مخاطبی در دسترس نیست"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"جستجوی گفتاری در دسترس نیست"</string>
<string name="call_not_available" msgid="7850148370757361155">"برقراری تماس تلفنی ممکن نیست، زیرا برنامه تلفن غیرفعال شده است."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"جستجوی مخاطبین"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> تماس‌ بی‌پاسخ جدید"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"هنوز کسی در فهرست شماره‌گیری سریع شما نیست"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"افزودن مورد دلخواه"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"هنوز هیچ مخاطبی ندارید"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"افزودن مخاطب"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"برای مشاهده همه شماره‌ها، تصویر را لمس کنید، یا برای ترتیب مجدد، لمس کنید و نگه‌دارید"</string>
<string name="remove_contact" msgid="2353580570488923668">"حذف"</string>
+ <string name="select_all" msgid="408601760696146245">"انتخاب همه"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"تماس ویدئویی"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"ارسال پیام"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"جزئیات تماس"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"شماره‌های مسدود‌شده"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> درحال‌حاضر مسدود شده است."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"حساب‌های تماس"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"روشن کردن"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"تنظیم مجوزها"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"برای فعال کردن شماره‌گیری سریع، مجوز «مخاطبین» را روشن کنید."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"برای دیدن گزارش تماستان، مجوز «تلفن» را روشن کنید."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"برای دیدن مخاطبینتان، مجوز «مخاطبین» را روشن کنید."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"برای دسترسی به پست صوتی‌تان، مجوز «تلفن» را روشن کنید."</string>
<string name="permission_no_search" msgid="2424710404207193826">"برای جستجوی مخاطبینتان، مجوزهای مخاطبین را روشن کنید."</string>
<string name="permission_place_call" msgid="8686908130349369423">"برای برقراری تماس، مجوز «تلفن» را روشن کنید."</string>
diff --git a/java/com/android/dialer/app/res/values-fi/strings.xml b/java/com/android/dialer/app/res/values-fi/strings.xml
index c5a103d48..951095908 100644
--- a/java/com/android/dialer/app/res/values-fi/strings.xml
+++ b/java/com/android/dialer/app/res/values-fi/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Palaa käynnissä olevaan puheluun"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Lisää puhelu"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Saapuvat puhelut"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Siirrytään joukkotoimintotilaan."</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Poistuttiin joukkotoimintotilasta."</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> valittiin."</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ei ole enää valittuna."</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Toista vastaajaviesti"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Näytä yhteystieto <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Soita: <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Vastaaja"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Peruuta joukkotoimintotila."</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"vastaajaviesti"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"vastaajaviestit"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Kyllä"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ei"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Poistetaanko <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> valittu"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> klo <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>.<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Ladataan SIM-kortilta…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM-kortin yhteystiedot"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Ei käytettävissä olevaa yhteystietosovellusta"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Puhehaku ei ole käytettävissä"</string>
<string name="call_not_available" msgid="7850148370757361155">"Puhelua ei voi soittaa, koska Puhelin-sovellus on poistettu käytöstä."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Hae yhteystiedoista"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> uutta vastaamatonta puhelua"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Pikavalinnassa ei ole vielä yhtään yhteystietoa."</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Lisää suosikki"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Sinulla ei ole yhteystietoja."</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Lisää yhteystieto"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Katso kaikki numerot koskettamalla kuvaa tai järjestele tietoja koskettamalla kuvaa pitkään."</string>
<string name="remove_contact" msgid="2353580570488923668">"Poista"</string>
+ <string name="select_all" msgid="408601760696146245">"Valitse kaikki"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videopuhelu"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Lähetä viesti"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Puhelun tiedot"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Estetyt numerot"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> on jo estetty."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Puhelutilit"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Ota käyttöön"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Määritä käyttöoikeudet"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Jos haluat käyttää pikavalintaa, ota Yhteystiedot-käyttöoikeus käyttöön."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Jos haluat katsella puhelulokiasi, ota Puhelin-käyttöoikeus käyttöön."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Jos haluat katsella yhteystietojasi, ota Yhteystiedot-käyttöoikeus käyttöön."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Jos haluat käyttää puhelinvastaajaa, ota Puhelin-käyttöoikeus käyttöön."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Jos haluat hakea kontaktejasi, ota käyttöön kontaktien käyttöoikeudet."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Jos haluat soittaa puheluja, ota Puhelin-käyttöoikeus käyttöön."</string>
diff --git a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
index d557d7442..6aa285c50 100644
--- a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Reprendre l\'appel en cours"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Autre appel"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Appels entrants"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Entrée du mode d\'action groupée en cours…"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Mode d\'action groupée quitté"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Sélection : <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Désélection : <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Écouter le message vocal"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Afficher le contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Appeler <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Messagerie vocale"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min et <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Annuler le mode d\'action par lots"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"message vocal"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"messages vocaux"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Oui"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Non"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Supprimer la sélection (<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>)?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> sélection(s)"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> à <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Chargement depuis la carte SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Contacts de carte SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Aucune application de gestion des contacts n\'est disponible"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Recherche vocale non disponible"</string>
<string name="call_not_available" msgid="7850148370757361155">"Impossible d\'effectuer un appel téléphonique, car l\'application Téléphone a été désactivée."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Rechercher des contacts"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> nouveaux appels manqués"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Aucun contact ne figure dans vos numéros de composition abrégée"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Ajouter un favori"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Vous n\'avez pas encore de contacts"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Ajouter un contact"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Touchez l\'image pour afficher tous les numéros, ou maintenez le doigt dessus pour les réorganiser"</string>
<string name="remove_contact" msgid="2353580570488923668">"Supprimer"</string>
+ <string name="select_all" msgid="408601760696146245">"Tout sélectionner"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Appel vidéo"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Envoyer un message"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Détails de l\'appel"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Numéros bloqués"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"Le numéro <xliff:g id="NUMBER">%1$s</xliff:g> est déjà bloqué."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Comptes d\'appel"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Activer"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Définir les autorisations"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Pour activer la composition abrégée, activez l\'autorisation Contacts."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Pour consulter vos contacts, activez l\'autorisation Contacts."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Pour accéder à votre messagerie vocale, activez l\'autorisation Téléphone."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Pour rechercher vos contacts et les lieux à proximité, activez les autorisations Contacts."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Pour faire un appel, activez l\'autorisation Téléphone."</string>
diff --git a/java/com/android/dialer/app/res/values-fr/strings.xml b/java/com/android/dialer/app/res/values-fr/strings.xml
index d8a59395b..f539d2e55 100644
--- a/java/com/android/dialer/app/res/values-fr/strings.xml
+++ b/java/com/android/dialer/app/res/values-fr/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Reprendre l\'appel en cours"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Autre appel"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Appels entrants"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Activation du mode d\'action groupée"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Désactivation du mode d\'action groupée"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> sélectionné"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> désélectionné"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Écouter le message vocal"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Afficher le contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Appeler <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Messagerie vocale"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> secondes"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min et <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Annuler le mode d\'actions groupées"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"message vocal"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"messages vocaux"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Oui"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Non"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Supprimer les messages vocaux sélectionnés (<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>) ?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> sélectionnés"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> à <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Chargement depuis la carte SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Contacts de carte SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Aucune application de gestion des contacts n\'est disponible."</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Recherche vocale non disponible"</string>
<string name="call_not_available" msgid="7850148370757361155">"Impossible d\'effectuer un appel téléphonique, car l\'application Téléphone a été désactivée."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Rech. des contacts"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Nouveaux appels manqués : <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Aucun contact pour la numérotation abrégée"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Ajouter un favori"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Vous n\'avez pas encore de contacts."</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Ajouter un contact"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"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="remove_contact" msgid="2353580570488923668">"Supprimer"</string>
+ <string name="select_all" msgid="408601760696146245">"Tout sélectionner"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Appel vidéo"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Envoyer un message"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Informations sur l\'appel"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Numéros bloqués"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"Le numéro \"<xliff:g id="NUMBER">%1$s</xliff:g>\" est déjà bloqué."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Comptes téléphoniques"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Activer"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Définir les autorisations"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Pour activer la numérotation abrégée, activez l\'autorisation Contacts."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Pour consulter vos contacts, activez l\'autorisation Contacts."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Pour accéder à votre messagerie vocale, activez l\'autorisation Téléphone."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Pour rechercher vos contacts, activez l\'autorisation Contacts."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Pour passer un appel, activez l\'autorisation Téléphone."</string>
diff --git a/java/com/android/dialer/app/res/values-gl/strings.xml b/java/com/android/dialer/app/res/values-gl/strings.xml
index 33b55a740..ca31c5e47 100644
--- a/java/com/android/dialer/app/res/values-gl/strings.xml
+++ b/java/com/android/dialer/app/res/values-gl/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Volver á chamada en curso"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Engadir chamada"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Chamadas entrantes"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Entrando no modo de acción masiva"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Saíu do modo de acción masiva"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Seleccionouse: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Anulouse a selección de: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Reproducir correo de voz"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Ver contacto <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Chamar a <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Correo de voz"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Cancela o modo de accións en lote"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"correo de voz"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"correos de voz"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Si"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Non"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Queres eliminar a selección (<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>)?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Cantidade seleccionada: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ás <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Cargando da tarxeta SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Contactos da tarxeta SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Non hai aplicacións de contactos dispoñibles"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Busca por voz non dispoñible"</string>
<string name="call_not_available" msgid="7850148370757361155">"Non se pode facer unha chamada telefónica porque se desactivou a aplicación de teléfono."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Buscar contactos"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> chamadas perdidas novas"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Aínda non tes ningún contacto na marcación directa"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Engade un favorito para a marcación directa"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Aínda non tes contactos"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Engade un contacto"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Toca a imaxe para ver todos os números ou mantena premida para reordenalos"</string>
<string name="remove_contact" msgid="2353580570488923668">"Eliminar"</string>
+ <string name="select_all" msgid="408601760696146245">"Seleccionar todos"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videochamada"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Enviar unha mensaxe"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detalles da chamada"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Números bloqueados"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"O <xliff:g id="NUMBER">%1$s</xliff:g> xa está bloqueado."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Contas de chamadas"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Activar"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Establecer permisos"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Para activar a marcación rápida, activa o permiso de Contactos."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Para ver o teu rexistro de chamadas, activa o permiso de Teléfono."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Para ver os teus contactos, activa o permiso de Contactos."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Para acceder ao correo de voz, activa o permiso de Teléfono."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Para buscar os teus contactos, activa os permisos de Contactos."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Para facer unha chamada, activa o permiso de Teléfono."</string>
diff --git a/java/com/android/dialer/app/res/values-gu/strings.xml b/java/com/android/dialer/app/res/values-gu/strings.xml
index 1df18269e..fbe4d0aaa 100644
--- a/java/com/android/dialer/app/res/values-gu/strings.xml
+++ b/java/com/android/dialer/app/res/values-gu/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"કૉલ પર પાછા આવવું પ્રગતિ પર છે"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"કૉલ ઉમેરો"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"ઇનકમિંગ કૉલ્સ"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"બલ્ક ક્રિયા મોડમાં દાખલ થઈ રહ્યાં છે"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"બલ્ક ક્રિયા મોડ છોડી દીધો"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> પસંદ કર્યો"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> પસંદગીમાંથી દૂર કર્યો"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"વૉઇસમેઇલ ચલાવો"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> સંપર્ક જુઓ"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> ને કૉલ કરો"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"વૉઇસમેઇલ"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> સેકંડ"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> મિ <xliff:g id="SECONDS">%s</xliff:g> સે"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"બૅચ ક્રિયા મોડ રદ કરો"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"વૉઇસમેઇલ"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"વૉઇસમેઇલ"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"હા"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"નહીં"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"પસંદ કરેલ <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>ને કાઢી નાખીએ?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> પસંદ કરી"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> નાં રોજ <xliff:g id="TIME">%2$s</xliff:g> વાગ્યે"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM કાર્ડમાંથી લોડ કરી રહ્યું છે…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM કાર્ડ સંપર્કો"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"કોઈ સંપર્કો ઍપ્લિકેશન ઉપલબ્ધ નથી"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"વૉઇસ શોધ ઉપલબ્ધ નથી"</string>
<string name="call_not_available" msgid="7850148370757361155">"ફોન કૉલ કરી શકાતો નથી કારણ કે ફોન ઍપ્લિકેશન અક્ષમ કરવામાં આવી છે."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"સંપર્કો શોધો"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> નવા છૂટેલા કૉલ્સ"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"તમારા ઝડપી ડાયલ પર હજી સુધી કોઇ નથી"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"એક મનપસંદ ઉમેરો"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"તમે હજી સુધી કોઇપણ સંપર્કો ધરાવતાં નથી"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"સંપર્ક ઉમેરો"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"બધા નંબર્સ જોવા માટે છબી ટચ કરો અથવા પુનઃક્રમાંકિત કરવા માટે ટચ કરો અને પકડી રાખો"</string>
<string name="remove_contact" msgid="2353580570488923668">"દૂર કરો"</string>
+ <string name="select_all" msgid="408601760696146245">"તમામ પસંદ કરો"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"વિડિઓ કૉલ"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"એક સંદેશ મોકલો"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"કૉલની વિગતો"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"અવરોધિત નંબરો"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ને પહેલેથી અવરોધિત કરવામાં આવ્યો છે."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"કૉલિંગ એકાઉન્ટ્સ"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"ચાલુ કરો"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"પરવાનગીઓ સેટ કરો"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"ઝડપી ડાયલ સક્ષમ કરવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"તમારો કૉલ લૉગ જોવા માટે, ફોન પરવાનગી ચાલુ કરો."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"તમારા સંપર્કો જોવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"તમારી વૉઇસમેઇલને ઍક્સેસ કરવા માટે, ફોન પરવાનગી ચાલુ કરો."</string>
<string name="permission_no_search" msgid="2424710404207193826">"તમારા સંપર્કો શોધવા માટે, સંપર્કોની પરવાનગીઓ ચાલુ કરો."</string>
<string name="permission_place_call" msgid="8686908130349369423">"કૉલ કરવા માટે, ફોન પરવાનગી ચાલુ કરો."</string>
diff --git a/java/com/android/dialer/app/res/values-hi/strings.xml b/java/com/android/dialer/app/res/values-hi/strings.xml
index 84d2d974a..c998e4402 100644
--- a/java/com/android/dialer/app/res/values-hi/strings.xml
+++ b/java/com/android/dialer/app/res/values-hi/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"कॉल पर लौटना प्रगति पर है"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"कॉल जोड़ें"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"इनकमिंग कॉल"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"बल्क कार्रवाई मोड में प्रवेश कर रहे हैं"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"बल्क कार्रवाई मोड छोड़ा"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> को चुना गया"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> को नहीं चुना गया"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"ध्‍वनिमेल चलाएं"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> संपर्क देखें"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> को कॉल करें"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"वॉयस मेल"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> सेकंड"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> मि. <xliff:g id="SECONDS">%s</xliff:g> से."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"बैच कार्रवाई मोड रद्द करें"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"वॉयसमेल"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"वॉयसमेल"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"हां"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"नहीं"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"क्या चुने गए <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> हटाना चाहते हैं?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> चयनित"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> को <xliff:g id="TIME">%2$s</xliff:g> बजे"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"सिम कार्ड से लोड हो रहा है…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"सिम कार्ड के संपर्क"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"कोई भी संपर्क ऐप उपलब्‍ध नहीं है"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"बोलकर खोजना उपलब्‍ध नहीं है"</string>
<string name="call_not_available" msgid="7850148370757361155">"फ़ोन कॉल नहीं किया जा सकता क्योंकि फ़ोन ऐप्लिकेशन अक्षम कर दिया गया है."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"संपर्क खोजें"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> छूटे हुए नए कॉल"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"आपके स्‍पीड डायल पर अभी तक कोई भी नहीं है"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"कोई पसंदीदा जोड़ें"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"आपके पास अभी कोई भी संपर्क नहीं है"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"कोई संपर्क जोड़ें"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"सभी नंबर देखने के लिए चित्र को स्‍पर्श करें या पुन: क्रमित करने के लिए स्‍पर्श करके रखें"</string>
<string name="remove_contact" msgid="2353580570488923668">"निकालें"</string>
+ <string name="select_all" msgid="408601760696146245">"सभी चुनें"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"वीडियो कॉल"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"संदेश भेजें"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"कॉल विवरण"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"अवरोधित नंबर"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> पहले से अवरोधित है."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"कॉलिंग खाते"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"चालू करें"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"अनुमतियां सेट करें"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"स्पीड डायल सक्षम करने के लिए, संपर्क अनुमति चालू करें."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"अपना कॉल लॉग देखने के लिए, फ़ोन अनुमति चालू करें."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"अपने संपर्क देखने के लिए, संपर्क अनुमति चालू करें."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"अपना वॉइसमेल ऐक्सेस करने के लिए, फ़ोन अनुमति चालू करें."</string>
<string name="permission_no_search" msgid="2424710404207193826">"अपने संपर्कों की खोज करने के लिए, संपर्क अनुमतियों को चालू करें."</string>
<string name="permission_place_call" msgid="8686908130349369423">"कॉल करने के लिए, फ़ोन अनुमति चालू करें."</string>
diff --git a/java/com/android/dialer/app/res/values-hr/strings.xml b/java/com/android/dialer/app/res/values-hr/strings.xml
index cd3535372..5261cfb0d 100644
--- a/java/com/android/dialer/app/res/values-hr/strings.xml
+++ b/java/com/android/dialer/app/res/values-hr/strings.xml
@@ -86,6 +86,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Natrag na poziv u tijeku"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Dodaj poziv"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Dolazni pozivi"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Ulazak u način skupne radnje"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Napuštanje načina skupne radnje"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Odabrano: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Poništen odabir: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Reprodukcija govorne pošte"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Prikaz kontakta <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Nazovi <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -100,11 +104,13 @@
<string name="voicemail" msgid="8899540969000957954">"Govorna pošta"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Otkaži način skupnih radnji"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"poruka govorne pošte"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"poruke govorne pošte"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Da"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Želite li izbrisati odabranu poruku/e govorne pošte <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Odabrano: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> u <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>.<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -117,7 +123,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Učitavanje sa SIM kartice..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakti SIM kartice"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nije dostupna nijedna aplikacija za kontakte"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Glasovno pretraživanje nije dostupno"</string>
<string name="call_not_available" msgid="7850148370757361155">"Telefoniranje nije moguće jer je aplikacija Telefon onemogućena."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Pretraži kontakte"</string>
@@ -146,10 +151,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Broj novih propuštenih poziva: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Još nemate nikog na brzom biranju"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Dodaj omiljeni kontakt"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Još nemate nijedan kontakt"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Dodajte kontakt"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Dodirnite sliku da biste vidjeli sve brojeve ili dodirnite i zadržite da biste promijenili redoslijed"</string>
<string name="remove_contact" msgid="2353580570488923668">"Ukloni"</string>
+ <string name="select_all" msgid="408601760696146245">"Odaberi sve"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videopoziv"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Pošalji poruku"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Pojedinosti poziva"</string>
@@ -215,11 +219,9 @@
<string name="block_list" msgid="4701585783411870782">"Blokirani brojevi"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"Broj <xliff:g id="NUMBER">%1$s</xliff:g> već je blokiran."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Pozivanje računa"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Uključi"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Postavi dopuštenja"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Da biste omogućili brzo biranje, uključite dopuštenje za kontakte."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Da biste vidjeli zapisnik poziva, uključite dopuštenje za telefon."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Da biste vidjeli svoje kontakte, uključite dopuštenje za kontakte."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Da biste pristupili govornoj pošti, uključite dopuštenje za telefon."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Da biste pretraživali kontakte, uključite dopuštenja za kontakte."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Da biste nazvali nekog, uključite dopuštenje za telefon."</string>
diff --git a/java/com/android/dialer/app/res/values-hu/strings.xml b/java/com/android/dialer/app/res/values-hu/strings.xml
index 2e64d745d..452f0da47 100644
--- a/java/com/android/dialer/app/res/values-hu/strings.xml
+++ b/java/com/android/dialer/app/res/values-hu/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Vissza a folyamatban lévő híváshoz"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Hívás hozzáadása"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Bejövő hívások"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Belépés tömeges műveleti módba"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Kilépett a tömeges műveleti módból"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Kijelölés: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Kijelölés megszüntetve: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Hangposta lejátszása"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> névjegyének megtekintése"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> hívása"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Hangposta"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> másodperc"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> perc <xliff:g id="SECONDS">%s</xliff:g> másodperc"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Köteges művelet mód leállítva"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"hangpostaüzenetet"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"hangpostaüzeneteket"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Igen"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nem"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Törli a kiválasztott <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> kiválasztva"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Betöltés a SIM kártyáról..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Névjegyek a SIM kártyán"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nincs elérhető névjegyek alkalmazás"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"A hangalapú keresés nem érhető el"</string>
<string name="call_not_available" msgid="7850148370757361155">"Nem lehet telefonhívást kezdeményezni, mert a Telefon alkalmazást letiltották."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Keresés a névjegyek között"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> új nem fogadott hívás"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Még semelyik telefonszám sincs gyorshívón"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Kedvenc hozzáadása"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Még nem rendelkezik egyetlen névjeggyel sem"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Névjegy hozzáadása"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Koppintson a képre az összes szám megjelenítéséhez, vagy tartsa nyomva az átrendezéshez"</string>
<string name="remove_contact" msgid="2353580570488923668">"Eltávolítás"</string>
+ <string name="select_all" msgid="408601760696146245">"Az összes kijelölése"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videohívás"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Üzenet küldése"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Hívás adatai"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Letiltott számok"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"A következő szám már le van tiltva: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Telefonos fiókok"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Engedélyezés"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Engedélyek beállítása"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Gyorshívás engedélyezéséhez kapcsolja be a Névjegyek engedélyt."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"A hívásnapló megtekintéséhez kapcsolja be a Telefon engedélyt."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"A névjegyek megtekintéséhez kapcsolja be a Névjegyek engedélyt."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"A hangposta eléréséhez kapcsolja be a Telefon engedélyt."</string>
<string name="permission_no_search" msgid="2424710404207193826">"A névjegyek kereséséhez adja meg a Névjegyek engedélyeket."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Hívásindításhoz kapcsolja be a Telefon engedélyt."</string>
diff --git a/java/com/android/dialer/app/res/values-hy/strings.xml b/java/com/android/dialer/app/res/values-hy/strings.xml
index 6f3931c9f..97a84f2fe 100644
--- a/java/com/android/dialer/app/res/values-hy/strings.xml
+++ b/java/com/android/dialer/app/res/values-hy/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Վերադառնալ ընթացիկ զանգին"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Ավելացնել զանգ"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Մուտքային զանգեր"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Մուտք զանգվածային գործողությունների ռեժին"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Դուք դուրս եկաք զանգվածային գործողությունների ռեժիմից"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Ընտրվեց՝ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Ապընտրվեց՝ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Նվագարկել ձայնային փոստը"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Դիտել <xliff:g id="NAME">%1$s</xliff:g> կոնտակտը"</string>
<string name="description_call" msgid="1532402285334775372">"Զանգել <xliff:g id="NAME">%1$s</xliff:g>-ին"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Ձայնային փոստ"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> վրկ"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> րոպե <xliff:g id="SECONDS">%s</xliff:g> վայրկյան"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Չեղարկել փաթեթային գործողությունների ռեժիմը"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ձայնային հաղորդագրություն"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ձայնային հաղորդագրություններ"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Այո"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ոչ"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Ջնջե՞լ նշված <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>ը"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Ընտրվել է՝ <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>-ին, ժամը <xliff:g id="TIME">%2$s</xliff:g>-ին"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM քարտը բեռնվում է..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM քարտի կոնտակտները"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Կոնտակտների հավելված չկա"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Ձայնային որոնումը հասանելի չէ"</string>
<string name="call_not_available" msgid="7850148370757361155">"Հնարավոր չէ զանգահարել, քանի որ Հեռախոս հավելվածն անջատված է:"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Կոնտակտների որոնում"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> նոր բաց թողնված զանգ"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Արագ համարահավաքման ցանկը դատարկ է"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Ավելացնել կոնտակտ"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Դեռ կոնտակտներ չունեք"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Ավելացնել կոնտակտ"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Բոլոր համարները տեսնելու համար հպեք պատկերին: Վերադասավորելու համար հպեք և պահեք:"</string>
<string name="remove_contact" msgid="2353580570488923668">"Հեռացնել"</string>
+ <string name="select_all" msgid="408601760696146245">"Ընտրել բոլորը"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Տեսազանգ"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Ուղարկել հաղորդագրություն"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Զանգի մանրամասները"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Արգելափակված համարներ"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> համարն արդեն արգելափակված է:"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Հաշիվներ զանգերի համար"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Միացնել"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Թույլտվությունների սահմանում"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Արագ համարահավաքը թույլատրելու համար միացրեք Կոնտակտների թույլտվությունը:"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Ձեր զանգերի մատյանը տեսնելու համար միացրեք Հեռախոսի թույլտվությունը:"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Ձեր կոնտակտները տեսնելու համար միացրեք Կոնտակտների թույլտվությունը:"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Ձայնային փոստն օգտագործելու համար միացրեք Հեռախոսի թույլտվությունը:"</string>
<string name="permission_no_search" msgid="2424710404207193826">"Կոնտակտները որոնելու համար միացրեք Կոնտակտների թույլտվությունները:"</string>
<string name="permission_place_call" msgid="8686908130349369423">"Զանգ կատարելու համար միացրեք Հեռախոսի թույլտվությունը:"</string>
diff --git a/java/com/android/dialer/app/res/values-in/strings.xml b/java/com/android/dialer/app/res/values-in/strings.xml
index c0de9b3b4..f309f927b 100644
--- a/java/com/android/dialer/app/res/values-in/strings.xml
+++ b/java/com/android/dialer/app/res/values-in/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Kembali ke panggilan sedang berlangsung"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Tambahkan panggilan"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Panggilan masuk"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Masuk ke mode tindakan massal"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Keluar dari mode tindakan massal"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> dipilih"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> tidak dipilih"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Putar pesan suara"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Lihat kontak <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Telepon <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Kotak Pesan"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> dtk"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> mnt <xliff:g id="SECONDS">%s</xliff:g> dtk"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Membatalkan mode tindakan kelompok"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"pesan suara"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"pesan suara"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ya"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Tidak"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Hapus <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> yang dipilih?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> dipilih"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> pukul <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>.<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Memuat dari kartu SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontak pada kartu SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Aplikasi kontak tidak tersedia"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Penelusuran suara tidak tersedia"</string>
<string name="call_not_available" msgid="7850148370757361155">"Tidak dapat melakukan panggilan telepon karena aplikasi Telepon telah dinonaktifkan."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Telusuri kontak"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> panggilan tidak terjawab baru"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Daftar panggilan cepat masih kosong"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Tambahkan favorit"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Anda belum memiliki kontak"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Tambahkan kontak"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Sentuh foto untuk melihat semua nomor atau sentuh &amp; tahan untuk menyusun ulang"</string>
<string name="remove_contact" msgid="2353580570488923668">"Hapus"</string>
+ <string name="select_all" msgid="408601760696146245">"Pilih semua"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Panggilan video"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Kirim pesan"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detail panggilan"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Nomor yang diblokir"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> sudah diblokir."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Akun panggilan"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Aktifkan"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Setel izin"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Untuk mengaktifkan panggilan cepat, aktifkan izin Kontak."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Untuk melihat log panggilan, aktifkan izin Telepon."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Untuk melihat kontak, aktifkan izin Kontak."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Untuk mengakses pesan suara, aktifkan izin Telepon."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Untuk menelusuri kontak, aktifkan izin Kontak."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Untuk melakukan panggilan, aktifkan izin Telepon."</string>
diff --git a/java/com/android/dialer/app/res/values-is/strings.xml b/java/com/android/dialer/app/res/values-is/strings.xml
index fdd635668..b291eae84 100644
--- a/java/com/android/dialer/app/res/values-is/strings.xml
+++ b/java/com/android/dialer/app/res/values-is/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Fara aftur í símtal í gangi"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Bæta við símtali"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Móttekin símtöl"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Opnar fjöldaaðgerðastillingu"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Fjöldaaðgerðastillingu lokað"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Valdi <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Fjarlægði val á <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Spila talhólfsskilaboð"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Skoða tengiliðinn <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Hringja í <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Talhólf"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> mín. og <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Hætta við runuaðgerðastillingu"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"talhólfsskilaboð"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"talhólfsskilaboð"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Já"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nei"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Eyða völdum <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> valin"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Hleður af SIM-kortinu…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Tengiliðir á SIM-korti"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Ekkert tengiliðaforrit í boði"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Raddleit er ekki í boði"</string>
<string name="call_not_available" msgid="7850148370757361155">"Ekki er hægt að hringja vegna þess að forritið Sími hefur verið gert óvirkt."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Leita í tengiliðum"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> ný ósvöruð símtöl"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Þú ert ekki með neinn í hraðvali enn sem komið er"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Bæta uppáhaldi við"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Þú ert ekki með neina tengiliði enn sem komið er"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Bæta tengilið við"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Snertu myndina til að sjá öll númer eða haltu henni inni til að endurraða"</string>
<string name="remove_contact" msgid="2353580570488923668">"Fjarlægja"</string>
+ <string name="select_all" msgid="408601760696146245">"Velja allt"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Myndsímtal"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Senda skilaboð"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Símtalsupplýsingar"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Númer á bannlista"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> er nú þegar á bannlista."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Símtalareikningar"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Kveikja"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Stilla heimildir"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Kveiktu á tengiliðaheimildinni til að gera hraðval virkt."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Kveiktu á heimild símaforritsins til að sjá símtalaskrána þína."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Kveiktu á tengiliðaheimildinni til að sjá tengiliðina þína."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Kveiktu á heimild símaforritsins til að fá aðgang að talhólfinu þínu."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Kveiktu á heimildunum fyrir tengiliði til að leita að tengiliðum."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Kveiktu á heimild símaforritsins til að hringja símtal."</string>
diff --git a/java/com/android/dialer/app/res/values-it/strings.xml b/java/com/android/dialer/app/res/values-it/strings.xml
index 9bd8cd359..711ab26ee 100644
--- a/java/com/android/dialer/app/res/values-it/strings.xml
+++ b/java/com/android/dialer/app/res/values-it/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Torna alla chiamata in corso"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Aggiungi chiamata"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Chiamate in arrivo"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Attivazione della modalità di azione collettiva"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Disttivazione della modalità di azione collettiva"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> selezionato"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> deselezionato"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Riproduci messaggio vocale"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Visualizza <xliff:g id="NAME">%1$s</xliff:g> contatto"</string>
<string name="description_call" msgid="1532402285334775372">"Chiama <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Segreteria"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> secondi"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Annulla modalità di azione collettiva"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"messaggio vocale"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"messaggi vocali"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sì"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Eliminare i <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> selezionati?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> selezionate"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> alle ore <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Caricamento da SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Contatti SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nessuna app di contatti disponibile"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Ricerca vocale non disponibile"</string>
<string name="call_not_available" msgid="7850148370757361155">"Impossibile effettuare una telefonata perché l\'applicazione Telefono è stata disattivata."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Cerca contatti"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> nuove chiamate perse"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Nessun preferito disponibile nella Composizione rapida"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Aggiungi un preferito"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Nessun contatto disponibile"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Aggiungi un contatto"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Tocca l\'immagine per visualizzare tutti i numeri oppure tieni premuto per cambiare l\'ordine"</string>
<string name="remove_contact" msgid="2353580570488923668">"Rimuovi"</string>
+ <string name="select_all" msgid="408601760696146245">"Seleziona tutto"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videochiamata"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Invia un messaggio"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Dettagli chiamata"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Numeri bloccati"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> è già bloccato."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Account di chiamata"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Attiva"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Imposta autorizzazioni"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Per attivare la composizione rapida, attiva l\'autorizzazione Contatti."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Per accedere al registro chiamate, attiva l\'autorizzazione sul telefono."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Per accedere ai tuoi contatti, attiva l\'autorizzazione Contatti."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Per accedere alla segreteria, attiva l\'autorizzazione sul telefono."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Per cercare nei tuoi contatti, attiva le autorizzazioni Contatti."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Per fare una chiamata, attiva l\'autorizzazione sul telefono."</string>
diff --git a/java/com/android/dialer/app/res/values-iw/strings.xml b/java/com/android/dialer/app/res/values-iw/strings.xml
index bb115e2f8..bd2a05aec 100644
--- a/java/com/android/dialer/app/res/values-iw/strings.xml
+++ b/java/com/android/dialer/app/res/values-iw/strings.xml
@@ -87,6 +87,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"חזור לשיחה פעילה"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"הוסף שיחה"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"שיחות נכנסות"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"עברת למצב של ביצוע פעולות בכמות גדולה"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"עזבת את המצב של ביצוע פעולות בכמות גדולה"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"בחרת את <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"ביטלת את הבחירה של <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"הפעל דואר קולי"</string>
<string name="description_view_contact" msgid="3940984937384372665">"הצג את איש הקשר <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"התקשר אל <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -101,11 +105,13 @@
<string name="voicemail" msgid="8899540969000957954">"דואר קולי"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> שניות"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> דק\' <xliff:g id="SECONDS">%s</xliff:g> שנ\'"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"ביטול המצב של ביצוע פעולות בכמות גדולה"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ההודעה הקולית"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ההודעות הקוליות"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"כן"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"לא"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"האם למחוק את <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> שבחרת?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> נבחרו"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ב-<xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -118,7 +124,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"‏טוען מכרטיס SIM…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"‏אנשי קשר בכרטיס SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"אין אפליקציה זמינה עבור אנשי קשר"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"חיפוש קולי אינו זמין"</string>
<string name="call_not_available" msgid="7850148370757361155">"לא ניתן לבצע שיחת טלפון מפני שאפליקציית הטלפון הושבתה."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"חפש אנשי קשר"</string>
@@ -147,10 +152,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> שיחות חדשות שלא נענו"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"עדיין לא הוגדר חיוג מהיר לאף איש קשר"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"הוסף פריט מועדף"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"עדיין אין לך אנשי קשר"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"הוסף איש קשר"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"גע בתמונה כדי להציג את כל המספרים או גע והחזק כדי לשנות את הסדר"</string>
<string name="remove_contact" msgid="2353580570488923668">"הסר"</string>
+ <string name="select_all" msgid="408601760696146245">"בחירת הכל"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"שיחת וידאו"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"שלח הודעה"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"פרטי שיחה"</string>
@@ -217,11 +221,9 @@
<string name="block_list" msgid="4701585783411870782">"מספרים חסומים"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> כבר חסום."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"חשבונות לביצוע שיחות"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"הפעל"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"הגדר הרשאות"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"כדי להפעיל חיוג מהיר, הפעל את ההרשאה \'אנשי קשר\'."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"כדי לראות את יומן השיחות, הפעל את ההרשאה \'טלפון\'."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"כדי להציג את אנשי הקשר, הפעל את ההרשאה \'אנשי קשר\'."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"כדי לגשת לדואר הקולי, הפעל את ההרשאה \'טלפון\'."</string>
<string name="permission_no_search" msgid="2424710404207193826">"כדי לחפש באנשי הקשר, הפעל את ההרשאה \'אנשי קשר\'."</string>
<string name="permission_place_call" msgid="8686908130349369423">"כדי להתקשר, הפעל את ההרשאה \'טלפון\'."</string>
diff --git a/java/com/android/dialer/app/res/values-ja/strings.xml b/java/com/android/dialer/app/res/values-ja/strings.xml
index 63b15cbed..9ba40fb8f 100644
--- a/java/com/android/dialer/app/res/values-ja/strings.xml
+++ b/java/com/android/dialer/app/res/values-ja/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"通話に戻る"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"別の通話を追加"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"着信"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"一括操作モードを開始します"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"一括操作モードを終了しました"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> を選択しました"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> を選択解除しました"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"ボイスメールを再生"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g>の連絡先を表示"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g>に発信"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"ボイスメール"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g>秒"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g>分<xliff:g id="SECONDS">%s</xliff:g>秒"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"一括操作モードをキャンセルします"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ボイスメール"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ボイスメール"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"はい"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"いいえ"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"選択した<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>を削除しますか?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> 件選択済み"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>、<xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g> 分 <xliff:g id="SECONDS">%2$02d</xliff:g> 秒"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIMカードから読み取り中..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIMカードの連絡先"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"連絡先アプリがありません"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"音声検索を利用できません"</string>
<string name="call_not_available" msgid="7850148370757361155">"電話アプリが無効になっているため発信できません。"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"連絡先を検索"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g>件の不在着信"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"クイックアクセスに登録済みの連絡先はまだありません"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"お気に入りを追加"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"連絡先はまだありません"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"連絡先を追加"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"画像をタップするとすべての番号が表示され、押し続けると番号を並べ替えることができます"</string>
<string name="remove_contact" msgid="2353580570488923668">"削除"</string>
+ <string name="select_all" msgid="408601760696146245">"すべて選択"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"ビデオハングアウト"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"メッセージを送信"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"通話の詳細"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"ブロックした番号"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g>は既にブロックしています。"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"通話アカウント"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"ONにする"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"権限を設定"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"クイックアクセスを有効にするには、連絡先権限をONにしてください。"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"通話履歴を表示するには、電話権限をONにしてください。"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"連絡先を表示するには、連絡先権限をONにしてください。"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"ボイスメールにアクセスするには、電話権限をONにしてください。"</string>
<string name="permission_no_search" msgid="2424710404207193826">"連絡先を検索するには、連絡先権限をONにしてください。"</string>
<string name="permission_place_call" msgid="8686908130349369423">"電話をかけるには、電話権限をONにしてください。"</string>
diff --git a/java/com/android/dialer/app/res/values-ka/strings.xml b/java/com/android/dialer/app/res/values-ka/strings.xml
index ae89505b5..dbb48f4f5 100644
--- a/java/com/android/dialer/app/res/values-ka/strings.xml
+++ b/java/com/android/dialer/app/res/values-ka/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"მიმდინარე ზარზე დაბრუნება"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"ზარის დამატება"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"შემომავალი ზარები"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"მიმდინარეობს ერთიანი ქმედების რეჟიმში შესვლა"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"ერთიანი ქმედების რეჟიმიდან გამოხვედით"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"არჩეულია <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>-ის არჩევა გაუქმდა"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"ხმოვანი ფოსტის ჩართვა"</string>
<string name="description_view_contact" msgid="3940984937384372665">"კონტაქტის <xliff:g id="NAME">%1$s</xliff:g> ნახვა"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g>-თან დარეკვა"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"ხმოვანი ფოსტა"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> წმ"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> მინ <xliff:g id="SECONDS">%s</xliff:g> წამ"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"ერთიანი ქმედების რეჟიმის გაუქმება"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ხმოვანი ფოსტა"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ხმოვანი ფოსტა"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"დიახ"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"არა"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"გსურთ, წაშალოთ არჩეული <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"არჩეულია <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"იტვირთება SIM ბარათიდან…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM ბარათის კონტაქტები"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"კონტაქტების აპლიკაცია არ არის ხელმისაწვდომი"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"ხმოვანი ძიება არ არის ხელმისაწვდომი"</string>
<string name="call_not_available" msgid="7850148370757361155">"სატელეფონო ზარის განხორციელება ვერ ხერხდება, ვინაიდან ტელეფონის აპლიკაცია გაუქმებულია."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"კონტაქტებში ძიება"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> ახალი გაცდენილი ზარი"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"სწრაფი აკრეფისთვის რჩეულები ჯერ არ გყავთ"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"რჩეული კონტაქტის დამატება"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"კონტაქტები ჯერ არ გაქვთ"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"კონტაქტის დამატება"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"ყველა ნომრის სანახავად შეეხეთ სურათს ან შეეხეთ და დააყოვნეთ მიმდევრობის შესაცვლელად"</string>
<string name="remove_contact" msgid="2353580570488923668">"ამოშლა"</string>
+ <string name="select_all" msgid="408601760696146245">"ყველას არჩევა"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"ვიდეო ზარი"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"შეტყობინების გაგზავნა"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"ზარის მონაცემები"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"დაბლოკილი ნომრები"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> უკვე დაბლოკილია."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"ანგარიშების გამოძახება"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"ჩართვა"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"ნებართვების დაყენება"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"სწრაფი აკრეფის გასააქტიურებლად, ჩართეთ კონტაქტების ნებართვა."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"ზარების ჟურნალის სანახავად, ჩართეთ ტელეფონის ნებართვა."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"კონტაქტების სანახავად, ჩართეთ კონტაქტების ნებართვა."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"ხმოვან ფოსტაზე წვდომისთვის, ჩართეთ ტელეფონის ნებართვა."</string>
<string name="permission_no_search" msgid="2424710404207193826">"თქვენი კონტაქტების მოსაძებნად ჩართეთ კონტაქტების ნებართვები."</string>
<string name="permission_place_call" msgid="8686908130349369423">"ზარის განსახორციელებლად, ჩართეთ ტელეფონის ნებართვა."</string>
diff --git a/java/com/android/dialer/app/res/values-kk/strings.xml b/java/com/android/dialer/app/res/values-kk/strings.xml
index ba4238692..8dfe531a1 100644
--- a/java/com/android/dialer/app/res/values-kk/strings.xml
+++ b/java/com/android/dialer/app/res/values-kk/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Қосылып тұрған қоңырауға оралу"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Қоңырау қосу"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Келген қоңыраулар"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Жаппай әрекет режиміне өту"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Жаппай әрекет режиімінен шығу"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> таңдалды"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> таңдауы алынды"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Дауыс-хабарды ойнату"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> контактісін көру"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> нөміріне қоңырау шалу"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Дауыстық пошта"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Топтама әрекеттер режимін жабу"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"дауыстық хабар"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"дауыстық хабарлар"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Иә"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Жоқ"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Таңдалған <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> хабарларын жою қажет пе?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> таңдалды"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID (ұялы жабдық анықтағыш)"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM картасынан жүктеу…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM картасының контактілері"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Контактілер қолданбасы қол жетімді емес"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Дауыс арқылы іздеу қол жетімді емес"</string>
<string name="call_not_available" msgid="7850148370757361155">"Телефон қоңырауын шалу мүмкін емес, өйткені «Телефон» қолданбасы өшірілген."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Контактілерді іздеу"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> жаңа қабылданбаған қоңыраулар"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Жылдам теруде әлі ешкім жоқ"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Таңдаулыны қосу"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Әлі ешқандай контактілер жоқ"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Контакт қосу"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Барлық нөмірлерді көру үшін кескінді түртіңіз, ал ретін өзгерту үшін түртіп, ұстап тұрыңыз"</string>
<string name="remove_contact" msgid="2353580570488923668">"Алып тастау"</string>
+ <string name="select_all" msgid="408601760696146245">"Барлығын таңдау"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Бейне қоңырау"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Хабар жіберу"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Қоңырау мәліметтері"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Бөгелген нөмірлер"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> бөгеліп қойылған."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Қоңырау шалу есептік жазбалары"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Қосу"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Рұқсаттар орнату"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Жылдам теруді қосу үшін \"Контактілер\" рұқсатын қосыңыз."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Қоңыраулар журналы көру үшін \"Телефон\" рұқсатын қосыңыз."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Контактілерді көру үшін \"Контактілер\" рұқсатын қосыңыз."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Дауыс поштасына қатынасу үшін \"Телефон\" рұқсатын қосыңыз."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Контактілерді іздеу үшін \"Контактілер\" рұқсаттарын қосыңыз."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Қоңырауды шалу үшін \"Телефон\" рұқсатын қосыңыз."</string>
diff --git a/java/com/android/dialer/app/res/values-km/strings.xml b/java/com/android/dialer/app/res/values-km/strings.xml
index bdc91cf0b..ed0db05e2 100644
--- a/java/com/android/dialer/app/res/values-km/strings.xml
+++ b/java/com/android/dialer/app/res/values-km/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"កំពុង​ត្រឡប់​ទៅកាន់​ការ​ហៅ"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"បន្ថែម​ការ​ហៅ"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"ការ​ហៅ​ចូល"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"ចូល​មុខងារ​សកម្មភាព​ច្រើន"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"បាន​ចាកចេញ​ពី​មុខងារ​សកម្មភាព​ច្រើន"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"បាន​ជ្រើសរើស <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"បាន​ដក​ការជ្រើសរើស <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"ចាក់​សារ​ជា​សំឡេង"</string>
<string name="description_view_contact" msgid="3940984937384372665">"មើល​ទំ​នាក់ទំនង <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"ហៅ <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"សារ​ជា​សំឡេង"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> វិនាទី"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> នាទី <xliff:g id="SECONDS">%s</xliff:g> វិនាទី"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"បោះបង់​មុខងារ​សកម្មភាព​ជា​ក្រុម"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"សារ​ជា​សំឡេង"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"សារ​ជា​សំឡេង"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"បាទ/ចាស"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ទេ"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"លុប <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> ដែល​បាន​ជ្រើសរើស?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"បាន​ជ្រើសរើស <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> នៅម៉ោង <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"កំពុង​ផ្ទុក​ពី​ស៊ីម​កាត..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"ទំនាក់ទំនង​នៅ​ក្នុង​ស៊ីម​កាត"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"មិនមានកម្មវិធីទំនាក់ទំនងទេ"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"ការស្វែងរកជាសម្លេងមិនមានទេ"</string>
<string name="call_not_available" msgid="7850148370757361155">"មិន​អាច​ហៅ​បាន​ទេ​ ព្រោះ​កម្មវិធី​ទូរស័ព្ទ​ត្រូវ​បាន​បិទ។"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"រក​ទំនាក់ទំនង"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"ខកខាន​ទទួល​ថ្មី <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"គ្មាននរណាម្នាក់នៅក្នុងការហៅរហ័សរបស់អ្នកនៅឡើយទេ"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"បញ្ចូលសំណព្វ"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"អ្នកមិនទាន់មានទំនាក់ទំនងនៅឡើយទេ"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"បន្ថែមទំនាក់ទំនង"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"ប៉ះរូបភាពដើម្បីមើលលេខទាំងអស់ ឬប៉ះ &amp; សង្កត់ឲ្យជាប់ដើម្បីតម្រៀបឡើងវិញ"</string>
<string name="remove_contact" msgid="2353580570488923668">"លុបចេញ"</string>
+ <string name="select_all" msgid="408601760696146245">"ជ្រើសរើស​​ទាំងអស់"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"ហៅជាវីដេអូ"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"ផ្ញើសារ"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"ព័ត៌មានលម្អិតអំពីការហៅ"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"លេខបានរារាំង"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ត្រូវបានទប់ស្កាត់រួចហើយ"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"គណនីហៅទូរសព្ទ"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"បើក"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"កំណត់សិទ្ធិអនុញ្ញាត"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"ដើម្បីបើកដំណើរការហៅរហ័ស សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីទំនាក់ទំនង។"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"ដើម្បីមើលកំណត់ហេតុហៅទូរស័ព្ទរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"ដើម្បីមើលទំនាក់ទំនងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីទំនាក់ទំនង។"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"ដើម្បីចូលដំណើរការសារជាសំឡេងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។"</string>
<string name="permission_no_search" msgid="2424710404207193826">"ដើម្បីស្វែងរកទំនាក់ទំនងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតទំនាក់ទំនង។"</string>
<string name="permission_place_call" msgid="8686908130349369423">"ដើម្បីធ្វើការហៅទូរស័ព្ទ សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។"</string>
diff --git a/java/com/android/dialer/app/res/values-kn/strings.xml b/java/com/android/dialer/app/res/values-kn/strings.xml
index dae544d3f..932bc4035 100644
--- a/java/com/android/dialer/app/res/values-kn/strings.xml
+++ b/java/com/android/dialer/app/res/values-kn/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"ಪ್ರತ್ಯತ್ತರ ಕರೆಯು ಪ್ರಗತಿಯಲ್ಲಿದೆ"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"ಕರೆಯನ್ನು ಸೇರಿಸಿ"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"ಒಳಬರುವ ಕರೆಗಳು"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"ದೊಡ್ಡ ಪ್ರಮಾಣದ ಕ್ರಿಯೆಯ ಮೋಡ್‌ಗೆ ಪ್ರವೇಶಿಸಲಾಗುತ್ತಿದೆ"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"ದೊಡ್ಡ ಪ್ರಮಾಣದ ಕ್ರಿಯೆಯ ಮೋಡ್ ತೊರೆಯಲಾಗಿದೆ"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ಆಯ್ಕೆಯನ್ನು ರದ್ದುಮಾಡಲಾಗಿದೆ"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"ಧ್ವನಿಮೇಲ್‌ ಪ್ಲೇ ಮಾಡಿ"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> ಸಂಪರ್ಕ ವೀಕ್ಷಿಸಿ"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> ಕರೆ ಮಾಡಿ"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"ಧ್ವನಿಮೇಲ್"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ಸೆಕೆಂ"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> ನಿಮಿ <xliff:g id="SECONDS">%s</xliff:g> ಸೆಕೆಂ"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"ಬ್ಯಾಚ್ ಕ್ರಿಯೆಗಳ ಮೋಡ್ ಅನ್ನು ರದ್ದುಮಾಡಿ"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ಧ್ವನಿಮೇಲ್"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ಧ್ವನಿಮೇಲ್‌ಗಳು"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ಹೌದು"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ಇಲ್ಲ"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"ಆಯ್ಕೆ ಮಾಡಲಾದ <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> ಅನ್ನು ಅಳಿಸುವುದೇ?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ರಂದು <xliff:g id="TIME">%2$s</xliff:g> ಗಂಟೆಗೆ"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"ಸಿಮ್‌ ಕಾರ್ಡ್‌ನಿಂದ ಲೋಡ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"ಸಿಮ್‌ ಕಾರ್ಡ್‌ ಸಂಪರ್ಕಗಳು"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"ಯಾವುದೇ ಸಂಪರ್ಕಗಳ ಅಪ್ಲಿಕೇಶನ್‌ ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"ಧ್ವನಿ ಹುಡುಕಾಟ ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="call_not_available" msgid="7850148370757361155">"ಫೋನ್ ಅಪ್ಲಿಕೇಶನ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿರುವುದರಿಂದ ಫೋನ್ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಿ"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> ಹೊಸ ಮಿಸ್ಡ್‌ ಕರೆಗಳು"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"ನಿಮ್ಮ ತ್ವರಿತ ಡಯಲ್‌ನಲ್ಲಿ ಇದುವರೆಗೆ ಯಾರೂ ಇಲ್ಲ"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"ಮೆಚ್ಚಿನದನ್ನು ಸೇರಿಸಿ"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"ನೀವು ಇನ್ನೂ ಯಾವುದೇ ಸಂಪರ್ಕಗಳನ್ನು ಹೊಂದಿಲ್ಲ"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"ಸಂಪರ್ಕ ಸೇರಿಸಿ"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"ಎಲ್ಲಾ ಸಂಖ್ಯೆಗಳನ್ನು ನೋಡಲು ಚಿತ್ರವನ್ನು ಸ್ಪರ್ಶಿಸಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಲು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹೋಲ್ಡ್‌‌ ಮಾಡಿ"</string>
<string name="remove_contact" msgid="2353580570488923668">"ತೆಗೆದುಹಾಕು"</string>
+ <string name="select_all" msgid="408601760696146245">"ಎಲ್ಲವನ್ನೂ ಆಯ್ಕೆ ಮಾಡಿ"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"ವೀಡಿಯೊ ಕರೆ"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"ಸಂದೇಶ ಕಳುಹಿಸಿ"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"ಕರೆಯ ವಿವರಗಳು"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"ನಿರ್ಬಂಧಿಸಲಾದ ಸಂಖ್ಯೆಗಳು"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ಈಗಾಗಲೇ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"ಆನ್‌ ಮಾಡಿ"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"ಅನುಮತಿಗಳನ್ನು ಹೊಂದಿಸು"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"ವೇಗ ಡಯಲ್ ಸಕ್ರಿಯಗೊಳಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"ನಿಮ್ಮ ಕರೆಯ ಲಾಗ್ ಅನ್ನು ವೀಕ್ಷಿಸಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಪ್ರವೇಶಿಸಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
<string name="permission_no_search" msgid="2424710404207193826">"ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಗಳನ್ನು ಆನ್ ಮಾಡಿ."</string>
<string name="permission_place_call" msgid="8686908130349369423">"ಕರೆ ಮಾಡಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
diff --git a/java/com/android/dialer/app/res/values-ko/strings.xml b/java/com/android/dialer/app/res/values-ko/strings.xml
index 1850b6ce1..de6b93c01 100644
--- a/java/com/android/dialer/app/res/values-ko/strings.xml
+++ b/java/com/android/dialer/app/res/values-ko/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"진행 중인 통화로 돌아가기"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"통화 추가"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"수신전화"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"일괄 작업 모드 시작 중"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"일괄 작업 모드 종료됨"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> 선택됨"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> 선택 취소됨"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"음성사서함 재생"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g>님의 연락처 보기"</string>
<string name="description_call" msgid="1532402285334775372">"전화걸기: <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"음성사서함"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g>초"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g>분 <xliff:g id="SECONDS">%s</xliff:g>초"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"일괄 작업 모드 취소"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"음성사서함"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"음성사서함"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"예"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"아니요"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"선택한 <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>을(를) 삭제하시겠습니까?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g>개 선택됨"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>분 <xliff:g id="SECONDS">%2$02d</xliff:g>초"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM 카드에서 로딩 중..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM 카드 주소록"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"사용할 수 있는 주소록 앱이 없습니다."</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"음성검색이 지원되지 않습니다."</string>
<string name="call_not_available" msgid="7850148370757361155">"전화 애플리케이션을 사용 중지했으므로 전화를 걸 수 없습니다."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"주소록 검색"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"새로운 부재중 전화 <xliff:g id="NUMBER">%s</xliff:g>건"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"아직 단축 다이얼이 설정된 연락처가 없습니다."</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"단축 다이얼 추가"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"아직 연락처가 없습니다."</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"연락처 추가"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"이미지를 터치하여 모든 번호를 확인하거나 길게 터치하여 재정렬합니다."</string>
<string name="remove_contact" msgid="2353580570488923668">"삭제"</string>
+ <string name="select_all" msgid="408601760696146245">"모두 선택"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"화상 통화"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"메시지 보내기"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"통화 세부정보"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"차단된 번호"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g>번은 이미 차단되었습니다."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"통화 계정"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"사용"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"권한 설정"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"단축번호를 사용하려면 주소록 권한을 사용하도록 설정하세요."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"통화 기록을 보려면 전화 권한을 사용하도록 설정하세요."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"주소록을 보려면 주소록 권한을 사용하도록 설정하세요."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"음성사서함에 액세스하려면 전화 권한을 사용하도록 설정하세요."</string>
<string name="permission_no_search" msgid="2424710404207193826">"주소록을 검색하려면 주소록 권한을 사용하도록 설정하세요."</string>
<string name="permission_place_call" msgid="8686908130349369423">"전화를 걸려면 전화 권한을 사용하도록 설정하세요."</string>
diff --git a/java/com/android/dialer/app/res/values-ky/strings.xml b/java/com/android/dialer/app/res/values-ky/strings.xml
index 9e80e29ee..ac9a617ed 100644
--- a/java/com/android/dialer/app/res/values-ky/strings.xml
+++ b/java/com/android/dialer/app/res/values-ky/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Токтотулган чалууга кайтуу"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Чалууну кошуу"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Кирүүчү чалуулар"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Жапырт аракет режимине кирдиңиз"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Жапырт аракет режиминен чыктыңыз"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> объект тандалды"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> объект тандоодон чыгарылды"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Үнкатты угуу"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Байланышты кароо <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Чалуу <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Үн почтасы"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мүн. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Жапырт аракет режимин жокко чыгаруу"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"үн почтасы"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"үн почталары"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ооба"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Жок"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Тандалган <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> жок кылынсынбы?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> тандалды"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> саат <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM картадан жүктөлүүдө..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM картадагы байланыштар"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Жеткиликтүү байланыштар колдонмосу жок"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Үн менен издөө жеткиликтүү эмес"</string>
<string name="call_not_available" msgid="7850148370757361155">"Телефон колдонмосу өчүрүлгөндүктөн, чалуу мүмкүн болбой жатат."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Байланыштарды издөө"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> жаңы өткөзүлгөн чалуу"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Азырынча тез териле турган номерлер жок"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Сүйүктүү номер кошуу"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Азырынча бир дагы байланышыңыз жок"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Байланыш кошуу"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Бардык номерлерди көрүү үчүн, сүрөткө тийип коюңуз же коё бербей басып туруп иретин өзгөртсөңүз болот."</string>
<string name="remove_contact" msgid="2353580570488923668">"Алып салуу"</string>
+ <string name="select_all" msgid="408601760696146245">"Баарын тандоо"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Видео чалуу"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Билдирүү жөнөтүү"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Чалуунун чоо-жайы"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Бөгөттөлгөн номерлер"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> мурунтан эле бөгөттөлгөн."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Чалуу каттоо эсептери"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Күйгүзүү"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Уруксаттарды берүү"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Тез терүүнү иштетүү үчүн, \"Байланыштар\" колдонмосуна уруксат бериңиз."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Чалуулар таржымалыңызды көрүү үчүн, \"Телефон\" колдонмосуна уруксат бериңиз."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Байланыштар тизмесин көрүү үчүн, \"Байланыштар\" колдонмосуна уруксат бериңиз."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Үн почтаңызга кирүү үчүн, \"Телефон\" колдонмосуна уруксат бериңиз."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Байланыштарыңызды издөө үчүн, Байланыштарга уруксатты күйгүзүңүз."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Чалуу үчүн, \"Телефон\" колдонмосуна уруксат бериңиз."</string>
diff --git a/java/com/android/dialer/app/res/values-lo/strings.xml b/java/com/android/dialer/app/res/values-lo/strings.xml
index 8284e8de0..2a829730f 100644
--- a/java/com/android/dialer/app/res/values-lo/strings.xml
+++ b/java/com/android/dialer/app/res/values-lo/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"ກັບໄປການໂທທີ່ກຳລັງດຳເນີນຢູ່"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"ເພີ່ມການໂທ"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"ສາຍໂທເຂົ້າ"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"ກຳລັງເຂົ້າໂໝດຄຳສັ່ງຈຳນວນຫຼາຍ"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"ອອກຈາກໂໝດຄຳສັ່ງຈຳນວນຫຼາຍແລ້ວ"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"ເລືອກ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ແລ້ວ"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"ເຊົາເລືອກ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ແລ້ວ"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"ເປີດຂໍ້ຄວາມສຽງ"</string>
<string name="description_view_contact" msgid="3940984937384372665">"ເບິ່ງລາຍຊື່ຜູ່ຕິດຕໍ່ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"ໂທຫາ <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"ຂໍ້ຄວາມສຽງ"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ວິນາທີ"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> ນ​ທ <xliff:g id="SECONDS">%s</xliff:g> ວິ"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"ຍົກເລີກໂໝດຄຳສັ່ງເປັນຊຸດ"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ຂໍ້ຄວາມສຽງ"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ຂໍ້ຄວາມສຽງ"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ແມ່ນແລ້ວ"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ບໍ່"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"ລຶບ <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> ທີ່ເລືອກອອກໄປບໍ?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"ເລືອກ <xliff:g id="NUMBER">%1$s</xliff:g> ລາຍການແລ້ວ"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ເວລາ <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"ກຳລັງໂຫລດຈາກ SIM card..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"ລາຍຊື່ຜູ່ຕິດຕໍ່ SIM card"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"ບໍ່​ມີ​ແອັບຯ​ລາຍ​ຊື່​ຕິດ​ຕໍ່​ຢູ່"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"ບໍ່​ມີ​ການ​ຊອກ​ຫາ​ດ້ວຍ​ສຽງ​ຢູ່"</string>
<string name="call_not_available" msgid="7850148370757361155">"ບໍ່​ສາ​ມາດ​ໂທ​ໄດ​້​ເນື່ອງ​ຈາກ​ແອັບ​ພ​ລິ​ເຄ​ຊັນ​ໂທ​ລະ​ສັບ​ຖືກ​ປິດ​ການ​ນຳ​ໃຊ້​ໄວ້."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"ຊອກຫາລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> ສາຍທີ່ບໍ່ໄດ້ຮັບໃໝ່"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"ບໍ່​ມີ​ຜູ້​ໃດ​ຢູ່​ໃນ​ການ​ໂທ​ດ່ວນ​ຂອງ​ທ່ານ​ເທື່ອ"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"ເພີ່ມ​ລາຍ​ການ​ທີ່​ມັກ"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"ທ່ານ​ບໍ່​ມີ​ລາຍ​ຊື່​ໃດ​ເທື່ອ"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"ເພີ່ມ​ລາຍ​ຊື່"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"ແຕະຮູບເພື່ອເບິ່ງເບີໂທທັງໝົດ ຫຼື ແຕະຄ້າງໄວ້ເພື່ອຈັດລຳດັບໃໝ່"</string>
<string name="remove_contact" msgid="2353580570488923668">"​ລຶບ​ອອກ"</string>
+ <string name="select_all" msgid="408601760696146245">"ເລືອກທັງໝົດ"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"​ໂທ​ດ້ວຍ​ວິ​ດີ​ໂອ"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"ສົ່ງຂໍ້ຄວາມ"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"ລາຍລະອຽດ​ການໂທ"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"ເບີໂທລະສັບທີ່ບລັອກໄວ້"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ຖືກ​ບ​ລັອກ​ແລ້ວ."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"ບັນ​ຊີ​ໂທ"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"ເປີດ​"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"ຕັ້ງ​ການ​ອະ​ນຸ​ຍາດ"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"ເພື່ອ​ເປີດ​ໃຊ້​ງານ​ການໂທດ່ວນ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ລາຍ​ຊື່."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"ເພື່ອ​ເບິ່ງ​ບັນ​ທຶກ​ການ​ໂທ​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"ເພື່ອ​ເບິ່ງ​ລາຍ​ຊື່​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ລາຍ​ຊື່"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"ເພື່ອ​ເຂົ້າ​ຫາ​ຂໍ້​ຄວາມ​ສຽງ​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ."</string>
<string name="permission_no_search" msgid="2424710404207193826">"ເພື່ອຄົ້ນຫາລາຍາຊື່ຂອງທ່ານ, ໃຫ້ເປີດການອະນຸຍາດລາຍຊື່."</string>
<string name="permission_place_call" msgid="8686908130349369423">"ເພື່ອ​ເຮັດການໂທ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ."</string>
diff --git a/java/com/android/dialer/app/res/values-lt/strings.xml b/java/com/android/dialer/app/res/values-lt/strings.xml
index a346d5d0a..367c928f4 100644
--- a/java/com/android/dialer/app/res/values-lt/strings.xml
+++ b/java/com/android/dialer/app/res/values-lt/strings.xml
@@ -87,6 +87,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Grįžti prie vykdomo skambučio"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Pridėti skambutį"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Gaunami skambučiai"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Įjungiamas masinių veiksmų režimas"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Masinių veiksmų režimas išjungtas"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Pasirinkta: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Pasirinkimas atšauktas: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Paleisti balso pašto pranešimus"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Žiūrėti kontaktą <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Skambinti <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -101,11 +105,13 @@
<string name="voicemail" msgid="8899540969000957954">"Balso paštas"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Atšaukti masinių veiksmų režimą"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"balso pašto praneš."</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"balso pašto praneš."</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Taip"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Ištrinti pasir. <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Pasirinkta: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -118,7 +124,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Įkeliama iš SIM kortelės..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM kortelės adresatai"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nepasiekiama jokia kontaktų programa"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Paieška balsu nepasiekiama"</string>
<string name="call_not_available" msgid="7850148370757361155">"Negalima skambinti telefonu, nes Telefono programa išjungta."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Ieškoti adresatų"</string>
@@ -147,10 +152,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Naujų praleistų skambučių: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Dar nieko neįtraukėte į sparčiojo rinkimo sąrašą"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Pridėti mėgstamiausią"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Dar neturite kontaktų"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Pridėti kontaktą"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Palieskite vaizdą, kad peržiūrėtumėte visus numerius, arba palieskite ir palaikykite, kad pertvarkytumėte"</string>
<string name="remove_contact" msgid="2353580570488923668">"Pašalinti"</string>
+ <string name="select_all" msgid="408601760696146245">"Pasirinkti viską"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Vaizdo skambutis"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Siųsti pranešimą"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Išsami skambučio informacija"</string>
@@ -217,11 +221,9 @@
<string name="block_list" msgid="4701585783411870782">"Užblokuoti numeriai"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> jau užblokuotas."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Skambinimo paskyros"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Įjungti"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Nustatyti leidimus"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Jei norite įgalinti spartųjį rinkimą, įjunkite Kontaktų programos leidimą."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Jei norite peržiūrėti skambučių žurnalą, įjunkite Telefono programos leidimą."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Jei norite peržiūrėti kontaktus, įjunkite Kontaktų programos leidimą."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Jei norite pasiekti balso paštą, įjunkite Telefono programos leidimą."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Kad galėtumėte ieškoti kontaktų, įjunkite Kontaktų leidimus."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Jei norite paskambinti, įjunkite Telefono programos leidimą."</string>
diff --git a/java/com/android/dialer/app/res/values-lv/strings.xml b/java/com/android/dialer/app/res/values-lv/strings.xml
index 808d7bfb7..2713b91b6 100644
--- a/java/com/android/dialer/app/res/values-lv/strings.xml
+++ b/java/com/android/dialer/app/res/values-lv/strings.xml
@@ -86,6 +86,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Atgriezties pie pašreizējā zvana"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Pievienot zvanu"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Ienākošie zvani"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Tiek atvērts lielapjoma darbību režīms"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Tika aizvērts lielapjoma darbību režīms"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Atlasīt: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Noņemt atlasi: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Atskaņot balss pasta ziņojumu"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Skatīt kontaktpersonu <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Zvanīt: <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -100,11 +104,13 @@
<string name="voicemail" msgid="8899540969000957954">"Balss pasts"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Iziet no grupas darbību režīma"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"balss pasta ziņojums"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"balss pasta ziņojumi"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Jā"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nē"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Vai dzēst atlasi: <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Atlasīti: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> plkst. <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -117,7 +123,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Notiek ielāde no SIM kartes..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontaktpersonas SIM kartē"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nav pieejama neviena kontaktpersonu lietotne."</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Meklēšana ar balsi nav pieejama."</string>
<string name="call_not_available" msgid="7850148370757361155">"Nevar veikt tālruņa zvanu, jo lietojumprogramma Tālrunis tika atspējota."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Meklēt kontaktpersonas"</string>
@@ -146,10 +151,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Jauni neatbildēti zvani: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Ātro zvanu sarakstā vēl nav nevienas kontaktpersonas."</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Pievienot izlasei"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Jums vēl nav nevienas kontaktpersonas."</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Pievienot kontaktpersonu"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Pieskarieties attēlam, lai skatītu visus numurus, vai pieskarieties attēlam un turiet to, lai veiktu pārkārtošanu."</string>
<string name="remove_contact" msgid="2353580570488923668">"Noņemt"</string>
+ <string name="select_all" msgid="408601760696146245">"Atlasīt visu"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videozvans"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Sūtīt ziņojumu"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Informācija par zvanu"</string>
@@ -215,11 +219,9 @@
<string name="block_list" msgid="4701585783411870782">"Bloķētie numuri"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> jau ir bloķēts."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Zvanu konti"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Ieslēgt"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Iestatīt atļaujas"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Lai iespējotu ātros zvanus, ieslēdziet atļauju Kontaktpersonas."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Lai skatītu zvanu žurnālu, ieslēdziet atļauju Tālrunis."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Lai skatītu kontaktpersonas, ieslēdziet atļauju Kontaktpersonas."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Lai piekļūtu balss pastam, ieslēdziet atļauju Tālrunis."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Lai meklētu savas kontaktpersonas, ieslēdziet atļauju Kontaktpersonas."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Lai veiktu zvanu, ieslēdziet atļauju Tālrunis."</string>
diff --git a/java/com/android/dialer/app/res/values-mk/strings.xml b/java/com/android/dialer/app/res/values-mk/strings.xml
index 6d2e533a5..09725a642 100644
--- a/java/com/android/dialer/app/res/values-mk/strings.xml
+++ b/java/com/android/dialer/app/res/values-mk/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Врати се на повик во тек"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Додај повик"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Дојдовни повици"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Влегувате во режим на групно дејство"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Излеговте од режим на групно дејство"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Избрано е <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Поништен е изборот на <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Преслушај говорна пошта"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Прикажи контакт <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Повикај <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Говорна пошта"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мин. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Откажи го режимот на групни дејства"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"говорна пошта"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"говорни пораки"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Да"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Не"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Да се избришат избраните <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Избрани се <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> во <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Вчитување од SIM картичка..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Контакти од SIM картичка"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Не е достапна апликација за контакти"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Гласовното пребарување не е достапно"</string>
<string name="call_not_available" msgid="7850148370757361155">"Не може да се воспостави телефонски повик, бидејќи апликацијата Телефон е оневозможена."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Пребарај контакти"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> нови пропуштени повици"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Сè уште немате никого на брзо бирање"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Додај омилено"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Сè уште немате контакти"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Додај контакт"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Допрете ја сликата за да ги видите сите броеви или допрете и држете за промена на редоследот"</string>
<string name="remove_contact" msgid="2353580570488923668">"Отстрани"</string>
+ <string name="select_all" msgid="408601760696146245">"Изберете ги сите"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Видеоповик"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Испрати порака"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Детали на повик"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Блокирани броеви"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> веќе е блокиран."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Сметки за повикување"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Вклучи"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Постави дозволи"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"За да овозможите брзо бирање, вклучете ја дозволата за контакти."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"За да ја видите евиденцијата на повици, вклучете ја дозволата за телефон."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"За да ги видите контактите, вклучете ја дозволата за контакти."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"За да пристапите кон говорната пошта, вклучете ја дозволата за телефон."</string>
<string name="permission_no_search" msgid="2424710404207193826">"За да ги пребарувате контактите, вклучете ги дозволите за контакти."</string>
<string name="permission_place_call" msgid="8686908130349369423">"За да воспоставите повик, вклучете ја дозволата за телефон."</string>
diff --git a/java/com/android/dialer/app/res/values-ml/strings.xml b/java/com/android/dialer/app/res/values-ml/strings.xml
index 91accf442..7655dbe23 100644
--- a/java/com/android/dialer/app/res/values-ml/strings.xml
+++ b/java/com/android/dialer/app/res/values-ml/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"വിളിച്ചുകൊണ്ടിരിക്കുന്ന കോളിലേക്ക് മടങ്ങുക"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"കോൾ ചേർക്കുക"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"ഇൻകമിംഗ് കോളുകൾ"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"ബൾക്ക് പ്രവർത്തന മോഡിലേക്ക് പ്രവേശിക്കുന്നു"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"ബൾക്ക് പ്രവർത്തന മോഡ് വിട്ടു"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> തിരഞ്ഞെടുത്തു"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> തിരഞ്ഞെടുത്തത് മാറ്റി"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"വോയ്‌സ്‌മെയിൽ പ്ലേ ചെയ്യുക"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> എന്ന കോൺടാക്റ്റ് കാണുക"</string>
<string name="description_call" msgid="1532402285334775372">"വിളിക്കുക <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"വോയ്‌സ്‌മെയിൽ"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> സെക്കൻഡ്"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> മി. <xliff:g id="SECONDS">%s</xliff:g> സെ."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"\'ബാച്ച് പ്രവർത്തനങ്ങൾ\' മോഡ് റദ്ദാക്കുക"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"വോയ്‌സ്‌മെയിൽ"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"വോയ്‌സ്മെയിലുകൾ"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"അതെ"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ഇല്ല"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"തിരഞ്ഞെടുത്ത <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> ഇല്ലാതാക്കണോ?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> എണ്ണം തിരഞ്ഞെടുത്തു"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>-ന്"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"സിം കാർഡിൽ നിന്നും ലോഡുചെയ്യുന്നു…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"സിം കാർഡ് കോൺടാക്റ്റുകൾ"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"കോൺടാക്റ്റ് അപ്ലിക്കേഷനൊന്നും ലഭ്യമല്ല"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"വോയ്‌സ് തിരയൽ ലഭ്യമല്ല"</string>
<string name="call_not_available" msgid="7850148370757361155">"ഫോൺ അപ്ലിക്കേഷൻ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നതിനാൽ ഫോൺ കോൾ ചെയ്യാനാകില്ല."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"കോണ്‍‌ടാക്റ്റുകള്‍ തിരയുക"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> പുതിയ മിസ്‌ഡ് കോളുകൾ"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"ഇതുവരെ ആരും നിങ്ങളുടെ സ്പീഡ് ഡയലിൽ ഇല്ല"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"പ്രിയപ്പെട്ടത് ചേർക്കുക"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"നിങ്ങൾക്ക് ഇതുവരെയും കോൺടാക്റ്റുകൾ ഒന്നുമില്ല."</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"ഒരു കോണ്‍ടാക്റ്റ് ചേര്‍ക്കുക"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"എല്ലാ നമ്പറുകളും കാണാൻ ചിത്രം സ്‌പർശിക്കുക അല്ലെങ്കിൽ വീണ്ടും ക്രമീകരിക്കാൻ സ്‌പർശിച്ച് പിടിക്കുക"</string>
<string name="remove_contact" msgid="2353580570488923668">"നീക്കംചെയ്യുക"</string>
+ <string name="select_all" msgid="408601760696146245">"എല്ലാം തിരഞ്ഞെടുക്കുക"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"വീഡിയോ കോള്‍"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"ഒരു സന്ദേശം അയയ്‌ക്കുക"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"കോൾ വിശദാംശങ്ങൾ"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"ബ്ലോക്കുചെയ്ത നമ്പറുകൾ"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"ഇതിനകം തന്നെ <xliff:g id="NUMBER">%1$s</xliff:g> ബ്ലോക്കുചെയ്തിരിക്കുന്നു"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"കോളിംഗ് അക്കൗണ്ട്"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"ഓണാക്കുക"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"അനുമതികൾ സജ്ജമാക്കുക"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"സ്പീഡ് ഡയൽ പ്രവർത്തനക്ഷമാക്കുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"നിങ്ങളുടെ കോൾ ലോഗ് കാണുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"നിങ്ങളുടെ കോൺടാക്റ്റുകൾ കാണുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ ആക്സസ് ചെയ്യുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക."</string>
<string name="permission_no_search" msgid="2424710404207193826">"നിങ്ങളുടെ കോൺടാക്റ്റുകൾ തിരയുന്നതിന് കോൺടാക്റ്റുകൾക്കുള്ള അനുമതികൾ ഓണാക്കുക."</string>
<string name="permission_place_call" msgid="8686908130349369423">"കോൾ വിളിക്കുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക."</string>
diff --git a/java/com/android/dialer/app/res/values-mn/strings.xml b/java/com/android/dialer/app/res/values-mn/strings.xml
index a07a826d5..29bd8af42 100644
--- a/java/com/android/dialer/app/res/values-mn/strings.xml
+++ b/java/com/android/dialer/app/res/values-mn/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Үргэлжилж буй дуудлага руу буцах"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Дуудлага нэмэх"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Ирж буй дуудлага"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Багц үйлдлийн горимд орж байна"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Багц үйлдлийн горимоос гарсан"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> сонгосон"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> сонголтыг болиулсан"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Дуут шууданг тоглуулах"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> харилцагчийг харах"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> руу залгах"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Дуут шуудан"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> минут <xliff:g id="SECONDS">%s</xliff:g> секунд"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Багц үйлдлийн горимыг цуцлах"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"дуут шуудан"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"дуут шуудан"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Тийм"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Үгүй"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Сонгосон <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>-г устгах уу?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> сонгосон"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g>-д"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM картаас уншиж байна…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM картны харилцагчид"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Ямар ч харилцагчдын апликейшн байхгүй байна."</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Дуут хайлт хийх боломжгүй байна"</string>
<string name="call_not_available" msgid="7850148370757361155">"Утас аппликешныг идэвхгүйжүүлсэн тул утасны дуудлага хийх боломжгүй."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Харилцагчдаас хайх"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> шинэ аваагүй дуудлага"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Таны яаралтай залгах тохиргоон дээр одоогоор харилцагч байхгүй байна"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Таалагдсан хэсэгт нэмэх"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Танд одоогоор харилцагч байхгүй байна"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Харилцагч нэмэх"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Бүх дугаарыг харахын тулд зурганд хүрнэ үү эсвэл жагсаалтыг өөрчлөхийн тулд удаан дарна уу."</string>
<string name="remove_contact" msgid="2353580570488923668">"Хасах"</string>
+ <string name="select_all" msgid="408601760696146245">"Бүгдийг сонгох"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Видео дуудлага"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Зурвас илгээх"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Дуудлагын мэдээлэл"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Блоклосон дугаар"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g>-г аль хэдийн блоклосон байна."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Дуудах бүртгэл"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Идэвхжүүлэх"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Зөвшөөрөл тохируулах"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Яаралтай дуудлагыг идэвхжүүлэхийн тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Дуудлагын жагсаалтыг харахын тулд утасны зөвшөөрлийг идэвхжүүлнэ үү."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Харилцагчдаа харахын тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Дуут шууданд хандахын тулд Утасны зөвшөөрлийг идэвхжүүлнэ үү."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Харилцагчаа хайхын тулд, Харилцагчийн жагсаалтын зөвшөөрлийг идэвхжүүлнэ үү."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Залгахын тулд Утасны зөвшөөрлийг идэвхжүүлнэ үү."</string>
diff --git a/java/com/android/dialer/app/res/values-mr/strings.xml b/java/com/android/dialer/app/res/values-mr/strings.xml
index 5aca7a5e2..ee21291e8 100644
--- a/java/com/android/dialer/app/res/values-mr/strings.xml
+++ b/java/com/android/dialer/app/res/values-mr/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"चालू असलेल्या कॉलवर परत जा"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"कॉल जोडा"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"येणारे कॉल"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"मोठ्या प्रमाणात क्रिया मोडमध्ये प्रवेश करीत आहे"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"मोठ्या प्रमाणात क्रिया मोड सोडत आहे"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> निवडले"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ची निवड रद्द केली"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"व्हॉइसमेल प्ले करा"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> संपर्क पहा"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> ला कॉल करा"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"व्हॉइसमेल"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> सेकंद"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> मिनिट <xliff:g id="SECONDS">%s</xliff:g> सेकंद"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"बॅच क्रिया मोड रद्द करा"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"व्हॉइसमेल"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"व्हॉइसमेल"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"होय"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"नाही"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"निवडलेले <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> हटवायचेे?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> निवडले"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> रोजी <xliff:g id="TIME">%2$s</xliff:g> वाजता"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"सिम कार्ड मधून लोड करीत आहे..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"सिम कार्ड संपर्क"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"कोणताही संपर्क अॅप उपलब्ध नाही"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"व्हॉइस शोध उपलब्ध नाही"</string>
<string name="call_not_available" msgid="7850148370757361155">"फोन अनुप्रयोग अक्षम केला गेला असल्याने फोन कॉल करणे शक्य नाही."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"संपर्क शोधा"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> नवीन सुटलेले कॉल"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"अद्याप आपल्‍या स्पीड डायलवर कोणीही नाही"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"एक आवडते जोडा"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"आपल्‍याकडे अद्याप कोणतेही संपर्क नाहीत"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"एक संपर्क जोडा"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"सर्व नंबर पाहण्यासाठी प्रतिमेस स्पर्श करा किंवा पुन्हा क्रम लावण्यासाठी स्पर्श करा आणि धरून ठेवा"</string>
<string name="remove_contact" msgid="2353580570488923668">"काढा"</string>
+ <string name="select_all" msgid="408601760696146245">"सर्व निवडा"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"व्हिडिओ कॉल"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"एक संदेश पाठवा"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"कॉल तपशील"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"अवरोधित केलेले नंबर"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> आधीच अवरोधित केलेला आहे."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"कॉल करण्याची खाती"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"चालू करा"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"परवानग्या सेट करा"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"स्पीड डायल सक्षम करण्‍यासाठी, संपर्क परवानगी चालू करा."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"आपला कॉल लॉग पाहण्‍यासाठी, फोन परवानगी चालू करा."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"आपले संपर्क पाहण्‍यासाठी, संपर्क परवानगी चालू करा."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"आपल्‍या व्हॉइसमेलमध्‍ये प्रवेश करण्‍यासाठी, फोन परवानगी चालू करा."</string>
<string name="permission_no_search" msgid="2424710404207193826">"आपले संपर्क शोधण्‍यासाठी, संपर्क परवानग्या चालू करा."</string>
<string name="permission_place_call" msgid="8686908130349369423">"कॉल करण्यासाठी, फोन परवानगी चालू करा."</string>
diff --git a/java/com/android/dialer/app/res/values-ms/strings.xml b/java/com/android/dialer/app/res/values-ms/strings.xml
index 9dbe541d9..dbb021359 100644
--- a/java/com/android/dialer/app/res/values-ms/strings.xml
+++ b/java/com/android/dialer/app/res/values-ms/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Kembali ke panggilan yang sedang berlangsung"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Tambah panggilan"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Panggilan masuk"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Memasuki mod tindakan pukal"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Meninggalkan mod tindakan pukal"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> dipilih"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> dinyahpilih"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Mainkan mel suara"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Lihat kenalan <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Panggil <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Mel suara"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> saat"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> saat"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Batalkan mod tindakan kelompok"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"mel suara"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"mel suara"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ya"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Tidak"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Padam <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> yang dipilih?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> dipilih"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> pada <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Memuatkan dari kad SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kenalan kad SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Tiada apl kenalan tersedia"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Carian suara tidak tersedia"</string>
<string name="call_not_available" msgid="7850148370757361155">"Tidak boleh membuat panggilan telefon kerana aplikasi Telefon telah dilumpuhkan."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Cari dalam kenalan"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> panggilan terlepas baharu"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Belum ada sesiapa pada dail pantas anda"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Tambahkan kegemaran"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Anda belum mempunyai sebarang kenalan"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Tambahkan kenalan"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Sentuh imej untuk melihat semua nombor atau sentuh &amp; tahan untuk menyusun semula"</string>
<string name="remove_contact" msgid="2353580570488923668">"Alih keluar"</string>
+ <string name="select_all" msgid="408601760696146245">"Pilih semua"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Panggilan video"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Hantar mesej"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Butiran panggilan"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Nombor yang disekat"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> sudah disekat."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Akaun panggilan"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Hidupkan"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Tetapkan kebenaran"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Untuk mendayakan dail laju, hidupkan kebenaran Kenalan."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Untuk melihat log panggilan anda, hidupkan kebenaran Telefon."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Untuk melihat kenalan anda, hidupkan kebenaran Kenalan."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Untuk mengakses mel suara anda, hidupkan kebenaran Telefon."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Untuk mencari kenalan anda, hidupkan kebenaran Kenalan."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Untuk membuat panggilan, hidupkan kebenaran Telefon."</string>
diff --git a/java/com/android/dialer/app/res/values-my/strings.xml b/java/com/android/dialer/app/res/values-my/strings.xml
index 2b51b2054..eecfeb234 100644
--- a/java/com/android/dialer/app/res/values-my/strings.xml
+++ b/java/com/android/dialer/app/res/values-my/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"ဖုန်းပြန်ခေါ်မှု ပြုလုပ်နေစဉ်"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"ဖုန်းခေါ်မှု ထပ်ထည့်ပါ"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"အဝင်ခေါ်ဆိုမှုများ"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်မုဒ်ကို ထည့်သွင်းခြင်း"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်မုဒ်မှ ထွက်လိုက်သည်"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"ရွေးချယ်ထားသော <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"မရွေးချယ်ထားသော <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"အသံပို့စာ နားထောင်ရန်"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> လိပ်စာကြည့်ရန်"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> ကိုခေါ်ပါ"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"အသံစာပို့စနစ်"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> စက္ကန့်"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> မိနစ် <xliff:g id="SECONDS">%s</xliff:g> စက္ကန့်"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်များမုဒ်ကိ ပယ်ဖျက်ရန်"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"အသံမေးလ်"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"အသံမေးလ်များ"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Yes"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"ရွေးထားသော <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> ကို ဖျက်လိုပါသလား။"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> ကို ရွေးချယ်ထားသည်"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g> ၌"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEIDနံပါတ်"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"ဆင်းမ်ကဒ်မှ ဖွင့်နေပါသည်..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"ဆင်းမ်ကဒ်မှ အဆက်အသွယ်များ"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"အဆက်အသွယ်များ app မရှိ"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"အသံဖြင့် ရှာဖွေမှု မရှိ"</string>
<string name="call_not_available" msgid="7850148370757361155">"ဖုန်း အပလီကေးရှင်းကို ပိတ်ထား၍ ဖုန်း ခေါ်ဆိုမှု မပြုလုပ်နိုင်ခဲ့ပါ။"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"အဆက်အသွယ်များရှာပါ"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"လွတ်သွားသောဖုန်း <xliff:g id="NUMBER">%s</xliff:g> ခါ"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"သင်၏အမြန်ခေါ်စာရင်းတွင် မည်သူမျှ မရှိသေးပါ"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"အနှစ်သက်ဆုံးတစ်ခု ထည့်ရန်"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"သင့်တွင် မည်သည့်အဆက်အသွယ်မျှ မရှိသေးပါ"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"အဆက်အသွယ်တစ်ယောက် ထည့်မည်"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"နံပါတ်အားလုံးကိုကြည့်ရန် ပုံကိုထိပါ (သို့) ပြန်စီရန် ထိပြီးဖိထားပါ"</string>
<string name="remove_contact" msgid="2353580570488923668">"ဖယ်ရှာခြင်း"</string>
+ <string name="select_all" msgid="408601760696146245">"အားလုံးကို ရွေးချယ်ပါ"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"ဗီဒီယို ခေါ်ဆိုမှု"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"စာ တစ်စောင် ပို့ပါ"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"ဖုန်းခေါ်မှု အသေးစိတ်အချက်အလက်"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"ပိတ်ထားသည့် နံပါတ်များ"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> အားပိတ်ဆို့ထားပြီးပါပြီ။"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"ခေါ်ဆိုသော အကောင့်များ"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"ဖွင့်ထားရန်"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"ခွင့်ပြုချက်များ သတ်မှတ်မည်"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"မြန်နှုန်းမြင့်ဖုန်းခေါ်ဆိုမှုကို ဖွင့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"ခေါ်ဆိုမှုမှတ်တမ်းကို ကြည့်ရန်၊ ဖုန်းခွင့်ပြုချက်ကို ဖွင့်ပါ။"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"အဆက်အသွယ်များကိုကြည့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"အသံမေးလ်ကိုအသုံးပြုရန်၊ ဖုန်းခွင့်ပြုချက်ကိုဖွင့်ပါ။"</string>
<string name="permission_no_search" msgid="2424710404207193826">"သင့်အဆက်အသွယ်များကို ရှာဖွေရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်များကို ဖွင့်ပါ။"</string>
<string name="permission_place_call" msgid="8686908130349369423">"ဖုန်းခေါ်ဆိုရန်၊ ဖုန်းခွင့်ပြုချက်ကိုဖွင့်ပါ။"</string>
diff --git a/java/com/android/dialer/app/res/values-nb/strings.xml b/java/com/android/dialer/app/res/values-nb/strings.xml
index d92edc649..bda4915b5 100644
--- a/java/com/android/dialer/app/res/values-nb/strings.xml
+++ b/java/com/android/dialer/app/res/values-nb/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Gå tilbake til aktiv samtale"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Legg til en samtale"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Innkommende samtaler"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Starter massehandlingsmodus"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Massehandlingsmodus er avsluttet"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Du har valgt <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Du har valgt bort <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Spill av talemelding"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Se kontakten <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Ring <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Telefonsvarer"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Avbryt massehandlinsmodus"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"talepost"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"talepost"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nei"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Slett markert <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> er valgt"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Henter fra SIM-kort…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakter på SIM-kort"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Ingen kontaktapper er tilgjengelige"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Talesøk er ikke tilgjengelig"</string>
<string name="call_not_available" msgid="7850148370757361155">"Kan ikke ringe fordi Telefon-appen er deaktivert."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Søk i kontakter"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> nye tapte anrop"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Du har ingen på hurtigoppringning ennå"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Legg til en favoritt"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Du har ingen kontakter ennå"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Legg til en kontakt"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Trykk på bildet for å se alle numrene, eller trykk og hold for å omorganisere"</string>
<string name="remove_contact" msgid="2353580570488923668">"Fjern"</string>
+ <string name="select_all" msgid="408601760696146245">"Velg alle"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videoanrop"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Send en melding"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Samtaleinformasjon"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Blokkerte numre"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> er allerede blokkert."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Ringekontoer"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Slå på"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Angi tillatelser"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"For å slå på hurtigoppringning, slå på Kontakter-tillatelsen."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"For å se samtaleloggen din, slå på Telefon-tillatelsen."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"For å se kontaktene dine, slå på Kontakter-tillatelsen."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"For å få tilgang til talepostkassen, slå på Telefon-tillatelsen."</string>
<string name="permission_no_search" msgid="2424710404207193826">"For å søke i kontaktene dine, slå på tillatelser for Kontakter."</string>
<string name="permission_place_call" msgid="8686908130349369423">"For å ringe, slå på Telefon-tillatelsen."</string>
diff --git a/java/com/android/dialer/app/res/values-ne/strings.xml b/java/com/android/dialer/app/res/values-ne/strings.xml
index 90a3016e2..8262a316c 100644
--- a/java/com/android/dialer/app/res/values-ne/strings.xml
+++ b/java/com/android/dialer/app/res/values-ne/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"हुदै गरेको कलमा फर्कनुहोस्"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"कल थप्नुहोस्"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"आगमन कलहरू"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"बल्क कारबाही सम्बन्धी मोडमा प्रवेश गर्दै"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"बल्क कारबाही सम्बन्धी मोड छोडियो"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> चयन गरियो"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> चयन हटाइयो"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"भ्वाइसमेल बजाउनुहोस्"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> सम्पर्क हेर्नुहोस्"</string>
<string name="description_call" msgid="1532402285334775372">"कल <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"भ्वाइसमेल"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> सेकेन्ड"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> मिनेट <xliff:g id="SECONDS">%s</xliff:g> सकेन्ड"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"ब्याच सम्बन्धी कारबाहीको मोडलाई रद्द गर्नुहोस्"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"भ्वाइस मेल"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"भ्वाइस मेलहरू"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"हो"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"होइन"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"चयन गरिएका <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> लाई मेटाउने हो?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> चयन गरियो"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> मा <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM कार्डबाट लोड हुँदै"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM कार्ड सम्पर्कहरू"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"कुनै पनि सम्पर्क अनुप्रयोग उपलब्ध छैन"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"आवाज खोजी उपलब्ध छैन"</string>
<string name="call_not_available" msgid="7850148370757361155">"फोन अनुप्रयोग असक्षम गरिएकोले फोन गर्न सकिँदैन।"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"सम्पर्कहरू खोज्नुहोस्"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> नयाँ छुटेका कलहरु"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"तपाईँको स्पिड डायलमा अझसम्म कोही छैन"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"एक मनपर्ने थप्नुहोस्"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"तपाईँसँग अझसम्म कुनै सम्पर्कहरू छैनन्"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"एउटा सम्पर्क थप्नुहोस्"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"सबै नम्बरहरू हेर्न छविलाई छुनुहोस् वा पुन:क्रमबद्ध गर्न छोइराख्नुहोस्"</string>
<string name="remove_contact" msgid="2353580570488923668">"हटाउँनुहोस्"</string>
+ <string name="select_all" msgid="408601760696146245">"सबैलाई चयन गर्नुहोस्"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"भिडियो कल"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"सन्देश पठाउनुहोस्"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"कल विवरणहरु"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"रोकिएका नम्बरहरू"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> पहिले नै रोकिएको छ।"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"खाता कलिङ"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"सक्रिय पार्नुहोस्"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"अनुमतिहरू सेट गर्नुहोस्"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"तीव्र डायल सक्षम गर्न, सम्पर्क अनुमति सक्षम गर्नुहोस्।"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"आफ्नो कल लग हेर्न, फोन अनुमति सक्रिय गर्नुहोस्।"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"आफ्नो सम्पर्क हेर्न सम्पर्क अनुमति सक्रिय गर्नुहोस्।"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"आफ्नो भ्वाइस मेल पहुँच गर्न, फोन अनुमति सक्रिय गर्नुहोस्"</string>
<string name="permission_no_search" msgid="2424710404207193826">"तपाईँको सम्पर्कहरू खोज गर्न सम्पर्क अनुमतिहरू सक्रिय गर्नुहोस्।"</string>
<string name="permission_place_call" msgid="8686908130349369423">"कल गर्न फोन अनुमति सक्रिय गर्नुहोस्।"</string>
diff --git a/java/com/android/dialer/app/res/values-nl/strings.xml b/java/com/android/dialer/app/res/values-nl/strings.xml
index 5f41b8063..eed412d69 100644
--- a/java/com/android/dialer/app/res/values-nl/strings.xml
+++ b/java/com/android/dialer/app/res/values-nl/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Terug naar actief gesprek"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Oproep toevoegen"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Inkomende oproepen"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Modus voor bulkacties openen"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Modus voor bulkacties verlaten"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> geselecteerd"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Selectie van <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> opgeheven"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Voicemail afspelen"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Contact <xliff:g id="NAME">%1$s</xliff:g> bekijken"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> bellen"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Voicemail"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sec."</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Modus voor batchacties annuleren"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"voicemail"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"voicemails"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nee"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Geselecteerde <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> verwijderen?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> geselecteerd"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> om <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Laden vanaf SIM-kaart..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Contacten op SIM-kaart"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Geen app voor contacten beschikbaar"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Gesproken zoekopdracht niet beschikbaar"</string>
<string name="call_not_available" msgid="7850148370757361155">"Kan niet bellen omdat de Telefoon-app is uitgeschakeld."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Contacten zoeken"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> nieuwe gemiste oproepen"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Er staat nog niemand in je snelkeuzelijst"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Een favoriet toevoegen"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Je hebt nog geen contacten"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Contact toevoegen"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Tik op de afbeelding om alle nummers te bekijken of tik op de afbeelding en houd vast om opnieuw te rangschikken"</string>
<string name="remove_contact" msgid="2353580570488923668">"Verwijderen"</string>
+ <string name="select_all" msgid="408601760696146245">"Alles selecteren"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videogesprek"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Een bericht verzenden"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Oproepdetails"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Geblokkeerde nummers"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> is al geblokkeerd."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Oproepaccounts"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Inschakelen"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Toestemmingen instellen"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Als je de snelkeuzefunctie wilt inschakelen, schakel je de machtiging voor Contacten in."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Als je je gesprekkenlijst wilt bekijken, schakel je de machtiging voor Telefoon in."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Als je je contacten wilt bekijken, schakel je de machtiging voor Contacten in."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Als je je voicemail wilt beluisteren, schakel je de machtiging voor Telefoon in."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Als je naar contacten wilt zoeken, schakel je de contacttoestemming in."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Als je iemand wilt bellen, schakel je de machtiging voor Telefoon in."</string>
diff --git a/java/com/android/dialer/app/res/values-no/strings.xml b/java/com/android/dialer/app/res/values-no/strings.xml
index d92edc649..bda4915b5 100644
--- a/java/com/android/dialer/app/res/values-no/strings.xml
+++ b/java/com/android/dialer/app/res/values-no/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Gå tilbake til aktiv samtale"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Legg til en samtale"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Innkommende samtaler"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Starter massehandlingsmodus"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Massehandlingsmodus er avsluttet"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Du har valgt <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Du har valgt bort <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Spill av talemelding"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Se kontakten <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Ring <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Telefonsvarer"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Avbryt massehandlinsmodus"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"talepost"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"talepost"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nei"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Slett markert <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> er valgt"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Henter fra SIM-kort…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakter på SIM-kort"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Ingen kontaktapper er tilgjengelige"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Talesøk er ikke tilgjengelig"</string>
<string name="call_not_available" msgid="7850148370757361155">"Kan ikke ringe fordi Telefon-appen er deaktivert."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Søk i kontakter"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> nye tapte anrop"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Du har ingen på hurtigoppringning ennå"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Legg til en favoritt"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Du har ingen kontakter ennå"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Legg til en kontakt"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Trykk på bildet for å se alle numrene, eller trykk og hold for å omorganisere"</string>
<string name="remove_contact" msgid="2353580570488923668">"Fjern"</string>
+ <string name="select_all" msgid="408601760696146245">"Velg alle"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videoanrop"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Send en melding"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Samtaleinformasjon"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Blokkerte numre"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> er allerede blokkert."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Ringekontoer"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Slå på"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Angi tillatelser"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"For å slå på hurtigoppringning, slå på Kontakter-tillatelsen."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"For å se samtaleloggen din, slå på Telefon-tillatelsen."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"For å se kontaktene dine, slå på Kontakter-tillatelsen."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"For å få tilgang til talepostkassen, slå på Telefon-tillatelsen."</string>
<string name="permission_no_search" msgid="2424710404207193826">"For å søke i kontaktene dine, slå på tillatelser for Kontakter."</string>
<string name="permission_place_call" msgid="8686908130349369423">"For å ringe, slå på Telefon-tillatelsen."</string>
diff --git a/java/com/android/dialer/app/res/values-pa/strings.xml b/java/com/android/dialer/app/res/values-pa/strings.xml
index 76d4b9b70..8e6540727 100644
--- a/java/com/android/dialer/app/res/values-pa/strings.xml
+++ b/java/com/android/dialer/app/res/values-pa/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"ਪ੍ਰਗਤੀ ਵਿੱਚ ਕਾਲ ਤੇ ਵਾਪਸ ਜਾਓ"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"ਕਾਲ ਜੋੜੋ"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"ਇਨਕਮਿੰਗ ਕਾਲਾਂ"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"ਬਲਕ ਕਾਰਵਾਈ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੋਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"ਬਲਕ ਕਾਰਵਾਈ ਮੋਡ ਨੂੰ ਛੱਡਿਆ"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ਨੂੰ ਚੁਣਿਆ ਗਿਆ"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ਨੂੰ ਅਣ-ਚੁਣਿਆ ਕੀਤਾ ਗਿਆ"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"ਵੌਇਸਮੇਲ ਪਲੇ ਕਰੋ"</string>
<string name="description_view_contact" msgid="3940984937384372665">"ਸੰਪਰਕ <xliff:g id="NAME">%1$s</xliff:g> ਦੇਖੋ"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"ਵੌਇਸਮੇਲ"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ਸਕਿੰਟ"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> ਮਿੰਟ <xliff:g id="SECONDS">%s</xliff:g> ਸਕਿੰਟ"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"ਬੈਚ ਕਾਰਵਾਈਆਂ ਮੋਡ ਨੂੰ ਰੱਦ ਕਰੋ"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ਵੌਇਸਮੇਲ"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ਵੌਇਸਮੇਲਾਂ"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ਹਾਂ"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ਨਹੀਂ"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"ਕੀ ਚੁਣੀ(ਆਂ) ਹੋਈ(ਆਂ) <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> ਨੂੰ ਚੁਣਿਆ ਗਿਆ"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ਨੂੰ <xliff:g id="TIME">%2$s</xliff:g> ਵਜੇ"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM ਕਾਰਡ ਵਿੱਚੋਂ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM ਕਾਰਡ ਸੰਪਰਕ"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"ਕੋਈ ਸੰਪਰਕ ਐਪ ਉਪਲਬਧ ਨਹੀਂ"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"ਵੌਇਸ ਖੋਜ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
<string name="call_not_available" msgid="7850148370757361155">"ਇੱਕ ਫੋਨ ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ ਕਿਉਂਕਿ ਫੋਨ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ।"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"ਸੰਪਰਕ ਖੋਜੋ"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> ਨਵੀਆਂ ਮਿਸਡ ਕਾਲਾਂ"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"ਅਜੇ ਤੁਹਾਡੇ ਸਪੀਡ ਡਾਇਲ \'ਤੇ ਕੋਈ ਵੀ ਵਿਅਕਤੀ ਨਹੀਂ ਹੈ"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"ਕੋਈ ਮਨਪਸੰਦ ਸ਼ਾਮਲ ਕਰੋ"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"ਤੁਹਾਡੇ ਕੋਲ ਅਜੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਹਨ।"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"ਕੋਈ ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"ਸਾਰੇ ਨੰਬਰਾਂ ਨੂੰ ਵੇਖਣ ਲਈ ਚਿਤਰ ਨੂੰ ਸਪਰਸ਼ ਕਰੋ ਜਾਂ ਦੁਬਾਰਾ ਕ੍ਰਮਬੱਧ ਕਰਨ ਲਈ ਸਪਰਸ਼ ਕਰੋ ਅਤੇ ਦਬਾਈ ਰੱਖੋ"</string>
<string name="remove_contact" msgid="2353580570488923668">"ਹਟਾਓ"</string>
+ <string name="select_all" msgid="408601760696146245">"ਸਭ ਚੁਣੋ"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"ਵੀਡੀਓ ਕਾਲ"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"ਇੱਕ ਸੁਨੇਹਾ ਭੇਜੋ"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"ਕਾਲ ਵੇਰਵੇ"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"ਬਲੌਕ ਕੀਤੇ ਗਏ ਨੰਬਰ"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ਪਹਿਲਾਂ ਹੀ ਬਲੌਕ ਕੀਤਾ ਹੋਇਆ ਹੈ।"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"ਕਾਲਿੰਗ ਖਾਤੇ"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"ਚਾਲੂ ਕਰੋ"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"ਅਨੁਮਤੀਆਂ ਸੈੱਟ ਕਰੋ"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"ਸਪੀਡ ਡਾਇਲ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ, ਸੰਪਰਕ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"ਆਪਣਾ ਕਾਲ ਲੌਗ ਵੇਖਣ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"ਆਪਣੇ ਸੰਪਰਕਾਂ ਨੂੰ ਵੇਖਣ ਲਈ, ਸੰਪਰਕ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"ਆਪਣੀ ਵੌਇਸਮੇਲ ਐਕਸੈਸ ਕਰਨ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।"</string>
<string name="permission_no_search" msgid="2424710404207193826">"ਆਪਣੇ ਸੰਪਰਕਾਂ ਦੀ ਖੋਜ ਕਰਨ ਲਈ,, ਸੰਪਰਕ ਅਨੁਮਤੀਆਂ ਨੂੰ ਚਾਲੂ ਕਰੋ।"</string>
<string name="permission_place_call" msgid="8686908130349369423">"ਕਾਲ ਕਰਨ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।"</string>
diff --git a/java/com/android/dialer/app/res/values-pl/strings.xml b/java/com/android/dialer/app/res/values-pl/strings.xml
index 76adfe579..8f57a82b4 100644
--- a/java/com/android/dialer/app/res/values-pl/strings.xml
+++ b/java/com/android/dialer/app/res/values-pl/strings.xml
@@ -87,6 +87,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Wróć do aktywnego połączenia"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Dodaj połączenie"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Połączenia przychodzące"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Włączono tryb działań zbiorczych"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Wyłączono tryb działań zbiorczych"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Wybrano: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Anulowano wybór: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Odtwórz pocztę głosową"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Wyświetl kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Zadzwoń do: <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -101,11 +105,13 @@
<string name="voicemail" msgid="8899540969000957954">"Poczta głosowa"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Anuluj tryb działań zbiorczych"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"wiadomości głosowe"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"wiadomości głosowe"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Tak"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nie"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Usunąć wybrane <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Wybrane: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> o <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -118,7 +124,6 @@
<string name="meid" msgid="3333779521535224028">"Numer MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Wczytuję z karty SIM…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakty z karty SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nie jest dostępna aplikacja do obsługi kontaktów"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Wyszukiwanie głosowe jest niedostępne"</string>
<string name="call_not_available" msgid="7850148370757361155">"Nie można zadzwonić, ponieważ aplikacja Telefon została wyłączona."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Przeszukuj kontakty"</string>
@@ -147,10 +152,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Nowe nieodebrane połączenia: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Lista szybkiego wybierania jest pusta"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Dodaj do ulubionych"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Nie masz jeszcze żadnych kontaktów"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Dodaj kontakt"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Kliknij obraz, by zobaczyć wszystkie numery, lub kliknij go i przytrzymaj, by zmienić kolejność"</string>
<string name="remove_contact" msgid="2353580570488923668">"Usuń"</string>
+ <string name="select_all" msgid="408601760696146245">"Zaznacz wszystkie"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Rozmowa wideo"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Wyślij wiadomość"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Szczegóły połączenia"</string>
@@ -217,11 +221,9 @@
<string name="block_list" msgid="4701585783411870782">"Zablokowane numery"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"Numer <xliff:g id="NUMBER">%1$s</xliff:g> jest już zablokowany."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Konta telefoniczne"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Włącz"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Ustaw uprawnienia"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Aby włączyć szybkie wybieranie, włącz uprawnienie Kontakty."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Aby zobaczyć swój rejestr połączeń, włącz uprawnienie Telefon."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Aby zobaczyć swoje kontakty, włącz uprawnienie Kontakty."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Aby uzyskać dostęp do poczty głosowej, włącz uprawnienie Telefon."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Aby wyszukać kontakty, włącz uprawnienia Kontakty."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Aby nawiązać połączenie, włącz uprawnienie Telefon."</string>
diff --git a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
index 780ca07db..eb61923e9 100644
--- a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Retornar para a chamada em espera"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Ad. cham."</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Chamadas recebidas"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Entrando no modo de ação em massa"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Saindo do modo de ação em massa"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> selecionado"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> não selecionado"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Reproduzir mensagem de voz"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Visualizar contato <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Ligar para <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Correio de voz"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> seg"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> m <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Cancelar modo de ações em lote"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"correio de voz"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"correios de voz"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sim"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Não"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Excluir a seleção de <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Itens selecionados: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> às <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Carregando do cartão SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Contatos do cartão SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nenhum app de contatos disponível"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"A pesquisa por voz não está disponível"</string>
<string name="call_not_available" msgid="7850148370757361155">"Não é possível fazer uma chamada porque o app Telefone foi desativado."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Pesquisar contatos"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> novas chamadas perdidas"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Ainda não há ninguém na sua discagem rápida"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Adicionar favorito"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Você ainda não tem contatos"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Adicionar um contato"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Toque na imagem para ver todos os números ou toque e segure para reordenar"</string>
<string name="remove_contact" msgid="2353580570488923668">"Remover"</string>
+ <string name="select_all" msgid="408601760696146245">"Selecionar tudo"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videochamada"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Enviar uma mensagem"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detalhes da chamada"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Números bloqueados"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"O número <xliff:g id="NUMBER">%1$s</xliff:g> já está bloqueado."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Contas de chamadas"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Ativar"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Definir permissões"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Para ativar a discagem rápida, ative a permissão para o app Contatos."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Para ver seu registro de chamadas, ative a permissão para o app Telefone."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Para ver seus contatos, ative a permissão para o app Contatos."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Para acessar seu correio de voz, ative a permissão para o app Telefone."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Para pesquisar seus contatos, ative as permissões para \"Contatos\"."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Para fazer uma chamada, ative a permissão para o app Telefone."</string>
diff --git a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
index 95fa75c7e..493f846c4 100644
--- a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Voltar à chamada em curso"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Adicionar chamada"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Chamadas recebidas"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"A entrar no modo de ação em massa…"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Saiu do modo de ação em massa"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> selecionado"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> não selecionado"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Reproduzir mensagem de correio de voz"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Ver o contacto <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Ligar a <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Correio de voz"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> seg"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> seg."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Cancelar modo de ações em lote"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"mensagem de correio de voz"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"mensagens de correio de voz"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sim"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Não"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Pretende eliminar a(s) <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> selecionada(s)?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> selecionada(s)"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> às <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"A carregar a partir do cartão SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Contactos no cartão SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Não existe nenhuma aplicação de contactos disponível"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Pesquisa por voz não disponível"</string>
<string name="call_not_available" msgid="7850148370757361155">"Não é possível efetuar uma chamada porque a aplicação Telefone foi desativada."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Pesquisar contactos"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> chamadas não atendidas novas"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Ainda não tem ninguém na marcação rápida"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Adicionar um favorito"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Ainda não tem nenhum contacto"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Adicionar um contacto"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Toque na imagem para ver todos os números ou toque sem soltar para reordenar"</string>
<string name="remove_contact" msgid="2353580570488923668">"Remover"</string>
+ <string name="select_all" msgid="408601760696146245">"Selecionar tudo"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videochamada"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Enviar uma mensagem"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detalhes da chamada"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Números bloqueados"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> já está bloqueado."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Contas de chamadas"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Ativar"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Definir autorizações"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Para ativar a marcação rápida, ative a autorização Contactos."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Para ver o registo de chamadas, ative a autorização Telemóvel."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Para ver os seus contactos, ative a autorização Contactos."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Para aceder ao correio de voz, ative a autorização Telemóvel."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Para pesquisar os seus contactos, ative as autorizações Contactos."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Para efetuar uma chamada, ative a autorização Telemóvel."</string>
diff --git a/java/com/android/dialer/app/res/values-pt/strings.xml b/java/com/android/dialer/app/res/values-pt/strings.xml
index 780ca07db..eb61923e9 100644
--- a/java/com/android/dialer/app/res/values-pt/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Retornar para a chamada em espera"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Ad. cham."</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Chamadas recebidas"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Entrando no modo de ação em massa"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Saindo do modo de ação em massa"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> selecionado"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> não selecionado"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Reproduzir mensagem de voz"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Visualizar contato <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Ligar para <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Correio de voz"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> seg"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> m <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Cancelar modo de ações em lote"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"correio de voz"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"correios de voz"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sim"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Não"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Excluir a seleção de <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Itens selecionados: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> às <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Carregando do cartão SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Contatos do cartão SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nenhum app de contatos disponível"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"A pesquisa por voz não está disponível"</string>
<string name="call_not_available" msgid="7850148370757361155">"Não é possível fazer uma chamada porque o app Telefone foi desativado."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Pesquisar contatos"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> novas chamadas perdidas"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Ainda não há ninguém na sua discagem rápida"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Adicionar favorito"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Você ainda não tem contatos"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Adicionar um contato"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Toque na imagem para ver todos os números ou toque e segure para reordenar"</string>
<string name="remove_contact" msgid="2353580570488923668">"Remover"</string>
+ <string name="select_all" msgid="408601760696146245">"Selecionar tudo"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videochamada"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Enviar uma mensagem"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detalhes da chamada"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Números bloqueados"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"O número <xliff:g id="NUMBER">%1$s</xliff:g> já está bloqueado."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Contas de chamadas"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Ativar"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Definir permissões"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Para ativar a discagem rápida, ative a permissão para o app Contatos."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Para ver seu registro de chamadas, ative a permissão para o app Telefone."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Para ver seus contatos, ative a permissão para o app Contatos."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Para acessar seu correio de voz, ative a permissão para o app Telefone."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Para pesquisar seus contatos, ative as permissões para \"Contatos\"."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Para fazer uma chamada, ative a permissão para o app Telefone."</string>
diff --git a/java/com/android/dialer/app/res/values-ro/strings.xml b/java/com/android/dialer/app/res/values-ro/strings.xml
index 725ff4a3c..93d01888a 100644
--- a/java/com/android/dialer/app/res/values-ro/strings.xml
+++ b/java/com/android/dialer/app/res/values-ro/strings.xml
@@ -86,6 +86,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Reveniți la apelul în curs"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Adăugați un apel"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Apeluri de intrare"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Se intră în modul acțiune în bloc"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Ați ieșit din modul acțiune în bloc"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"S-a selectat <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"S-a deselectat <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Redați mesajul vocal"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Afișați persoana din agendă <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Apelați <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -100,11 +104,13 @@
<string name="voicemail" msgid="8899540969000957954">"Mesagerie vocală"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> secunde"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Anulați modul de acțiuni în lot"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"mesagerie vocală"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"mesaje vocale"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Da"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nu"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Ștergeți cele <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> selectate?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> selectate"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> la <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -117,7 +123,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Se încarcă de pe cardul SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Persoanele din agendă de pe cardul SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nu este disponibilă nicio aplicație pentru agendă"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Căutarea vocală nu este disponibilă"</string>
<string name="call_not_available" msgid="7850148370757361155">"Nu se poate efectua un apel telefonic, deoarece aplicația Telefon a fost dezactivată."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Căutați în Agendă"</string>
@@ -146,10 +151,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> apeluri nepreluate noi"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Nicio persoană de contact setată pentru apelarea rapidă"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Adăugați o persoană de contact preferată"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Nu aveți încă persoane de contact"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Adăugați o persoană de contact"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Atingeți imaginea pentru a vedea toate numerele sau atingeți lung pentru reordonare"</string>
<string name="remove_contact" msgid="2353580570488923668">"Eliminați"</string>
+ <string name="select_all" msgid="408601760696146245">"Selectați tot"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Apel video"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Trimiteți un mesaj"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detaliile apelului"</string>
@@ -215,11 +219,9 @@
<string name="block_list" msgid="4701585783411870782">"Numere blocate"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> este deja blocat."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Conturi pentru apelare"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Activați"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Setați permisiunile"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Pentru a activa apelarea rapidă, activați permisiunea Agendă."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Pentru a vedea jurnalul de apeluri, activați permisiunea Telefon."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Pentru a vedea persoanele de contact, activați permisiunea Agendă."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Pentru a accesa mesageria vocală, activați permisiunea Telefon."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Pentru a căuta în persoanele de contact, activați permisiunea Agendă."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Pentru a apela, activați permisiunea Telefon."</string>
diff --git a/java/com/android/dialer/app/res/values-ru/strings.xml b/java/com/android/dialer/app/res/values-ru/strings.xml
index 557832bcd..54278c40b 100644
--- a/java/com/android/dialer/app/res/values-ru/strings.xml
+++ b/java/com/android/dialer/app/res/values-ru/strings.xml
@@ -87,6 +87,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Вернуться к текущему вызову"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Добавить вызов"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Входящие вызовы"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Вы вошли в режим массового действия"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Вы вышли из режима массового действия"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Выбран объект <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Выбор объекта <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> отменен"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Прослушать голосовую почту"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Просмотреть данные: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Вызов: <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -101,11 +105,13 @@
<string name="voicemail" msgid="8899540969000957954">"Голосовая почта"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мин. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Отмена режима массового действия"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"голосовое сообщение"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"голосовые сообщения"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Да"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Нет"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Удалить <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Выбрано: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> в <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -118,7 +124,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Загрузка с SIM-карты…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Контакты на SIM-карте"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Нет приложения для работы с контактами"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Голосовой поиск недоступен"</string>
<string name="call_not_available" msgid="7850148370757361155">"Нельзя совершать телефонные звонки, поскольку приложение \"Телефон\" отключено."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Поиск в контактах"</string>
@@ -147,10 +152,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Пропущенных вызовов: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Нет номеров для быстрого набора"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Настроить быстрый набор"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Нет контактов"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Добавить контакт"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Коснитесь изображения, чтобы увидеть все номера, или нажмите и удерживайте, чтобы изменить порядок"</string>
<string name="remove_contact" msgid="2353580570488923668">"Удалить"</string>
+ <string name="select_all" msgid="408601760696146245">"Выбрать все"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Видеовстреча"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Отправить сообщение"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Сведения о вызове"</string>
@@ -217,11 +221,9 @@
<string name="block_list" msgid="4701585783411870782">"Заблокированные номера"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> уже заблокирован."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Аккаунты для звонков"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Включить"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Задать разрешения"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Чтобы настроить быстрый набор, предоставьте приложению разрешение \"Контакты\"."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Чтобы открыть список вызовов, предоставьте приложению разрешение \"Телефон\"."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Чтобы открыть список контактов, предоставьте приложению разрешение \"Контакты\"."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Чтобы получить доступ к голосовой почте, предоставьте приложению разрешение \"Телефон\"."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Для поиска контактов включите разрешение \"Контакты\"."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Чтобы позвонить, предоставьте приложению разрешение \"Телефон\"."</string>
diff --git a/java/com/android/dialer/app/res/values-si/strings.xml b/java/com/android/dialer/app/res/values-si/strings.xml
index 329d89e8d..63634577f 100644
--- a/java/com/android/dialer/app/res/values-si/strings.xml
+++ b/java/com/android/dialer/app/res/values-si/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"පවතින ඇමතුමට නැවත යන්න"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"ඇමතුමක් එක් කරන්න"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"එන ඇමතුම්"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"තොග ක්‍රියා ප්‍රකාරය ඇතුළු කරමින්"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"තොග ක්‍රියා ප්‍රකාරය හැර යන ලදී"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> තෝරා ගන්නා ලදී"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> තෝරා ගැනීම ඉවත් කරන ලදී"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"හඬ තැපෑල ධාවනය කිරීම"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> සම්බන්ධතාවය බලන්න"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> අමතන්න"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"හඬ තැපෑල"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"තත් <xliff:g id="SECONDS">%s</xliff:g>"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"මිනි <xliff:g id="MINUTES">%s</xliff:g> තත් <xliff:g id="SECONDS">%s</xliff:g>"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"කාණ්ඩ ක්‍රියා ප්‍රකාරය අවලංගු කරන්න"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"හඬ තැපෑල"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"හඬ තැපැල්"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ඔව්"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"නැත"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"තෝරා ගත් <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> මකන්නද?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> තෝරා ගන්නා ලදි"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> දින <xliff:g id="TIME">%2$s</xliff:g>ට"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM පතෙන් පූරණය කරමින්…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM පත් සම්බන්ධතා"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"සබඳතා යෙදුමක් ලබාගත නොහැකිය"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"හඬ සෙවුම ලබාගත නොහැකිය"</string>
<string name="call_not_available" msgid="7850148370757361155">"දුරකථන යෙදුම අබල කර ඇති නිසා දුරකථන ඇමතුම ලබාගැනීම කළ නොහැක."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"සම්බන්ධතා සෙවීම"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"නව මඟ හැරුණු ඇමතුම් <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"ඔබගේ වේග ඩයල් එකේ තවමත් කවුරුවත් නැහැ"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"ප්‍රියතම ලෙස එක් කරන්න"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"ඔබ තවමත් සම්බන්ධතා නැහැ"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"සම්බන්ධතාවයක් එක් කරන්න"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"සියලු අංක බැලීමට රූපය ස්පර්ශ කරන්න නැතහොත් නැවත අනුපිළිවෙළට සැකසීමට ස්පර්ශ කර අල්ලාගෙන සිටින්න"</string>
<string name="remove_contact" msgid="2353580570488923668">"ඉවත් කරන්න"</string>
+ <string name="select_all" msgid="408601760696146245">"සියල්ල තෝරන්න"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"වීඩියෝ ඇමතුම"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"පණිවිඩයක් යවන්න"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"ඇමතුම් විස්තර"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"අවහිර කළ අංක"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> දැනටමත් අවහිර කර ඇත."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"ගිණුම් ඇමතීම"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"ක්‍රියාත්මක කරන්න"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"අවසර සකසන්න"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"වේග ඩයල් කිරීම සබල කිරීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"ඔබේ ඇමතුම් ලොගය බැලීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"ඔබේ සම්බන්ධතා බැලීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"ඔබේ හඬ තැපෑල වෙත ප්‍රවේශ වීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න."</string>
<string name="permission_no_search" msgid="2424710404207193826">"ඔබේ සම්බන්ධතා සෙවීමට, සම්බන්ධතා අවසර ක්‍රියාත්මක කරන්න."</string>
<string name="permission_place_call" msgid="8686908130349369423">"ඇමතුමක් ලබා ගැනීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න."</string>
diff --git a/java/com/android/dialer/app/res/values-sk/strings.xml b/java/com/android/dialer/app/res/values-sk/strings.xml
index 60b63d520..f7bf4237c 100644
--- a/java/com/android/dialer/app/res/values-sk/strings.xml
+++ b/java/com/android/dialer/app/res/values-sk/strings.xml
@@ -87,6 +87,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Návrat k prebiehajúcemu hovoru"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Pridať hovor"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Prichádzajúce hovory"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Vstupuje sa do režimu hromadných akcií"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Odišli ste z režimu hromadných akcií"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Položka <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> bola vybraná"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Výber položky <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> bol zrušený"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Prehrať hlasovú správu"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Zobraziť kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Zavolať kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -101,11 +105,13 @@
<string name="voicemail" msgid="8899540969000957954">"Hlasová schránka"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Zrušiť režim hromadných akcií"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"hlasová správa"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"hlasové správy"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Áno"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nie"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Chcete odstrániť vybraté položky (<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>)?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Vybraté: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> o <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -118,7 +124,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Prebieha načítavanie z SIM karty..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakty na SIM karte"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nie je k dispozícii žiadna aplikácia na kontakty"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Hlasové vyhľadávanie nie je k dispozícii"</string>
<string name="call_not_available" msgid="7850148370757361155">"Nie je možné volať, pretože aplikácia Telefón bola deaktivovaná."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Hľadať v kontaktoch"</string>
@@ -147,10 +152,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Nové zmeškané hovory: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"V rýchlej voľbe zatiaľ nemáte žiadny kontakt"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Pridať obľúbený kontakt"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Zatiaľ nemáte žiadne kontakty"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Pridať kontakt"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Klepnutím na obrázok môžete zobraziť všetky čísla. Pridržaním obrázka môžete zmeniť poradie."</string>
<string name="remove_contact" msgid="2353580570488923668">"Odstrániť"</string>
+ <string name="select_all" msgid="408601760696146245">"Vybrať všetko"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videohovor"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Odoslať správu"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Podrobnosti hovoru"</string>
@@ -217,11 +221,9 @@
<string name="block_list" msgid="4701585783411870782">"Blokované čísla"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"Číslo <xliff:g id="NUMBER">%1$s</xliff:g> je už blokované."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Telefónne účty"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Zapnúť"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Nastaviť povolenia"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Ak chcete aktivovať rýchlu voľbu, zapnite povolenie Kontakty."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Ak si chcete zobraziť denník hovorov, zapnite povolenie Telefón."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Ak si chcete zobraziť kontakty, zapnite povolenie Kontakty."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Ak chcete používať hlasovú schránku, zapnite povolenie Telefón."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Ak chcete hľadať kontakty, zapnite povolenie Kontakty."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Ak chcete volať, zapnite povolenie Telefón."</string>
diff --git a/java/com/android/dialer/app/res/values-sl/strings.xml b/java/com/android/dialer/app/res/values-sl/strings.xml
index b46b99ab5..d3c57dd92 100644
--- a/java/com/android/dialer/app/res/values-sl/strings.xml
+++ b/java/com/android/dialer/app/res/values-sl/strings.xml
@@ -87,6 +87,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Nazaj na klic, ki poteka"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Dodaj klic"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Dohodni klici"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Prehod v način množičnega dejanja"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Prehod iz načina množičnega dejanja"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Izbrano: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Preklican izbor: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Predvajanje sporočil glasovne pošte"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Ogled stika <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Pokliči <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -101,11 +105,13 @@
<string name="voicemail" msgid="8899540969000957954">"Glasovna pošta"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Prekliči način množičnega dejanja"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"sporočilo v odzivniku"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"sporočila v odzivniku"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Da"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Želite izbrisati <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Št. izbranih: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ob <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -118,7 +124,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Nalaganje s kartice SIM ..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Stiki na kartici SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Ni aplikacije za stike"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Glasovno iskanje ni na voljo"</string>
<string name="call_not_available" msgid="7850148370757361155">"Ni mogoče opraviti telefonskega klica, ker je aplikacija Telefon onemogočena."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Iskanje stikov"</string>
@@ -147,10 +152,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Št. novih zgrešenih klicev: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Na seznamu za hitro klicanje nimate še nikogar"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Dodajte priljubljenega"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Nimate še stikov"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Dodajte stik"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Dotaknite se slike, da prikažete vse številke, ali pa se je dotaknite in pridržite, da spremenite vrstni red."</string>
<string name="remove_contact" msgid="2353580570488923668">"Odstrani"</string>
+ <string name="select_all" msgid="408601760696146245">"Izberi vse"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videoklic"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Pošljite sporočilo"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Podrobnosti klica"</string>
@@ -217,11 +221,9 @@
<string name="block_list" msgid="4701585783411870782">"Blokirane številke"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"Telefonska številka <xliff:g id="NUMBER">%1$s</xliff:g> je že blokirana."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Računi za klicanje"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Vklop"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Nastavi dovoljenja"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Če želite omogočiti hitro klicanje, vklopite dovoljenje za stike."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Če si želite ogledati dnevnik klicev, vklopite dovoljenje za telefon."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Če si želite ogledati stike, vklopite dovoljenje za stike."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Če želite dostopati do sporočil v odzivniku, vklopite dovoljenje za telefon."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Če želite iskati po stikih, vklopite dovoljenje za stike."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Če želite klicati, vklopite dovoljenje za telefon."</string>
diff --git a/java/com/android/dialer/app/res/values-sq/strings.xml b/java/com/android/dialer/app/res/values-sq/strings.xml
index 6a274fcd2..84704459c 100644
--- a/java/com/android/dialer/app/res/values-sq/strings.xml
+++ b/java/com/android/dialer/app/res/values-sq/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Kthehu te telefonata"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Shto një telefonatë"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Telefonatat hyrëse"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Po hyn në modalitetin e veprimit në masë"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"U largove nga modaliteti i veprimit në masë"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"U zgjodh <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Zgjedhja e <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> u anulua"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Luaj postën zanore"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Shiko kontaktin <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Telefono <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Posta zanore"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sekonda"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. e <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Anulo modalitetin e veprimeve në grup"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"posta zanore"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"postat zanore"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Po"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Jo"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Të fshihen <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> të zgjedhura?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> të zgjedhura"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> në <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Po ngarkon nga karta SIM…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontaktet e kartës SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Nuk mund të përdoret asnjë aplikacion për kontaktet"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Kërkimi me zë nuk mundësohet"</string>
<string name="call_not_available" msgid="7850148370757361155">"Telefonata nuk mund të bëhet sepse aplikacioni \"Telefoni\" është i çaktivizuar."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Kërko për kontakte"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> telefonata të reja të humbura"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Askush nuk është ende në thirrjen tënde të shpejtuar"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Shto një të preferuar"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Nuk ke ende kontakte"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Shto një kontakt"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Prek imazhin për të parë të gjithë numrat ose mbaje të shtypur për ta pozicionuar përsëri"</string>
<string name="remove_contact" msgid="2353580570488923668">"Hiq"</string>
+ <string name="select_all" msgid="408601760696146245">"Zgjidh të gjitha"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Telefonatë me video"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Dërgo një mesazh"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Detajet e telefonatës"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Numrat e bllokuar"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> është i bllokuar tashmë."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Llogaritë e telefonatave"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Aktivizo"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Cakto lejet"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Për të aktivizuar thirrjen e shpejtuar, aktivizo lejen e Kontakteve."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Për të parë evidencën e telefonatave, aktivizo lejen e Telefonit."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Për të parë kontaktet, aktivizo lejen e Kontakteve."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Për të pasur qasje në postën zanore, aktivizo lejen e Telefonit."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Për të kërkuar kontaktet, aktivizo lejet e Kontakteve"</string>
<string name="permission_place_call" msgid="8686908130349369423">"Për të kryer një telefonatë, aktivizo lejen e Telefonit."</string>
diff --git a/java/com/android/dialer/app/res/values-sr/strings.xml b/java/com/android/dialer/app/res/values-sr/strings.xml
index 0def958d4..6cf7a7c85 100644
--- a/java/com/android/dialer/app/res/values-sr/strings.xml
+++ b/java/com/android/dialer/app/res/values-sr/strings.xml
@@ -86,6 +86,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Врати се на позив који је у току"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Додај позив"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Долазни позиви"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Улазите у режим групних радњи"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Изашли сте из режима групних радњи"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Изабрано је <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Опозван је избор <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Пуштање говорне поште"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Прикажи контакт <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Позови <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -100,11 +104,13 @@
<string name="voicemail" msgid="8899540969000957954">"Говорна пошта"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Откажите режим групних радњи"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"говорну поруку"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"говорне поруке"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Да"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Не"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Желите ли да избришете изабрану(е) <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Изабраних: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> у <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -117,7 +123,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Учитава се са SIM картице…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Контакти на SIM картици"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Нема доступне апликације за контакте"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Гласовна претрага није доступна"</string>
<string name="call_not_available" msgid="7850148370757361155">"Није могуће упутити телефонски позив јер је апликација Телефон онемогућена."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Претражи контакте"</string>
@@ -146,10 +151,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Нових пропуштених позива: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Немате ниједан контакт на брзом бирању"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Додај омиљен контакт"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Још увек немате ниједан контакт"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Додај контакт"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Додирните слику да бисте видели све бројеве или додирните и задржите да бисте им променили распоред"</string>
<string name="remove_contact" msgid="2353580570488923668">"Уклони"</string>
+ <string name="select_all" msgid="408601760696146245">"Изабери све"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Видео позив"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Пошаљи поруку"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Детаљи позива"</string>
@@ -215,11 +219,9 @@
<string name="block_list" msgid="4701585783411870782">"Блокирани бројеви"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> је већ блокиран."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Налози за позивање"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Укључи"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Подеси дозволе"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Да бисте омогућили брзо бирање, укључите дозволу за Контакте."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Да бисте видели евиденцију позива, укључите дозволу за Телефон."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Да бисте видели контакте, укључите дозволу за Контакте."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Да бисте приступили говорној пошти, укључите дозволу за Телефон."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Да бисте претражили контакте, укључите дозволе за Контакте."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Да бисте упутили позив, укључите дозволу за Телефон."</string>
diff --git a/java/com/android/dialer/app/res/values-sv/strings.xml b/java/com/android/dialer/app/res/values-sv/strings.xml
index 75aa731f9..71ef3e55b 100644
--- a/java/com/android/dialer/app/res/values-sv/strings.xml
+++ b/java/com/android/dialer/app/res/values-sv/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Återvänd till pågående samtal"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Lägg t. samt."</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Inkommande samtal"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Öppnar läget för massåtgärd"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Stängde läget för massåtgärd"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Markerade <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Avmarkerade <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Spela upp röstmeddelande"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Visa kontakten <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Ring <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Röstbrevlåda"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sekund"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Avbryt läget för massåtgärd"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"röstbrevlåda"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"röstmeddelanden"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nej"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Vill du radera markerade <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> har markerats"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Läser in från SIM-kort…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Kontakter från SIM-kort"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Det finns inga appar för kontakter"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Röstsökning är inte tillgänglig"</string>
<string name="call_not_available" msgid="7850148370757361155">"Det går inte att ringa eftersom appen Telefon har inaktiverats."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Sök efter kontakter"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> nya missade samtal"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Du har ingen kontakt som snabbval ännu"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Lägg till en favorit"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Du har inga kontakter ännu"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Lägg till en kontakt"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Tryck på bilden för att visa alla nummer eller tryck länge för att ändra ordningen"</string>
<string name="remove_contact" msgid="2353580570488923668">"Ta bort"</string>
+ <string name="select_all" msgid="408601760696146245">"Markera alla"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Videosamtal"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Skicka ett meddelande"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Samtalsinfo"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Blockerade nummer"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> är redan blockerat."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Konton för samtal"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Aktivera"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Ange behörigheter"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Du måste aktivera behörigheten Kontakter för att kunna använda snabbuppringning."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Du måste aktivera behörigheten Telefon för att kunna visa samtalsloggen."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Du måste aktivera behörigheten Kontakter för att kunna visa kontakterna."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Du måste aktivera behörigheten Telefon för att kunna komma åt röstmeddelanden."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Aktivera behörigheter för Kontakter om du vill söka bland kontakterna."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Du måste aktivera behörigheten Telefon för att kunna ringa."</string>
diff --git a/java/com/android/dialer/app/res/values-sw/strings.xml b/java/com/android/dialer/app/res/values-sw/strings.xml
index d3b8392d4..9cbdd3e8e 100644
--- a/java/com/android/dialer/app/res/values-sw/strings.xml
+++ b/java/com/android/dialer/app/res/values-sw/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Rudi kwa simu inayoendelea"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Ongeza simu"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Simu zinazoingia"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Unaingia katika hali ya kutekeleza vitendo vingi"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Umeondoka katika hali ya kutekeleza vitendo vingi"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Umeteua <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Umebatilisha uteuzi wa <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Sikiliza ujumbe wa sauti"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Angalia anwani <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Pigia <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Ujumbe wa sauti"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"Sekunde <xliff:g id="SECONDS">%s</xliff:g>"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"Dak <xliff:g id="MINUTES">%s</xliff:g> sek <xliff:g id="SECONDS">%s</xliff:g>"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Ghairi hali ya kutekeleza vitendo vingi"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ujumbe wa sauti"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ujumbe wa sauti"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ndiyo"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Hapana"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Je, ungependa kufuta <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> uliochagua?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> zimechaguliwa"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> saa <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Inapakia kutoka SIM kadi..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Anwani za SIM kadi"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Hakuna programu za mawasiliano zinazopatikana"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Kutafuta kwa kutamka hakupatikani"</string>
<string name="call_not_available" msgid="7850148370757361155">"Haiwezi kupiga simu kwa sababu programu ya Simu imezimwa."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Tafuta anwani"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Simu <xliff:g id="NUMBER">%s</xliff:g> za karibuni ambazo hazikujibiwa"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Hakuna mtu aliye katika orodha yako ya watu unaowasiliana nao zaidi"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Ongeza anwani unazopenda zaidi"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Bado huna anwani zozote"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Ongeza anwani"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Gusa picha ili uone nambari zote ama uguse na kushikilia ili upange upya"</string>
<string name="remove_contact" msgid="2353580570488923668">"Ondoa"</string>
+ <string name="select_all" msgid="408601760696146245">"Chagua zote"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Hangout ya Video"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Tuma SMS"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Maelezo ya simu"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Nambari zilizozuiwa"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> tayari imezuiwa."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Akaunti za simu"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Washa"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Weka ruhusa"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Ili kuwasha kipengele cha unaowasiliana nao zaidi, washa ruhusa ya Anwani."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Ili uone rekodi yako ya nambari za simu, washa ruhusa ya Simu."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Ili uone anwani zako, washa ruhusa ya Anwani."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Ili ufikie ujumbe wako wa sauti, washa ruhusa ya Simu."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Ili utafute anwani zako, washa ruhusa za Anwani."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Ili upige simu, washa ruhusa ya Simu."</string>
diff --git a/java/com/android/dialer/app/res/values-ta/strings.xml b/java/com/android/dialer/app/res/values-ta/strings.xml
index afb852b6d..a91088c4f 100644
--- a/java/com/android/dialer/app/res/values-ta/strings.xml
+++ b/java/com/android/dialer/app/res/values-ta/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"செயலிலுள்ள அழைப்பிற்குத் திரும்பு"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"அழைப்பைச் சேர்"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"உள்வரும் அழைப்புகள்"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"மொத்தச் செயல் பயன்முறையில் நுழைகிறீர்கள்"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"மொத்தச் செயல் பயன்முறையிலிருந்து வெளியேறிவிட்டீர்கள்"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"தேர்ந்தெடுத்த <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"தேர்வுநீக்கிய <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"குரலஞ்சலை இயக்கு"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> தொடர்பைக் காட்டு"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> ஐ அழை"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"குரலஞ்சல்"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> வி"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> நிமிடம் <xliff:g id="SECONDS">%s</xliff:g> வினாடி"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"தொகுப்புச் செயல்கள் பயன்முறையை ரத்துசெய்யும்"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"குரலஞ்சல்"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"குரலஞ்சல்கள்"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ஆம்"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"வேண்டாம்"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"தேர்ந்தெடுத்த <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>ஐ நீக்கவா?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> தேர்ந்தெடுக்கப்பட்டன"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> அன்று <xliff:g id="TIME">%2$s</xliff:g> மணிக்கு"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"சிம் கார்டிலிருந்து ஏற்றுகிறது…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"சிம் கார்டின் தொடர்புகள்"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"தொடர்புகள் பயன்பாடு எதுவுமில்லை"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"குரல் தேடல் இல்லை"</string>
<string name="call_not_available" msgid="7850148370757361155">"Phone பயன்பாடு முடக்கப்பட்டுள்ளதால், ஃபோன் அழைப்பைச் செய்ய முடியாது."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"தொடர்புகளைத் தேடு"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> புதிய தவறிய அழைப்புகள்"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"இன்னும் விரைவு டயலில் யாரையும் சேர்க்கவில்லை"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"முக்கியமானவர்களைச் சேர்"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"இதுவரை எந்தத் தொடர்புகளும் இல்லை"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"ஒரு தொடர்பைச் சேர்க்கவும்"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"எல்லா எண்களையும் பார்க்க, படத்தைத் தொடவும் அல்லது மறுவரிசைப்படுத்த, தொட்டுப் பிடித்திருக்கவும்"</string>
<string name="remove_contact" msgid="2353580570488923668">"அகற்று"</string>
+ <string name="select_all" msgid="408601760696146245">"அனைத்தையும் தேர்ந்தெடு"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"வீடியோ அழைப்பு"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"செய்தி அனுப்பவும்"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"அழைப்பு விவரங்கள்"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"தடுக்கப்பட்ட எண்கள்"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ஏற்கனவே தடுக்கப்பட்டுள்ளது."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"அழைப்பு கணக்குகள்"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"இயக்கு"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"அனுமதிகளை அமை"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"விரைவு டயலை இயக்க, தொடர்புகள் அனுமதியை இயக்கவும்."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"அழைப்புப் பதிவைப் பார்க்க, ஃபோன் அனுமதியை இயக்கவும்."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"தொடர்புகளைப் பார்க்க, தொடர்புகள் அனுமதியை இயக்கவும்."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"குரலஞ்சலை அணுக, ஃபோன் அனுமதியை இயக்கவும்."</string>
<string name="permission_no_search" msgid="2424710404207193826">"தொடர்புகளைத் தேட, தொடர்புகள் அனுமதிகளை இயக்கவும்."</string>
<string name="permission_place_call" msgid="8686908130349369423">"அழைக்க, ஃபோன் அனுமதியை இயக்கவும்."</string>
diff --git a/java/com/android/dialer/app/res/values-te/strings.xml b/java/com/android/dialer/app/res/values-te/strings.xml
index ffc046f69..aecc1c4b9 100644
--- a/java/com/android/dialer/app/res/values-te/strings.xml
+++ b/java/com/android/dialer/app/res/values-te/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"ప్రోగ్రెస్‌లో ఉన్న కాల్‌కు వెళ్లు"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"కాల్‌ను జోడించు"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"ఇన్‌కమింగ్ కాల్‌లు"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"బల్క్ చర్య మోడ్‌లోకి ప్రవేశిస్తున్నారు"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"బల్క్ చర్య మోడ్ నుండి నిష్క్రమించారు"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ఎంచుకోబడింది"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ఎంపిక తీసివేయబడింది"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"వాయిస్ మెయిల్ ప్లే చేయండి"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> పరిచయాన్ని వీక్షించండి"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g>కు కాల్ చేయి"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"వాయిస్ మెయిల్"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> సెక"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> నిమి <xliff:g id="SECONDS">%s</xliff:g> సెక"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"సమూహ చర్యల మోడ్‌ను రద్దు చేస్తుంది"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"వాయిస్ మెయిల్"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"వాయిస్ మెయిల్‌లు"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"అవును"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"వద్దు"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"ఎంచుకున్న <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>ను తొలగించాలా?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> ఎంచుకోబడ్డాయి"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g>కి"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"సిమ్ కార్డు నుండి లోడ్ చేస్తోంది…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"సిమ్ కార్డు పరిచయాలు"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"పరిచయాల అనువర్తనం ఏదీ అందుబాటులో లేదు"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"వాయిస్ శోధన అందుబాటులో లేదు"</string>
<string name="call_not_available" msgid="7850148370757361155">"ఫోన్ అనువర్తనం నిలిపివేయబడినందున ఫోన్ కాల్ చేయలేరు."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"పరిచయాలను శోధించు"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> కొత్త సమాధానం ఇవ్వని కాల్‌లు"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"మీ స్పీడ్ డయల్‌లో ఇంకా ఎవరూ లేరు"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"ఇష్టమైన వారిని జోడించండి"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"మీకు ఇప్పటికీ పరిచయాలేవీ లేవు"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"పరిచయాన్ని జోడించండి"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"అన్ని నంబర్‌లను చూడటానికి చిత్రాన్ని తాకండి లేదా క్రమం మార్చడానికి తాకి, కాసేపు అలాగే ఉంచండి"</string>
<string name="remove_contact" msgid="2353580570488923668">"తీసివేయి"</string>
+ <string name="select_all" msgid="408601760696146245">"అన్నీ ఎంచుకోండి"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"వీడియో కాల్"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"సందేశాన్ని పంపు"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"కాల్ వివరాలు"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"బ్లాక్ చేయబడిన నంబర్‌లు"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ఇప్పటికే బ్లాక్ చేయబడింది."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"కాల్ చేసే ఖాతాలు"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"ఆన్ చేయి"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"అనుమతులను సెట్ చేయి"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"స్పీడ్ డయల్‌ను ప్రారంభించడానికి, పరిచయాల అనుమతిని ఆన్ చేయండి."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"మీ కాల్ లాగ్‌ను చూడటానికి, ఫోన్ అనుమతిని ఆన్ చేయండి."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"మీ పరిచయాలను చూడటానికి, పరిచయాల అనుమతిని ఆన్ చేయండి."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"మీ వాయిస్ మెయిల్‌ను ప్రాప్యత చేయడానికి, ఫోన్ అనుమతిని ఆన్ చేయండి."</string>
<string name="permission_no_search" msgid="2424710404207193826">"మీ పరిచయాలను శోధించడానికి, పరిచయాల అనుమతులను ఆన్ చేయండి."</string>
<string name="permission_place_call" msgid="8686908130349369423">"కాల్ చేయడానికి, ఫోన్ అనుమతిని ఆన్ చేయండి."</string>
diff --git a/java/com/android/dialer/app/res/values-th/strings.xml b/java/com/android/dialer/app/res/values-th/strings.xml
index 13916a51d..58507b49e 100644
--- a/java/com/android/dialer/app/res/values-th/strings.xml
+++ b/java/com/android/dialer/app/res/values-th/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"กลับไปคุยสายต่อ"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"เพิ่มการโทร"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"สายโทรเข้า"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"กำลังเข้าสู่โหมดการดำเนินการแบบกลุ่ม"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"ออกจากโหมดการทำงานแบบกลุ่มแล้ว"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"เลือก <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> แล้ว"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"ยกเลิกการเลือก <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> แล้ว"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"เล่นข้อความเสียง"</string>
<string name="description_view_contact" msgid="3940984937384372665">"ดูรายชื่อติดต่อ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"โทรหา <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"ข้อความเสียง"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> วินาที"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> นาที <xliff:g id="SECONDS">%s</xliff:g> วินาที"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"ยกเลิกโหมดการทำงานแบบกลุ่ม"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ข้อความเสียง"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ข้อความเสียง"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ใช่"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ไม่"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"ลบ<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>ที่เลือกหรือไม่"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"เลือกไว้ <xliff:g id="NUMBER">%1$s</xliff:g> รายการ"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"วันที่ <xliff:g id="DATE">%1$s</xliff:g> เวลา <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"กำลังโหลดจากซิมการ์ด…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"รายชื่อบนซิมการ์ด"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"ไม่มีแอปรายชื่อติดต่อที่พร้อมใช้งาน"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"การค้นหาด้วยเสียงไม่พร้อมใช้งาน"</string>
<string name="call_not_available" msgid="7850148370757361155">"ไม่สามารถโทรศัพท์ได้เนื่องจากแอปพลิเคชันโทรศัพท์ถูกปิดใช้งาน"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"ค้นหารายชื่อติดต่อ"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"สายที่ไม่ได้รับใหม่ <xliff:g id="NUMBER">%s</xliff:g> สาย"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"ยังไม่ได้กำหนดผู้ใดในการโทรด่วน"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"เพิ่มรายการโปรด"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"คุณยังไม่มีรายชื่อติดต่อ"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"เพิ่มรายชื่อติดต่อ"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"แตะรูปภาพเพื่อดูหมายเลขทั้งหมด หรือแตะค้างไว้เพื่อจัดเรียงใหม่"</string>
<string name="remove_contact" msgid="2353580570488923668">"ลบ"</string>
+ <string name="select_all" msgid="408601760696146245">"เลือกทั้งหมด"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"แฮงเอาท์วิดีโอ"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"ส่งข้อความ"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"รายละเอียดการโทร"</string>
@@ -201,7 +205,7 @@
<string name="voicemail_settings_label" msgid="4594299554519920570">"ข้อความเสียง"</string>
<string name="voicemail_settings_select_sim_title" msgid="129296966967476845">"เลือกซิมสำหรับการตั้งค่าข้อความเสียง"</string>
<string name="blocked_numbers_disabled_emergency_header_label" msgid="6936696532562923971">"การบล็อกสายเรียกเข้าปิดชั่วคราว"</string>
- <string name="blocked_numbers_disabled_emergency_desc" msgid="5484785225285297040">"ระบบปิดใช้การบล็อกสายเรียกเข้าเนื่องจากคุณติดต่อบริการฉุกเฉินจากโทรศัพท์เครื่องนี้ภายใน 48 ชั่วโมงที่ผ่านมา ระบบจะเปิดใช้คุณลักษณะนี้อีกครั้งโดยอัตโนมัติเมื่อครบ 48 ชั่วโมง"</string>
+ <string name="blocked_numbers_disabled_emergency_desc" msgid="5484785225285297040">"ระบบปิดใช้การบล็อกสายเรียกเข้าเนื่องจากคุณติดต่อบริการฉุกเฉินจากโทรศัพท์เครื่องนี้ภายใน 48 ชั่วโมงที่ผ่านมา ระบบจะเปิดใช้ฟีเจอร์นี้อีกครั้งโดยอัตโนมัติเมื่อครบ 48 ชั่วโมง"</string>
<string name="import_send_to_voicemail_numbers_label" msgid="7821890095264297681">"นำเข้าหมายเลข"</string>
<string name="blocked_call_settings_import_description" msgid="1819412052545228965">"ก่อนหน้านี้คุณได้ทำเครื่องหมายว่าให้ส่งผู้โทรบางคนไปยังข้อความเสียงโดยอัตโนมัติผ่านแอปอื่นๆ"</string>
<string name="blocked_call_settings_view_numbers_button" msgid="3332727948554356704">"ดูหมายเลข"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"หมายเลขที่ถูกบล็อก"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> ถูกบล็อกอยู่แล้ว"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"บัญชีการโทร"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"เปิด"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"ตั้งค่าสิทธิ์"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"หากต้องการเปิดใช้การโทรด่วน ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"หากต้องการดูประวัติการโทร ให้เปิดสิทธิ์เข้าถึงโทรศัพท์"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"หากต้องการดูรายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"หากต้องการเข้าถึงข้อความเสียง ให้เปิดสิทธิ์เข้าถึงโทรศัพท์"</string>
<string name="permission_no_search" msgid="2424710404207193826">"หากต้องการค้นหารายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ"</string>
<string name="permission_place_call" msgid="8686908130349369423">"หากต้องการโทรออก ให้เปิดสิทธิ์เข้าถึงโทรศัพท์"</string>
diff --git a/java/com/android/dialer/app/res/values-tl/strings.xml b/java/com/android/dialer/app/res/values-tl/strings.xml
index cc44cb5f2..9a8157fea 100644
--- a/java/com/android/dialer/app/res/values-tl/strings.xml
+++ b/java/com/android/dialer/app/res/values-tl/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Bumalik sa kasalukuyang tawag"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Mag-add: tawag"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Mga paparating na tawag"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Pumapasok sa bulk action mode"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Umalis sa bulk action mode"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Napili <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Inalis sa pagkakapili <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"I-play ang voicemail"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Tingnan ang contact na si <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Tawagan si <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Voicemail"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Kanselahin ang batch actions mode"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"voicemail"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"mga voicemail"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Oo"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Hindi"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"I-delete ang napiling <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> ang napili"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ng <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Naglo-load mula sa SIM card…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Mga contact sa SIM card"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Walang available na app ng mga contact"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Hindi available ang paghahanap gamit ang boses"</string>
<string name="call_not_available" msgid="7850148370757361155">"Hindi makagawa ng tawag sa telepono dahil naka-disable ang application na Telepono."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Maghanap ng mga contact"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> (na) bagong hindi nasagot na tawag"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Wala pang tao sa iyong speed dial"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Magdagdag ng paborito"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Wala ka pang sinumang mga contact"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Magdagdag ng contact"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Pindutin ang larawan upang makita ang lahat ng numero o pindutin nang matagal upang ayusing muli"</string>
<string name="remove_contact" msgid="2353580570488923668">"Alisin"</string>
+ <string name="select_all" msgid="408601760696146245">"Piliin lahat"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Mag-video call"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Magpadala ng mensahe"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Mga detalye ng tawag"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Mga naka-block na numero"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"Naka-block na ang <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Account sa pagtawag"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"I-on"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Magtakda ng mga pahintulot"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Upang i-enable ang speed dial, i-on ang pahintulot ng Mga Contact."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Upang makita ang iyong log ng tawag, i-on ang pahintulot ng Telepono."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Upang makita ang iyong mga contact, i-on ang pahintulot ng Mga Contact."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Upang ma-access ang iyong voicemail, i-on ang pahintulot ng Telepono."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Upang hanapin ang iyong mga contact, i-on ang mga pahintulot sa Mga Contact."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Upang tumawag, i-on ang pahintulot ng Telepono."</string>
diff --git a/java/com/android/dialer/app/res/values-tr/strings.xml b/java/com/android/dialer/app/res/values-tr/strings.xml
index 2f6f704f8..17bd6645c 100644
--- a/java/com/android/dialer/app/res/values-tr/strings.xml
+++ b/java/com/android/dialer/app/res/values-tr/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Çağrıya dön"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Çağrı ekle"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Gelen çağrılar"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Toplu işlem moduna giriliyor"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Toplu işlem modundan çıkıldı"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Seçildi: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Seçimi kaldırıldı: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Sesli mesajı oynat"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Kişiyi görüntüle: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Ara: <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Sesli Mesaj"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sn."</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> dk. <xliff:g id="SECONDS">%s</xliff:g> sn."</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Toplu işlemler modu iptal edilir"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"sesli mesaj"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"sesli mesajlar"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Evet"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Hayır"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Seçili <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> silinsin mi?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> öğe seçildi"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM karttan yükleniyor..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM kart kişileri"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Kullanılabilir rehber uygulaması yok"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Sesli arama kullanılamaz"</string>
<string name="call_not_available" msgid="7850148370757361155">"Telefon uygulaması devre dışı bırakıldığından telefon edilemiyor."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Kişilerde ara"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> yeni cevapsız çağrı"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Hızlı arama listenizde henüz kimse yok"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Favori ekle"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Henüz kayıtlı kişi yok"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Kişi ekle"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Tüm numaraları görmek için resme dokunun veya yeniden sıralamak için dokunup basılı tutun"</string>
<string name="remove_contact" msgid="2353580570488923668">"Kaldır"</string>
+ <string name="select_all" msgid="408601760696146245">"Tümünü seç"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Video görüşmesi"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"İleti gönder"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Çağrı ayrıntıları"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Engellenen numaralar"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefon zaten engellendi."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Çağrı hesapları"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Aç"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"İzinleri ayarla"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Hızlı aramayı etkinleştirmek için Kişiler iznini açın."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Çağrı günlüğünüzü görmek için Telefon iznini açın."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Kişilerinizi görmek için Kişiler iznini açın."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Sesli mesajınıza erişmek için Telefon iznini açın."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Kişilerinizde arama yapmak için Kişiler izinlerini açın."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Telefon etmek için Telefon iznini açın."</string>
diff --git a/java/com/android/dialer/app/res/values-uk/strings.xml b/java/com/android/dialer/app/res/values-uk/strings.xml
index 9a790125b..a020a1f1b 100644
--- a/java/com/android/dialer/app/res/values-uk/strings.xml
+++ b/java/com/android/dialer/app/res/values-uk/strings.xml
@@ -87,6 +87,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Повернутися до поточного виклику"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Додати виклик"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Вхідні виклики"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Перехід у режим масових дій"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Ви вийшли з режиму масових дій"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Вибрано користувача <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Скасовано вибір користувача <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Відтворити голосову пошту"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Переглянути контакт <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Набрати <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -101,11 +105,13 @@
<string name="voicemail" msgid="8899540969000957954">"Голосова пошта"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> с"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> хв <xliff:g id="SECONDS">%s</xliff:g> с"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Скасувати режим масових дій"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"голосова пошта"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"голосова пошта"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Так"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ні"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Видалити вибране (<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>)?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Вибрано <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> о <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -118,7 +124,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Завантаж. із SIM-карти…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Контакти SIM-карти"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Немає додатка з контактами"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Голосовий пошук недоступний"</string>
<string name="call_not_available" msgid="7850148370757361155">"Не вдається здійснити дзвінок, оскільки додаток Телефон вимкнено."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Пошук контактів"</string>
@@ -147,10 +152,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"Нових пропущених дзвінків: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Немає номерів для швидкого набору"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Додати номер"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Ще немає контактів"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Додати контакт"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Торкніться зображення, щоб побачити всі номери, або натисніть і утримуйте, щоб змінити порядок."</string>
<string name="remove_contact" msgid="2353580570488923668">"Видалити"</string>
+ <string name="select_all" msgid="408601760696146245">"Вибрати все"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Відеодзвінок"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Надіслати повідомлення"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Деталі виклику"</string>
@@ -217,11 +221,9 @@
<string name="block_list" msgid="4701585783411870782">"Заблоковані номери"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"Номер <xliff:g id="NUMBER">%1$s</xliff:g> уже заблоковано."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Обл. записи для дзвінків"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Увімкнути"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Налаштувати дозволи"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Щоб активувати швидкий набір, увімкніть дозвіл \"Контакти\"."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Щоб переглянути журнал викликів, увімкніть дозвіл \"Телефон\"."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Щоб переглянути контакти, увімкніть дозвіл \"Контакти\"."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Щоб користуватися голосовою поштою, увімкніть дозвіл \"Телефон\"."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Щоб шукати контакти, увімкніть дозвіл \"Контакти\"."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Щоб зателефонувати, увімкніть дозвіл \"Телефон\"."</string>
diff --git a/java/com/android/dialer/app/res/values-ur/strings.xml b/java/com/android/dialer/app/res/values-ur/strings.xml
index 25198711b..d696bd54c 100644
--- a/java/com/android/dialer/app/res/values-ur/strings.xml
+++ b/java/com/android/dialer/app/res/values-ur/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"جاری کال پر واپس لوٹیں"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"کال شامل کریں"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"آنے والی کالیں"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"بلک کاروائی موڈ میں داخل ہو رہا ہے"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"بلک کاروائی موڈ چھوڑ دیا"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"منتخب کردہ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"غیر منتخب کردہ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"صوتی میل چلائیں"</string>
<string name="description_view_contact" msgid="3940984937384372665">"رابطہ <xliff:g id="NAME">%1$s</xliff:g> دیکھیں"</string>
<string name="description_call" msgid="1532402285334775372">"<xliff:g id="NAME">%1$s</xliff:g> کو کال کریں"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"صوتی میل"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> سیکنڈ"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> منٹ <xliff:g id="SECONDS">%s</xliff:g> سیکنڈ"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"بیچ کاروائی موڈ منسوخ کریں"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"صوتی میل"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"صوتی میلز"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ہاں"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"نہیں"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"منتخب کردہ <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> حذف کریں؟"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"<xliff:g id="NUMBER">%1$s</xliff:g> منتخب کردہ"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> بوقت <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"‏SIM کارڈ سے لوڈ ہو رہا ہے…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"‏SIM کارڈ کے رابطے"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"رابطوں کی کوئی ایپ دستیاب نہیں ہے"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"صوتی تلاش دستیاب نہیں ہے"</string>
<string name="call_not_available" msgid="7850148370757361155">"فون کال نہیں کی جا سکتی ہے کیونکہ فون ایپلیکیشن کو غیر فعال کر دیا گیا ہے۔"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"رابطے تلاش کریں"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> نئی چھوٹی ہوئی کالیں"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"آپ کے اسپیڈ ڈائل پر ابھی تک کوئی نہیں ہے"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"ایک پسندیدہ شامل کریں"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"آپ کے پاس ابھی تک کوئی رابطے نہیں ہیں"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"ایک رابطہ شامل کریں"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"سبھی نمبرز دیکھنے کیلئے تصویر ٹچ کریں یا دوبارہ ترتیب دینے کیلئے ٹچ کریں اور پکڑے رہیں"</string>
<string name="remove_contact" msgid="2353580570488923668">"ہٹائیں"</string>
+ <string name="select_all" msgid="408601760696146245">"سبھی کو منتخب کریں"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"ویڈیو کال"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"پیغام بھیجیں"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"کال کی تفصیلات"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"مسدود کردہ نمبرز"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> پہلے ہی مسدود ہے۔"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"کالنگ اکاؤنٹس"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"آن کریں"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"اجازتیں طے کریں"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"اسپیڈ ڈائل کو فعال کرنے کیلئے رابطوں کی اجازت آن کریں۔"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"اپنا کال لاگ دیکھنے کیلئے فون کی اجازت آن کریں۔"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"اپنے رابطے دیکھنے کیلئے رابطوں کی اجازت آن کریں۔"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"اپنی صوتی میل تک رسائی کیلئے فون کی اجازت آن کریں۔"</string>
<string name="permission_no_search" msgid="2424710404207193826">"اپنے رابطوں کو تلاش کرنے کیلئے رابطوں کی اجازتیں آن کریں۔"</string>
<string name="permission_place_call" msgid="8686908130349369423">"کال کرنے کیلئے فون کی اجازت آن کریں۔"</string>
diff --git a/java/com/android/dialer/app/res/values-uz/strings.xml b/java/com/android/dialer/app/res/values-uz/strings.xml
index 705cae765..aa645bf88 100644
--- a/java/com/android/dialer/app/res/values-uz/strings.xml
+++ b/java/com/android/dialer/app/res/values-uz/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Amaldagi chaqiruvga qaytish"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Chaqiruv qo‘shish"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Kiruvchi qo‘ng‘iroqlar"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Yoppasiga bajariladigan amallar rejimiga o‘tilmoqda"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Yoppasiga bajariladigan amallar rejimidan chiqib ketildi"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> tanlandi"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> tanlovi bekor qilindi"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Ovozli xabarni eshitish"</string>
<string name="description_view_contact" msgid="3940984937384372665">"<xliff:g id="NAME">%1$s</xliff:g> kontaktini ko‘rish"</string>
<string name="description_call" msgid="1532402285334775372">"Qo‘ng‘iroq: <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Ovozli pochta"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> soniya"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> daq <xliff:g id="SECONDS">%s</xliff:g> son"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Yoppasiga bajariladigan amallar rejimini bekor qilish"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ovozli xabar"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ovozli xabarlar"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ha"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Yo‘q"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Tanlangan <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> o‘chirib tashlansinmi?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Tanlandi: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"SIM kartadan yuklanmoqda…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM karta kontaktlari"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Hech qanday kontakt ilovasi yo‘q"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Ovozli qidiruv mavjud emas"</string>
<string name="call_not_available" msgid="7850148370757361155">"Telefon ilovasi o‘chirib qo‘yilgani sababli telefon qo‘ng‘iroqlarini amalga oshirib bo‘lmaydi."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Kontaktlar ichidan qidirish"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> ta javobsiz chaqiruv"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Tezkor terish uchun hech kim yo‘q"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Tezkor raqam terishni sozlang"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Sizda hali hech qanday kontakt yo‘q"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Yangi kontakt qo‘shing"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Barcha raqamlarni ko‘rish uchun rasm ustiga bosing yoki joyini o‘zgartirish uchun rasmni bosib turing."</string>
<string name="remove_contact" msgid="2353580570488923668">"O‘chirish"</string>
+ <string name="select_all" msgid="408601760696146245">"Hammasini tanlash"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Video qo‘ng‘iroq"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Xabar yuborish"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Chaqiruv tafsilotlari"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Bloklangan raqamlar"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami allaqachon bloklangan."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Chaqiruv uchun hisoblar"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Yoqish"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Ruxsatnomalarni sozlash"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Tezkor raqam terish uchun “Kontaktlar” ruxsatnomasini yoqing."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Qo‘ng‘iroqlaringiz ro‘yxatini ko‘rish uchun “Telefon” ruxsatnomasini yoqing."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Kontaktlaringizni ko‘rish uchun “Kontaktlar” ruxsatnomasini yoqing."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Ovozli pochtaga kirish uchun “Telefon” ruxsatnomasini yoqing."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Kontaktlarni qidirish uchun “Kontaktlar” ruxsatnomasini yoqing."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Qo‘ng‘iroq qilish uchun “Telefon” ruxsatnomasini yoqing."</string>
diff --git a/java/com/android/dialer/app/res/values-vi/strings.xml b/java/com/android/dialer/app/res/values-vi/strings.xml
index 5a60e0ac3..dda7c1523 100644
--- a/java/com/android/dialer/app/res/values-vi/strings.xml
+++ b/java/com/android/dialer/app/res/values-vi/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Quay lại cuộc gọi đang thực hiện"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Thêm cuộc gọi"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Cuộc gọi đến"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Truy cập chế độ tác vụ hàng loạt"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Đã rời khỏi chế độ tác vụ hàng loạt"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Đã chọn <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Đã bỏ chọn <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Phát thư thoại"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Xem thông tin liên hệ của <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Gọi <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Thư thoại"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> giây"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> phút <xliff:g id="SECONDS">%s</xliff:g> giây"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Hủy chế độ tác vụ hàng loạt"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"thư thoại"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"thư thoại"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Có"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Không"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Xóa <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> đã chọn?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Đã chọn <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> lúc <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Đang tải từ thẻ SIM…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"Danh bạ trên thẻ SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Không có ứng dụng danh bạ"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Không có tính năng tìm kiếm bằng giọng nói"</string>
<string name="call_not_available" msgid="7850148370757361155">"Không thể thực hiện cuộc gọi điện thoại vì ứng dụng Điện thoại đã bị tắt."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Tìm kiếm trong danh bạ"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> cuộc gọi nhỡ mới"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Chưa có ai trong danh bạ quay số nhanh của bạn"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Thêm liên hệ quay số nhanh yêu thích"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Bạn chưa có bất kỳ liên hệ nào"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Thêm liên hệ"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"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="remove_contact" msgid="2353580570488923668">"Xóa"</string>
+ <string name="select_all" msgid="408601760696146245">"Chọn tất cả"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Cuộc gọi điện video"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Gửi tin nhắn"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Chi tiết cuộc gọi"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Số bị chặn"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> đã bị chặn."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Tài khoản gọi"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Bật"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Đặt quyền"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Để bật quay số nhanh, bật quyền đối với Danh bạ."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Để xem nhật ký cuộc gọi của bạn, bật quyền đối với Điện thoại."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Để xem danh bạ của bạn, bật quyền đối với Danh bạ."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Để truy cập thư thoại của bạn, bật quyền đối với Điện thoại."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Để tìm kiếm liên hệ của bạn, hãy bật quyền đối với Danh bạ."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Để thực hiện cuộc gọi, bật quyền đối với Điện thoại."</string>
diff --git a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
index 98abc396a..672614e48 100644
--- a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"返回正在进行的通话"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"添加通话"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"来电"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"正在进入批量操作模式"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"已退出批量操作模式"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"已选择 <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"已取消选择 <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"播放语音邮件"</string>
<string name="description_view_contact" msgid="3940984937384372665">"查看联系人<xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"呼叫<xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"语音信箱"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> 分钟 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"取消批量操作模式"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"语音邮件"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"语音邮件"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"是"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"否"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"要删除所选的<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>吗?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"已选择 <xliff:g id="NUMBER">%1$s</xliff:g> 封"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g><xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"正从 SIM 卡中加载..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM卡联系人"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"没有可用的通讯录应用"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"无法使用语音搜索"</string>
<string name="call_not_available" msgid="7850148370757361155">"“电话”应用已被停用,因此无法拨打电话。"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"搜索联系人"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g>个新的未接电话"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"尚未给任何联系人设定快速拨号"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"添加常用联系人"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"您还没有任何联系人"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"添加联系人"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"触摸图片可查看所有号码,触摸并按住可重新排序"</string>
<string name="remove_contact" msgid="2353580570488923668">"移除"</string>
+ <string name="select_all" msgid="408601760696146245">"全选"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"视频通话"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"发送短信"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"通话详情"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"已屏蔽的号码"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> 已被屏蔽。"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"通话帐号"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"开启"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"设置权限"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"要启用快速拨号功能,请开启“通讯录”权限。"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"要查看您的通话记录,请开启“电话”权限。"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"要查看您的联系人,请开启“通讯录”权限。"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"要使用您的语音信箱,请开启“电话”权限。"</string>
<string name="permission_no_search" msgid="2424710404207193826">"要搜索您的联系人,请开启“通讯录”权限。"</string>
<string name="permission_place_call" msgid="8686908130349369423">"要拨打电话,请开启“电话”权限。"</string>
diff --git a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
index 2a96ce045..f3dc44baf 100644
--- a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"返回進行中的通話"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"新增通話"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"來電"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"正在進入大量操作模式"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"已離開大量操作模式"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"已選取<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"已取消選取<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"播放語音留言"</string>
<string name="description_view_contact" msgid="3940984937384372665">"查看聯絡人<xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"打電話給<xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"留言"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"取消批量操作模式"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"留言"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"留言"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"是"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"否"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"要刪除所選的<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>嗎?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"已選取 <xliff:g id="NUMBER">%1$s</xliff:g> 個"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g><xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"正在從 SIM 卡載入..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM 卡聯絡人"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"沒有可用的聯絡人應用程式"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"無法使用語音搜尋"</string>
<string name="call_not_available" msgid="7850148370757361155">"由於「電話」應用程式已停用,因此無法打電話。"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"搜尋聯絡人"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> 個新的未接來電"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"快速撥號名單中沒有聯絡人"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"新增常用聯絡人"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"暫時沒有聯絡人"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"新增聯絡人"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"輕觸圖片以查看所有電話號碼,或輕觸並按住圖片以重新排序"</string>
<string name="remove_contact" msgid="2353580570488923668">"移除"</string>
+ <string name="select_all" msgid="408601760696146245">"全選"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"視像通話"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"傳送訊息"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"通話詳情"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"已封鎖的號碼"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"已封鎖 <xliff:g id="NUMBER">%1$s</xliff:g>。"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"通話帳戶"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"開放權限"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"設定權限"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"如要啟用快速撥號功能,請開放「通訊錄」權限。"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"如要查看通話記錄,請開放「手機」權限。"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"如要查看聯絡人,請開放「通訊錄」權限。"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"如要存取留言信箱,請開放「手機」權限。"</string>
<string name="permission_no_search" msgid="2424710404207193826">"如要搜尋聯絡人,請開啟「通訊錄」權限。"</string>
<string name="permission_place_call" msgid="8686908130349369423">"如要撥打電話,請開放「手機」權限。"</string>
diff --git a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
index 917452133..473955c5d 100644
--- a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"返回進行中的通話"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"新增通話"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"來電"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"已進入大量操作模式"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"已離開大量操作模式"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"已選取:<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"已取消選取:<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"播放語音留言"</string>
<string name="description_view_contact" msgid="3940984937384372665">"查看聯絡人<xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"撥電話給<xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"語音留言"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"取消批次操作模式"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"語音留言"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"語音留言"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"是"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"否"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"要刪除選取的<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>嗎?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"已選取 <xliff:g id="NUMBER">%1$s</xliff:g> 個"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g><xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"從 SIM 卡讀取中…"</string>
<string name="simContacts_title" msgid="7961069730386378887">"SIM 卡聯絡人"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"沒有可用的聯絡人應用程式"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"無法使用語音搜尋"</string>
<string name="call_not_available" msgid="7850148370757361155">"「電話」應用程式已遭停用,因此無法撥打電話。"</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"搜尋聯絡人"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> 通新的未接來電"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"您的快速撥號功能尚未設定任何聯絡人"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"新增常用聯絡人"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"您尚未加入任何聯絡人"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"新增聯絡人"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"輕觸圖片即可查看所有號碼,按住則可重新排序"</string>
<string name="remove_contact" msgid="2353580570488923668">"移除"</string>
+ <string name="select_all" msgid="408601760696146245">"全選"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"視訊通話"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"傳送簡訊"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"通話詳細資料"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"已封鎖的號碼"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> 已在封鎖清單中。"</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"通話帳戶"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"開啟"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"設定權限"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"如要啟用快速撥號,請開啟「聯絡人」存取權限。"</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"如要查看您的通話紀錄,請開啟「電話」存取權限。"</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"如要查看您的聯絡人,請開啟「聯絡人」存取權限。"</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"如要存取您的語音信箱,請開啟「電話」存取權限。"</string>
<string name="permission_no_search" msgid="2424710404207193826">"如要搜尋您的聯絡人,請開啟「聯絡人」存取權限。"</string>
<string name="permission_place_call" msgid="8686908130349369423">"如要撥打電話,請開啟「電話」存取權限。"</string>
diff --git a/java/com/android/dialer/app/res/values-zu/strings.xml b/java/com/android/dialer/app/res/values-zu/strings.xml
index 9c8a6b8e1..93843aa2c 100644
--- a/java/com/android/dialer/app/res/values-zu/strings.xml
+++ b/java/com/android/dialer/app/res/values-zu/strings.xml
@@ -85,6 +85,10 @@
<string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Buyela kukholi eqhubekayo"</string>
<string name="dialer_addAnotherCall" msgid="3132945651710234674">"Yengeza ikholi"</string>
<string name="actionIncomingCall" msgid="891346596090030558">"Amakholi angenayo"</string>
+ <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Kungenwa kumodi yesenzo senqwaba"</string>
+ <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Ishiye imodi yesenzo senqwaba"</string>
+ <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Kukhethwe i-<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+ <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Akukhethiwe i-<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
<string name="description_call_log_play_button" msgid="2349845005022431438">"Dlala i-imeyli yezwi"</string>
<string name="description_view_contact" msgid="3940984937384372665">"Bheka oxhumana naye <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="description_call" msgid="1532402285334775372">"Shayela <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -99,11 +103,13 @@
<string name="voicemail" msgid="8899540969000957954">"Ivoyisimeyili"</string>
<string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> isekhondi"</string>
<string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> amaminithi <xliff:g id="SECONDS">%s</xliff:g> amasekhondi"</string>
+ <string name="description_cancel_multi_select" msgid="3930475950253360461">"Khansela imodi lezenzo zeqoqo"</string>
<string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ivoyisimeyili"</string>
<string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ama-meyli ezwi"</string>
<string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Yebo"</string>
<string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Cha"</string>
<string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Susa okukhethiwe <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
+ <string name="voicemailMultiSelectActionBarTitle" msgid="5840745438559612431">"Engu-<xliff:g id="NUMBER">%1$s</xliff:g> ekhethiwe"</string>
<string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
<string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ngo-<xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -116,7 +122,6 @@
<string name="meid" msgid="3333779521535224028">"I-MEID"</string>
<string name="simContacts_emptyLoading" msgid="6205424276735652071">"Ilayisha kusuka ekhadini le-SIM..."</string>
<string name="simContacts_title" msgid="7961069730386378887">"Othintana nabo bekhadi le-SIM"</string>
- <string name="add_contact_not_available" msgid="7065884447935173347">"Alukho uhlelo lokusebenza loxhumana nabo olutholakalayo"</string>
<string name="voice_search_not_available" msgid="6546240433719732905">"Usesho lwezwi alutholakali"</string>
<string name="call_not_available" msgid="7850148370757361155">"Ayikwazi ukwenza ikholi yefoni ngoba uhlelo lokusebenza lwefoni likhutshaziwe."</string>
<string name="dialer_hint_find_contact" msgid="2023214799381149808">"Sesha othintana nabo"</string>
@@ -145,10 +150,9 @@
<string name="num_missed_calls" msgid="5171791753696317082">"<xliff:g id="NUMBER">%s</xliff:g> amakholi amasha owaphuthelwe"</string>
<string name="speed_dial_empty" msgid="3346406399966039505">"Akekho umuntu osekudayeleni kwakho okusheshayo okwamanje"</string>
<string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Engeza intandokazi"</string>
- <string name="all_contacts_empty" msgid="243071567853617177">"Awunabo oxhumana nabo okwamanje"</string>
- <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Engeza oxhumana naye"</string>
<string name="contact_tooltip" msgid="8871614660967439999">"Thinta isithombe ukuze ubone zonke izinombolo noma thinta bese ubambe ukuze uhlele kabusha"</string>
<string name="remove_contact" msgid="2353580570488923668">"Susa"</string>
+ <string name="select_all" msgid="408601760696146245">"Khetha konke"</string>
<string name="call_log_action_video_call" msgid="7565549950343850819">"Ikholi yevidiyo"</string>
<string name="call_log_action_send_message" msgid="6948727362660115554">"Thumela umlayezo"</string>
<string name="call_log_action_details" msgid="2091370737371449501">"Imininingwane yekholi"</string>
@@ -213,11 +217,9 @@
<string name="block_list" msgid="4701585783411870782">"Izinombolo ezivinjiwe"</string>
<string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> isivinjiwe kakade."</string>
<string name="phone_account_settings_label" msgid="8372485478006965920">"Ama-akhawunti wokushaya"</string>
- <string name="permission_single_turn_on" msgid="8014796118294187894">"Vula"</string>
<string name="permission_multiple_turn_on" msgid="5679888820253829400">"Setha izimvume"</string>
<string name="permission_no_speeddial" msgid="8487215628510596753">"Nika amandla ukudayela okusheshayo, vula imvume yoxhumana nabo."</string>
<string name="permission_no_calllog" msgid="4053705651238775784">"Ukuze ubone irekhodi lakho lamakholi, vuma imvume yefoni."</string>
- <string name="permission_no_contacts" msgid="8995025765862026771">"Ukuze ubone oxhumana nabo, vula imvume yoxhumana nabo."</string>
<string name="permission_no_voicemail" msgid="1908142679289209291">"Ukuze ufinyelele ivoyisimeyili, vula imvume yefoni."</string>
<string name="permission_no_search" msgid="2424710404207193826">"Ukuze useshe oxhumana nabo, vula izimvume zoxhumana nabo."</string>
<string name="permission_place_call" msgid="8686908130349369423">"Ukuze ubeke ikholi, vula imvume yefoni."</string>
diff --git a/java/com/android/dialer/app/res/values/colors.xml b/java/com/android/dialer/app/res/values/colors.xml
index cf6b926be..2f6d87b49 100644
--- a/java/com/android/dialer/app/res/values/colors.xml
+++ b/java/com/android/dialer/app/res/values/colors.xml
@@ -52,8 +52,6 @@
<!-- Colour of voicemail progress bar to the left of position indicator. -->
<color name="voicemail_playback_seek_bar_already_played">@color/dialer_theme_color</color>
- <!-- Background color of new dialer activity -->
- <color name="background_dialer_light">#fafafa</color>
<!-- Background color for search results and call details -->
<color name="background_dialer_results">#f9f9f9</color>
<color name="background_dialer_call_log">@color/background_dialer_light</color>
@@ -69,8 +67,6 @@
<!-- Undo dialogue color -->
<color name="undo_dialogue_text_color">#4d4d4d</color>
- <color name="empty_list_text_color">#b2b2b2</color>
-
<color name="remove_text_color">#ffffff</color>
<!-- Text color for the "Remove" text when a contact is dragged on top of the remove view -->
diff --git a/java/com/android/dialer/app/res/values/dimens.xml b/java/com/android/dialer/app/res/values/dimens.xml
index 7da29c7a3..57c43ebbd 100644
--- a/java/com/android/dialer/app/res/values/dimens.xml
+++ b/java/com/android/dialer/app/res/values/dimens.xml
@@ -105,9 +105,6 @@
<!-- Length of dialpad's shadows in dialer. -->
<dimen name="shadow_length">10dp</dimen>
- <dimen name="empty_list_message_top_padding">20dp</dimen>
- <dimen name="empty_list_message_text_size">16sp</dimen>
-
<!-- Dimensions for individual preference cards -->
<dimen name="preference_padding_top">16dp</dimen>
<dimen name="preference_padding_bottom">16dp</dimen>
diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml
index 9e1fdeb5a..6110601d8 100644
--- a/java/com/android/dialer/app/res/values/strings.xml
+++ b/java/com/android/dialer/app/res/values/strings.xml
@@ -279,6 +279,34 @@
<!-- Description for incoming calls going to voice mail vs. not -->
<string name="actionIncomingCall">Incoming calls</string>
+ <!-- String describing the user entering bulk action mode.
+
+ Note: AccessibilityServices use this attribute to announce what the view represents.
+ This is especially valuable for views without textual representation like ImageView.
+-->
+ <string name="description_entering_bulk_action_mode">Entering bulk action mode</string>
+
+ <!-- String describing the user leaving bulk action mode.
+
+ Note: AccessibilityServices use this attribute to announce what the view represents.
+ This is especially valuable for views without textual representation like ImageView.
+-->
+ <string name="description_leaving_bulk_action_mode">Left bulk action mode</string>
+
+ <!-- String describing the button to select an entry for bulk action.
+
+ Note: AccessibilityServices use this attribute to announce what the view represents.
+ This is especially valuable for views without textual representation like ImageView.
+ -->
+ <string name="description_selecting_bulk_action_mode">Selected <xliff:g id="nameOrNumber">%1$s</xliff:g></string>
+
+ <!-- String describing the button to unselect an entry for bulk action.
+
+ Note: AccessibilityServices use this attribute to announce what the view represents.
+ This is especially valuable for views without textual representation like ImageView.
+ -->
+ <string name="description_unselecting_bulk_action_mode">Unselected <xliff:g id="nameOrNumber">%1$s</xliff:g></string>
+
<!-- String describing the icon in the call log used to play a voicemail.
Note: AccessibilityServices use this attribute to announce what the view represents.
@@ -362,12 +390,19 @@
<!-- A nicely formatted call duration displayed when viewing call details. For example "42 min 28 sec" -->
<string name="callDetailsDurationFormat"><xliff:g example="42" id="minutes">%s</xliff:g> min <xliff:g example="28" id="seconds">%s</xliff:g> sec</string>
+ <!-- String describing the cancel button in multi select.
+ Note: AccessibilityServices uses this attribute to announce what the view represents.
+ [CHAR LIMIT=NONE] -->
+ <string name="description_cancel_multi_select">Cancel batch actions mode</string>
+
<string name="voicemailMultiSelectVoicemail">voicemail</string>
<string name="voicemailMultiSelectVoicemails">voicemails</string>
<string name="voicemailMultiSelectDeleteConfirm">Yes</string>
<string name="voicemailMultiSelectDeleteCancel">No</string>
<string name="voicemailMultiSelectDialogTitle">Delete selected <xliff:g id="voicemailorvoicemails">%1$s</xliff:g>?</string>
+ <string name="voicemailMultiSelectActionBarTitle"><xliff:g id="number">%1$s</xliff:g> selected</string>
+
<!-- The string 'Today'. This value is used in the voicemailCallLogDateTimeFormat rather than an
explicit date string, e.g. Jul 25, 2014, in the event that a voicemail was created on the
current day -->
@@ -411,9 +446,6 @@
<!-- Dialog title displayed when loading a phone number from the SIM card for speed dial -->
<string name="simContacts_title">SIM card contacts</string>
- <!-- Message displayed when there is no application available to handle the add contact menu option. [CHAR LIMIT=NONE] -->
- <string name="add_contact_not_available">No contacts app available</string>
-
<!-- Message displayed when there is no application available to handle voice search. [CHAR LIMIT=NONE] -->
<string name="voice_search_not_available">Voice search not available</string>
@@ -514,12 +546,6 @@
<!-- Shown as an action when there are no speed dial favorites -->
<string name="speed_dial_empty_add_favorite_action">Add a favorite</string>
- <!-- Shown when there are no contacts in the all contacts list. -->
- <string name="all_contacts_empty">You don\'t have any contacts yet</string>
-
- <!-- Shown as an action when the all contacts list is empty -->
- <string name="all_contacts_empty_add_contact_action">Add a contact</string>
-
<!-- Shows up as a tooltip to provide a hint to the user that the profile pic in a contact
card can be tapped to bring up a list of all numbers, or long pressed to start reordering
[CHAR LIMIT=NONE]
@@ -529,6 +555,9 @@
<!-- Remove button that shows up when contact is long-pressed. [CHAR LIMIT=NONE] -->
<string name="remove_contact">Remove</string>
+ <!-- Select all text that shows up when in multi select mode. [CHAR LIMIT=NONE] -->
+ <string name="select_all">Select all</string>
+
<!-- Button text for the "video call" displayed underneath an entry in the call log.
Tapping causes a video call to be placed to the caller represented by the call log entry.
[CHAR LIMIT=30] -->
@@ -554,7 +583,7 @@
Call <xliff:g example="John Smith" id="nameOrNumber">^1</xliff:g>
</string>
- <!-- String describing an incoming missed call entry in the call log.
+ <!-- String describing an incoming missed call entry in the call log.
Note: AccessibilityServices uses this attribute to announce what the view represents.
[CHAR LIMIT=NONE] -->
<string name="description_incoming_missed_call">Missed call from <xliff:g example="John Smith" id="nameOrNumber">^1</xliff:g>, <xliff:g example="Mobile" id="typeOrLocation">^2</xliff:g>, <xliff:g example="2 min ago" id="timeOfCall">^3</xliff:g>, <xliff:g example="on SIM 1" id="phoneAccount">^4</xliff:g>.</string>
@@ -841,9 +870,6 @@
<!-- Internal key for DTMF tone length preference. -->
<string name="dtmf_tone_length_preference_key" translatable="false">button_dtmf_settings</string>
- <!-- The label of the button used to turn on a single permission [CHAR LIMIT=30]-->
- <string name="permission_single_turn_on">Turn on</string>
-
<!-- The label of the button used to turn on multiple permissions [CHAR LIMIT=30]-->
<string name="permission_multiple_turn_on">Set permissions</string>
@@ -853,9 +879,6 @@
<!-- Shown as a prompt to turn on the phone permission to enable the call log [CHAR LIMIT=NONE]-->
<string name="permission_no_calllog">To see your call log, turn on the Phone permission.</string>
- <!-- Shown as a prompt to turn on the contacts permission to show all contacts [CHAR LIMIT=NONE]-->
- <string name="permission_no_contacts">To see your contacts, turn on the Contacts permission.</string>
-
<!-- Shown as a prompt to turn on the phone permission to show voicemails [CHAR LIMIT=NONE]-->
<string name="permission_no_voicemail">To access your voicemail, turn on the Phone permission.</string>
diff --git a/java/com/android/dialer/app/res/values/styles.xml b/java/com/android/dialer/app/res/values/styles.xml
index 7adf7ca2c..592f06d29 100644
--- a/java/com/android/dialer/app/res/values/styles.xml
+++ b/java/com/android/dialer/app/res/values/styles.xml
@@ -25,13 +25,15 @@
<item name="windowActionModeOverlay">true</item>
<item name="android:actionBarStyle">@style/DialtactsActionBarStyle</item>
<item name="actionBarStyle">@style/DialtactsActionBarStyle</item>
+ <item name="actionModeStyle">@style/ActionModeStyle</item>
+ <item name="android:actionModeStyle">@style/ActionModeStyle</item>
+
<item name="android:windowContentOverlay">@null</item>
<item name="android:overlapAnchor">true</item>
- <item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
+ <item name="android:homeAsUpIndicator">@drawable/quantum_ic_arrow_back_vd_theme_24</item>
<item name="android:listViewStyle">@style/ListViewStyle</item>
- <item name="section_header_background">@drawable/list_title_holo</item>
<item name="list_section_header_height">32dip</item>
<item name="list_item_padding_top">7dp</item>
<item name="list_item_padding_right">24dp</item>
@@ -66,7 +68,7 @@
<item name="android:textAppearanceButton">@style/DialerButtonTextStyle</item>
<!-- Video call icon -->
- <item name="list_item_video_call_icon_size">32dip</item>
+ <item name="list_item_video_call_icon_size">48dip</item>
<item name="list_item_video_call_icon_margin">8dip</item>
<item name="dialpad_style">@style/Dialpad.Light</item>
@@ -129,6 +131,12 @@
<item name="contentInsetStart">@dimen/actionbar_contentInsetStart</item>
</style>
+ <style name="ActionModeStyle" parent="Widget.AppCompat.ActionMode">
+ <item name="android:background">@color/actionbar_background_color</item>
+ <item name="background">@color/actionbar_background_color</item>
+ <item name="closeItemLayout">@layout/action_mode_close_button</item>
+ </style>
+
<style name="DialtactsActionBarWithoutTitleStyle" parent="DialtactsActionBarStyle">
<!-- Styles that require AppCompat compatibility, remember to update both sets -->
<item name="android:displayOptions"></item>
diff --git a/java/com/android/dialer/app/res/xml/sound_settings.xml b/java/com/android/dialer/app/res/xml/sound_settings.xml
index 796ed2ec1..d9afb7411 100644
--- a/java/com/android/dialer/app/res/xml/sound_settings.xml
+++ b/java/com/android/dialer/app/res/xml/sound_settings.xml
@@ -25,13 +25,13 @@
android:ringtoneType="ringtone"
android:title="@string/ringtone_title"/>
- <CheckBoxPreference
+ <SwitchPreference
android:defaultValue="false"
android:key="@string/vibrate_on_preference_key"
android:persistent="false"
android:title="@string/vibrate_on_ring_title"/>
- <CheckBoxPreference
+ <SwitchPreference
android:defaultValue="true"
android:key="@string/play_dtmf_preference_key"
android:persistent="false"
diff --git a/java/com/android/dialer/app/settings/AppCompatPreferenceActivity.java b/java/com/android/dialer/app/settings/AppCompatPreferenceActivity.java
index 2c464386b..e8e425626 100644
--- a/java/com/android/dialer/app/settings/AppCompatPreferenceActivity.java
+++ b/java/com/android/dialer/app/settings/AppCompatPreferenceActivity.java
@@ -18,7 +18,6 @@ package com.android.dialer.app.settings;
import android.content.res.Configuration;
import android.os.Bundle;
import android.preference.PreferenceActivity;
-import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.Toolbar;
import android.view.MenuInflater;
@@ -49,10 +48,6 @@ public class AppCompatPreferenceActivity extends PreferenceActivity {
getDelegate().onPostCreate(savedInstanceState);
}
- public ActionBar getSupportActionBar() {
- return getDelegate().getSupportActionBar();
- }
-
public void setSupportActionBar(Toolbar toolbar) {
getDelegate().setSupportActionBar(toolbar);
}
diff --git a/java/com/android/dialer/app/settings/DialerSettingsActivity.java b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
index f1c270ca9..6036c85ce 100644
--- a/java/com/android/dialer/app/settings/DialerSettingsActivity.java
+++ b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
@@ -36,7 +36,6 @@ import com.android.dialer.about.AboutPhoneFragment;
import com.android.dialer.app.R;
import com.android.dialer.blocking.FilteredNumberCompat;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.CompatUtils;
import com.android.dialer.proguard.UsedByReflection;
import com.android.voicemail.VoicemailClient;
import com.android.voicemail.VoicemailComponent;
@@ -83,14 +82,12 @@ public class DialerSettingsActivity extends AppCompatPreferenceActivity {
soundSettingsHeader.id = R.id.settings_header_sounds_and_vibration;
target.add(soundSettingsHeader);
- if (CompatUtils.isMarshmallowCompatible()) {
- 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);
- }
+ 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);
diff --git a/java/com/android/dialer/app/settings/SoundSettingsFragment.java b/java/com/android/dialer/app/settings/SoundSettingsFragment.java
index 83ce45398..dcfb7a595 100644
--- a/java/com/android/dialer/app/settings/SoundSettingsFragment.java
+++ b/java/com/android/dialer/app/settings/SoundSettingsFragment.java
@@ -23,11 +23,11 @@ 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.preference.SwitchPreference;
import android.provider.Settings;
import android.telephony.CarrierConfigManager;
import android.telephony.TelephonyManager;
@@ -68,8 +68,8 @@ public class SoundSettingsFragment extends PreferenceFragment
updateRingtonePreferenceSummary();
}
};
- private CheckBoxPreference mVibrateWhenRinging;
- private CheckBoxPreference mPlayDtmfTone;
+ private SwitchPreference mVibrateWhenRinging;
+ private SwitchPreference mPlayDtmfTone;
private ListPreference mDtmfToneLength;
@Override
@@ -87,9 +87,9 @@ public class SoundSettingsFragment extends PreferenceFragment
mRingtonePreference = findPreference(context.getString(R.string.ringtone_preference_key));
mVibrateWhenRinging =
- (CheckBoxPreference) findPreference(context.getString(R.string.vibrate_on_preference_key));
+ (SwitchPreference) findPreference(context.getString(R.string.vibrate_on_preference_key));
mPlayDtmfTone =
- (CheckBoxPreference) findPreference(context.getString(R.string.play_dtmf_preference_key));
+ (SwitchPreference) findPreference(context.getString(R.string.play_dtmf_preference_key));
mDtmfToneLength =
(ListPreference)
findPreference(context.getString(R.string.dtmf_tone_length_preference_key));
diff --git a/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
index 9d07ec561..ffbae71f2 100644
--- a/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
+++ b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
@@ -43,6 +43,15 @@ public class LegacyVoicemailNotificationReceiver extends BroadcastReceiver {
private static final String LEGACY_VOICEMAIL_COUNT = "legacy_voicemail_count";
+ /**
+ * Hidden extra for {@link TelephonyManager#ACTION_SHOW_VOICEMAIL_NOTIFICATION} for whether the
+ * notification is just a refresh or for a new voicemail. The phone should not play a ringtone or
+ * vibrate during a refresh if the notification is already showing.
+ *
+ * <p>TODO(b/62202833): make public
+ */
+ private static final String EXTRA_IS_REFRESH = "is_refresh";
+
@Override
public void onReceive(Context context, Intent intent) {
LogUtil.i(
@@ -51,7 +60,6 @@ public class LegacyVoicemailNotificationReceiver extends BroadcastReceiver {
PhoneAccountHandle phoneAccountHandle =
Assert.isNotNull(intent.getParcelableExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE));
-
int count = intent.getIntExtra(TelephonyManager.EXTRA_NOTIFICATION_COUNT, -1);
if (!hasVoicemailCountChanged(context, phoneAccountHandle, count)) {
@@ -97,7 +105,8 @@ public class LegacyVoicemailNotificationReceiver extends BroadcastReceiver {
count,
voicemailNumber,
callVoicemailIntent,
- voicemailSettingIntent);
+ voicemailSettingIntent,
+ intent.getBooleanExtra(EXTRA_IS_REFRESH, false));
}
private static boolean hasVoicemailCountChanged(
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
index ea48c8321..686e3e8c4 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
@@ -548,7 +548,9 @@ public class VoicemailPlaybackPresenter
mView.setClipPosition(mPosition, mDuration.get());
mView.enableUiElements();
mView.setSuccess();
- mMediaPlayer.seekTo(mPosition);
+ if (!mp.isPlaying()) {
+ mMediaPlayer.seekTo(mPosition);
+ }
if (mIsPlaying) {
resumePlayback();
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml
index bc9c46331..fb1b18621 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml
@@ -55,7 +55,7 @@
<string name="voicemail_action_set_pin" msgid="958510049866316228">"पिन सेट करें"</string>
<string name="voicemail_action_retry" msgid="4450307484541052511">"पुन: प्रयास करें"</string>
<string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"चालू करें"</string>
- <string name="voicemail_action_dimiss" msgid="6018415798136796966">"नहीं धन्यवाद"</string>
+ <string name="voicemail_action_dimiss" msgid="6018415798136796966">"रहने दें"</string>
<string name="voicemail_action_sync" msgid="5139315923415392787">"समन्वयित करें"</string>
<string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"वॉइसमेल को कॉल करें"</string>
<string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"ग्राहक सहायता को कॉल करें"</string>
diff --git a/java/com/android/dialer/app/widget/DialpadSearchEmptyContentView.java b/java/com/android/dialer/app/widget/DialpadSearchEmptyContentView.java
index 85fd5ec6a..5846b1f73 100644
--- a/java/com/android/dialer/app/widget/DialpadSearchEmptyContentView.java
+++ b/java/com/android/dialer/app/widget/DialpadSearchEmptyContentView.java
@@ -21,6 +21,7 @@ import android.view.LayoutInflater;
import android.widget.LinearLayout;
import com.android.dialer.app.R;
import com.android.dialer.util.OrientationUtil;
+import com.android.dialer.widget.EmptyContentView;
/** Empty content view to be shown when dialpad is visible. */
public class DialpadSearchEmptyContentView extends EmptyContentView {
diff --git a/java/com/android/dialer/app/widget/SearchEditTextLayout.java b/java/com/android/dialer/app/widget/SearchEditTextLayout.java
index f83c48288..d67fd9eff 100644
--- a/java/com/android/dialer/app/widget/SearchEditTextLayout.java
+++ b/java/com/android/dialer/app/widget/SearchEditTextLayout.java
@@ -52,7 +52,6 @@ public class SearchEditTextLayout extends FrameLayout {
private View mVoiceSearchButtonView;
private View mOverflowButtonView;
private View mBackButtonView;
- private View mExpandedSearchBox;
private View mClearButtonView;
private ValueAnimator mAnimator;
@@ -90,20 +89,27 @@ public class SearchEditTextLayout extends FrameLayout {
mVoiceSearchButtonView = findViewById(R.id.voice_search_button);
mOverflowButtonView = findViewById(R.id.dialtacts_options_menu_button);
mBackButtonView = findViewById(R.id.search_back_button);
- mExpandedSearchBox = findViewById(R.id.search_box_expanded);
+ mBackButtonView
+ .getResources()
+ .getDrawable(R.drawable.quantum_ic_arrow_back_vd_theme_24)
+ .setAutoMirrored(true);
mClearButtonView = findViewById(R.id.search_close_button);
- // Convert a long click into a click to expand the search box, and then long click on the
- // search view. This accelerates the long-press scenario for copy/paste.
+ // Convert a long click into a click to expand the search box. Touch events are also
+ // forwarded to the searchView. This accelerates the long-press scenario for copy/paste.
mCollapsed.setOnLongClickListener(
new OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
mCollapsed.performClick();
- mSearchView.performLongClick();
return false;
}
});
+ mCollapsed.setOnTouchListener(
+ (v, event) -> {
+ mSearchView.onTouchEvent(event);
+ return false;
+ });
mSearchView.setOnFocusChangeListener(
new OnFocusChangeListener() {
@@ -212,7 +218,7 @@ public class SearchEditTextLayout extends FrameLayout {
AnimUtils.crossFadeViews(mExpanded, mCollapsed, ANIMATION_DURATION);
mAnimator = ValueAnimator.ofFloat(EXPAND_MARGIN_FRACTION_START, 0f);
setMargins(EXPAND_MARGIN_FRACTION_START);
- prepareAnimator(true);
+ prepareAnimator();
} else {
mExpanded.setVisibility(View.VISIBLE);
mExpanded.setAlpha(1);
@@ -241,7 +247,7 @@ public class SearchEditTextLayout extends FrameLayout {
if (animate) {
AnimUtils.crossFadeViews(mCollapsed, mExpanded, ANIMATION_DURATION);
mAnimator = ValueAnimator.ofFloat(0f, 1f);
- prepareAnimator(false);
+ prepareAnimator();
} else {
mCollapsed.setVisibility(View.VISIBLE);
mCollapsed.setAlpha(1);
@@ -279,7 +285,7 @@ public class SearchEditTextLayout extends FrameLayout {
}
}
- private void prepareAnimator(final boolean expand) {
+ private void prepareAnimator() {
if (mAnimator != null) {
mAnimator.cancel();
}
diff --git a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
index 595401c70..bc0b39bb8 100644
--- a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
+++ b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
@@ -18,6 +18,7 @@ package com.android.dialer.binary.aosp;
import com.android.dialer.binary.basecomponent.BaseDialerRootComponent;
import com.android.dialer.calllog.CallLogModule;
+import com.android.dialer.common.concurrent.DialerExecutorModule;
import com.android.dialer.enrichedcall.stub.StubEnrichedCallModule;
import com.android.dialer.inject.ContextModule;
import com.android.dialer.lightbringer.stub.StubLightbringerModule;
@@ -34,6 +35,7 @@ import javax.inject.Singleton;
modules = {
CallLogModule.class,
ContextModule.class,
+ DialerExecutorModule.class,
SimulatorModule.class,
StubCallLocationModule.class,
StubEnrichedCallModule.class,
diff --git a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
index 2deb7fdc4..6e6ae4b6c 100644
--- a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
+++ b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
@@ -17,6 +17,8 @@
package com.android.dialer.binary.basecomponent;
import com.android.dialer.calllog.CallLogComponent;
+import com.android.dialer.calllog.database.CallLogDatabaseComponent;
+import com.android.dialer.common.concurrent.DialerExecutorComponent;
import com.android.dialer.enrichedcall.EnrichedCallComponent;
import com.android.dialer.lightbringer.LightbringerComponent;
import com.android.dialer.simulator.SimulatorComponent;
@@ -31,6 +33,8 @@ import com.android.voicemail.VoicemailComponent;
public interface BaseDialerRootComponent
extends CallLocationComponent.HasComponent,
CallLogComponent.HasComponent,
+ CallLogDatabaseComponent.HasComponent,
+ DialerExecutorComponent.HasComponent,
EnrichedCallComponent.HasComponent,
MapsComponent.HasComponent,
SimulatorComponent.HasComponent,
diff --git a/java/com/android/dialer/binary/common/DialerApplication.java b/java/com/android/dialer/binary/common/DialerApplication.java
index a4c2e7d6f..5037883ee 100644
--- a/java/com/android/dialer/binary/common/DialerApplication.java
+++ b/java/com/android/dialer/binary/common/DialerApplication.java
@@ -55,8 +55,9 @@ public abstract class DialerApplication extends Application implements HasRootCo
private void enableStrictMode() {
StrictMode.setThreadPolicy(
- new StrictMode.ThreadPolicy.Builder().detectAll().penaltyDeath().build());
- StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyDeath().build());
+ new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().penaltyDeath().build());
+ StrictMode.setVmPolicy(
+ new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().penaltyDeath().build());
}
/**
diff --git a/java/com/android/dialer/callcomposer/AndroidManifest.xml b/java/com/android/dialer/callcomposer/AndroidManifest.xml
index 369db6f4a..cce71105f 100644
--- a/java/com/android/dialer/callcomposer/AndroidManifest.xml
+++ b/java/com/android/dialer/callcomposer/AndroidManifest.xml
@@ -17,7 +17,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.dialer.callcomposer">
- <application>
+ <application android:theme="@style/Theme.AppCompat">
<activity
android:name="com.android.dialer.callcomposer.CallComposerActivity"
android:exported="true"
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
index 074fc6de1..bc20c7314 100644
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java
@@ -37,10 +37,8 @@ import android.text.TextUtils;
import android.util.Base64;
import android.view.View;
import android.view.View.OnClickListener;
-import android.view.View.OnLayoutChangeListener;
import android.view.ViewAnimationUtils;
import android.view.ViewGroup;
-import android.view.WindowManager.LayoutParams;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -56,6 +54,7 @@ import com.android.dialer.common.LogUtil;
import com.android.dialer.common.UiUtil;
import com.android.dialer.common.concurrent.DialerExecutors;
import com.android.dialer.constants.Constants;
+import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.enrichedcall.EnrichedCallComponent;
import com.android.dialer.enrichedcall.EnrichedCallManager;
import com.android.dialer.enrichedcall.EnrichedCallManager.State;
@@ -86,7 +85,6 @@ public class CallComposerActivity extends AppCompatActivity
implements OnClickListener,
OnPageChangeListener,
CallComposerListener,
- OnLayoutChangeListener,
EnrichedCallManager.StateChangedListener {
public static final String KEY_CONTACT_NAME = "contact_name";
@@ -102,7 +100,7 @@ public class CallComposerActivity extends AppCompatActivity
private static final String VIEW_PAGER_STATE_KEY = "view_pager_state_key";
private static final String SESSION_ID_KEY = "session_id_key";
- private CallComposerContact contact;
+ private DialerContact contact;
private Long sessionId = Session.NO_SESSION_ID;
private TextView nameView;
@@ -126,10 +124,9 @@ public class CallComposerActivity extends AppCompatActivity
private boolean shouldAnimateEntrance = true;
private boolean inFullscreenMode;
private boolean isSendAndCallHidingOrHidden = true;
- private boolean layoutChanged;
private int currentIndex;
- public static Intent newIntent(Context context, CallComposerContact contact) {
+ public static Intent newIntent(Context context, DialerContact contact) {
Intent intent = new Intent(context, CallComposerActivity.class);
ProtoParsers.put(intent, ARG_CALL_COMPOSER_CONTACT, contact);
return intent;
@@ -140,19 +137,19 @@ public class CallComposerActivity extends AppCompatActivity
super.onCreate(savedInstanceState);
setContentView(R.layout.call_composer_activity);
- nameView = (TextView) findViewById(R.id.contact_name);
- numberView = (TextView) findViewById(R.id.phone_number);
- contactPhoto = (QuickContactBadge) findViewById(R.id.contact_photo);
- cameraIcon = (ImageView) findViewById(R.id.call_composer_camera);
- galleryIcon = (ImageView) findViewById(R.id.call_composer_photo);
- messageIcon = (ImageView) findViewById(R.id.call_composer_message);
- contactContainer = (RelativeLayout) findViewById(R.id.contact_bar);
- pager = (ViewPager) findViewById(R.id.call_composer_view_pager);
- background = (FrameLayout) findViewById(R.id.background);
- windowContainer = (LinearLayout) findViewById(R.id.call_composer_container);
- toolbar = (DialerToolbar) findViewById(R.id.toolbar);
+ nameView = findViewById(R.id.contact_name);
+ numberView = findViewById(R.id.phone_number);
+ contactPhoto = findViewById(R.id.contact_photo);
+ cameraIcon = findViewById(R.id.call_composer_camera);
+ galleryIcon = findViewById(R.id.call_composer_photo);
+ messageIcon = findViewById(R.id.call_composer_message);
+ contactContainer = findViewById(R.id.contact_bar);
+ pager = findViewById(R.id.call_composer_view_pager);
+ background = findViewById(R.id.background);
+ windowContainer = findViewById(R.id.call_composer_container);
+ toolbar = findViewById(R.id.toolbar);
sendAndCall = findViewById(R.id.send_and_call_button);
- sendAndCallText = (TextView) findViewById(R.id.send_and_call_text);
+ sendAndCallText = findViewById(R.id.send_and_call_text);
interpolator = new FastOutSlowInInterpolator();
adapter =
@@ -162,7 +159,6 @@ public class CallComposerActivity extends AppCompatActivity
pager.setAdapter(adapter);
pager.addOnPageChangeListener(this);
- background.addOnLayoutChangeListener(this);
cameraIcon.setOnClickListener(this);
galleryIcon.setOnClickListener(this);
messageIcon.setOnClickListener(this);
@@ -178,11 +174,6 @@ public class CallComposerActivity extends AppCompatActivity
onPageSelected(currentIndex);
}
- int adjustMode =
- isLandscapeLayout()
- ? LayoutParams.SOFT_INPUT_ADJUST_PAN
- : LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
- getWindow().setSoftInputMode(adjustMode);
// Since we can't animate the views until they are ready to be drawn, we use this listener to
// track that and animate the call compose UI as soon as it's ready.
ViewUtil.doOnPreDraw(
@@ -264,7 +255,7 @@ public class CallComposerActivity extends AppCompatActivity
} else if (view == sendAndCall) {
sendAndCall();
} else {
- Assert.fail();
+ throw Assert.createIllegalStateFailException("View on click not implemented: " + view);
}
}
@@ -340,11 +331,7 @@ public class CallComposerActivity extends AppCompatActivity
private boolean sessionReady() {
Session session = getEnrichedCallManager().getSession(sessionId);
- if (session == null) {
- return false;
- }
-
- return session.getState() == EnrichedCallManager.STATE_STARTED;
+ return session != null && session.getState() == EnrichedCallManager.STATE_STARTED;
}
private void placeRCSCall(MultimediaData.Builder builder) {
@@ -424,28 +411,6 @@ public class CallComposerActivity extends AppCompatActivity
animateSendAndCall(fragment.shouldHide());
}
- // To detect when the keyboard changes.
- @Override
- public void onLayoutChange(
- View view,
- int left,
- int top,
- int right,
- int bottom,
- int oldLeft,
- int oldTop,
- int oldRight,
- int oldBottom) {
- // To prevent infinite layout change loops
- if (layoutChanged) {
- layoutChanged = false;
- return;
- }
-
- layoutChanged = true;
- showFullscreen(contactContainer.getTop() < 0 || inFullscreenMode);
- }
-
/**
* Reads arguments from the fragment arguments and populates the necessary instance variables.
* Copied from {@link com.android.contacts.common.dialog.CallSubjectDialog}.
@@ -456,14 +421,14 @@ public class CallComposerActivity extends AppCompatActivity
byte[] bytes =
Base64.decode(intent.getStringExtra(ARG_CALL_COMPOSER_CONTACT_BASE64), Base64.DEFAULT);
try {
- contact = CallComposerContact.parseFrom(bytes);
+ contact = DialerContact.parseFrom(bytes);
} catch (InvalidProtocolBufferException e) {
throw Assert.createAssertionFailException(e.toString());
}
} else {
contact =
ProtoParsers.getTrusted(
- intent, ARG_CALL_COMPOSER_CONTACT, CallComposerContact.getDefaultInstance());
+ intent, ARG_CALL_COMPOSER_CONTACT, DialerContact.getDefaultInstance());
}
updateContactInfo();
}
diff --git a/java/com/android/dialer/callcomposer/CameraComposerFragment.java b/java/com/android/dialer/callcomposer/CameraComposerFragment.java
index f65207fa3..ecdc25822 100644
--- a/java/com/android/dialer/callcomposer/CameraComposerFragment.java
+++ b/java/com/android/dialer/callcomposer/CameraComposerFragment.java
@@ -17,13 +17,14 @@
package com.android.dialer.callcomposer;
import android.Manifest;
-import android.Manifest.permission;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.drawable.Animatable;
import android.hardware.Camera.CameraInfo;
import android.net.Uri;
import android.os.Bundle;
+import android.preference.PreferenceManager;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@@ -56,6 +57,7 @@ import com.android.dialer.util.PermissionsUtil;
public class CameraComposerFragment extends CallComposerFragment
implements CameraManagerListener, OnClickListener, CameraManager.MediaCallback {
+ private static final String CAMERA_PRIVACY_PREF = "camera_privacy_permission";
private static final String CAMERA_DIRECTION_KEY = "camera_direction";
private static final String CAMERA_URI_KEY = "camera_key";
@@ -107,7 +109,8 @@ public class CameraComposerFragment extends CallComposerFragment
capture.setOnClickListener(this);
cancel.setOnClickListener(this);
- if (!PermissionsUtil.hasPermission(getContext(), permission.CAMERA)) {
+
+ if (!PermissionsUtil.hasCameraPermissions(getContext())) {
LogUtil.i("CameraComposerFragment.onCreateView", "Permission view shown.");
Logger.get(getContext()).logImpression(DialerImpression.Type.CAMERA_PERMISSION_DISPLAYED);
ImageView permissionImage = (ImageView) permissionView.findViewById(R.id.permission_icon);
@@ -131,6 +134,12 @@ public class CameraComposerFragment extends CallComposerFragment
}
private void setupCamera() {
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
+ if (!preferences.getBoolean(CAMERA_PRIVACY_PREF, false)) {
+ Toast.makeText(getContext(), getString(R.string.camera_privacy_text), Toast.LENGTH_LONG)
+ .show();
+ preferences.edit().putBoolean(CAMERA_PRIVACY_PREF, true).apply();
+ }
CameraManager.get().setListener(this);
preview.setShown();
CameraManager.get().setRenderOverlay(focus);
diff --git a/java/com/android/dialer/callcomposer/GalleryCursorLoader.java b/java/com/android/dialer/callcomposer/GalleryCursorLoader.java
index f9990e167..39d6a4a6d 100644
--- a/java/com/android/dialer/callcomposer/GalleryCursorLoader.java
+++ b/java/com/android/dialer/callcomposer/GalleryCursorLoader.java
@@ -28,7 +28,7 @@ import android.support.v4.content.CursorLoader;
public class GalleryCursorLoader extends CursorLoader {
public static final String MEDIA_SCANNER_VOLUME_EXTERNAL = "external";
public static final String[] ACCEPTABLE_IMAGE_TYPES =
- new String[] {"image/jpeg", "image/jpg", "image/png", "image/gif", "image/webp"};
+ new String[] {"image/jpeg", "image/jpg", "image/png", "image/webp"};
private static final Uri STORAGE_URI = Files.getContentUri(MEDIA_SCANNER_VOLUME_EXTERNAL);
private static final String SORT_ORDER = Media.DATE_MODIFIED + " DESC";
@@ -47,7 +47,7 @@ public class GalleryCursorLoader extends CursorLoader {
@SuppressLint("DefaultLocale")
private static String createSelection() {
return String.format(
- "mime_type IN ('image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp')"
+ "mime_type IN ('image/jpeg', 'image/jpg', 'image/png', 'image/webp')"
+ " AND media_type in (%d)",
FileColumns.MEDIA_TYPE_IMAGE);
}
diff --git a/java/com/android/dialer/callcomposer/MessageComposerFragment.java b/java/com/android/dialer/callcomposer/MessageComposerFragment.java
index 2a342bb08..392f6e716 100644
--- a/java/com/android/dialer/callcomposer/MessageComposerFragment.java
+++ b/java/com/android/dialer/callcomposer/MessageComposerFragment.java
@@ -24,11 +24,8 @@ import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater;
-import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
-import android.view.View.OnLongClickListener;
-import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
@@ -36,17 +33,12 @@ import android.widget.TextView.OnEditorActionListener;
/** Fragment used to compose call with message fragment. */
public class MessageComposerFragment extends CallComposerFragment
- implements OnClickListener,
- TextWatcher,
- OnTouchListener,
- OnLongClickListener,
- OnEditorActionListener {
+ implements OnClickListener, TextWatcher, OnEditorActionListener {
private static final String CHAR_LIMIT_KEY = "char_limit";
public static final int NO_CHAR_LIMIT = -1;
private EditText customMessage;
- private boolean isLongClick = false;
private int charLimit;
public static MessageComposerFragment newInstance(int charLimit) {
@@ -73,8 +65,6 @@ public class MessageComposerFragment extends CallComposerFragment
customMessage = (EditText) view.findViewById(R.id.custom_message);
urgent.setOnClickListener(this);
- customMessage.setOnTouchListener(this);
- customMessage.setOnLongClickListener(this);
customMessage.addTextChangedListener(this);
customMessage.setOnEditorActionListener(this);
if (charLimit != NO_CHAR_LIMIT) {
@@ -118,30 +108,6 @@ public class MessageComposerFragment extends CallComposerFragment
getListener().composeCall(this);
}
- /**
- * EditTexts take two clicks to dispatch an onClick() event, so instead we add an onTouchListener
- * to listen for them. The caveat to this is that it also requires listening for onLongClicks to
- * distinguish whether a MotionEvent came from a click or a long click.
- */
- @Override
- public boolean onTouch(View view, MotionEvent event) {
- if (event.getAction() == MotionEvent.ACTION_UP) {
- if (isLongClick) {
- isLongClick = false;
- } else {
- getListener().showFullscreen(true);
- }
- }
- view.performClick();
- return false;
- }
-
- @Override
- public boolean onLongClick(View v) {
- isLongClick = true;
- return false;
- }
-
@Override
public boolean shouldHide() {
return TextUtils.isEmpty(getMessage());
diff --git a/java/com/android/dialer/callcomposer/camera/CameraManager.java b/java/com/android/dialer/callcomposer/camera/CameraManager.java
index 4cc08ba32..977f063df 100644
--- a/java/com/android/dialer/callcomposer/camera/CameraManager.java
+++ b/java/com/android/dialer/callcomposer/camera/CameraManager.java
@@ -522,6 +522,7 @@ public class CameraManager implements FocusOverlayManager.Listener {
switch (windowManager.getDefaultDisplay().getRotation()) {
case Surface.ROTATION_0:
degrees = 0;
+ mCamera.setDisplayOrientation(90);
break;
case Surface.ROTATION_90:
degrees = 90;
@@ -531,31 +532,22 @@ public class CameraManager implements FocusOverlayManager.Listener {
break;
case Surface.ROTATION_270:
degrees = 270;
+ mCamera.setDisplayOrientation(180);
break;
default:
throw Assert.createAssertionFailException("");
}
- // The display orientation of the camera (this controls the preview image).
- int orientation;
-
// The clockwise rotation angle relative to the orientation of the camera. This affects
// pictures returned by the camera in Camera.PictureCallback.
- int rotation;
if (mCameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
- orientation = (mCameraInfo.orientation + degrees) % 360;
- rotation = orientation;
- // compensate the mirror but only for orientation
- orientation = (360 - orientation) % 360;
+ mRotation = (mCameraInfo.orientation + degrees) % 360;
} else { // back-facing
- orientation = (mCameraInfo.orientation - degrees + 360) % 360;
- rotation = orientation;
+ mRotation = (mCameraInfo.orientation - degrees + 360) % 360;
}
- mRotation = rotation;
try {
- mCamera.setDisplayOrientation(orientation);
final Camera.Parameters params = mCamera.getParameters();
- params.setRotation(rotation);
+ params.setRotation(mRotation);
mCamera.setParameters(params);
} catch (final RuntimeException e) {
LogUtil.e(
@@ -589,7 +581,6 @@ public class CameraManager implements FocusOverlayManager.Listener {
mOrientationHandler.disable();
mOrientationHandler = null;
}
- // releaseMediaRecorder(true /* cleanupFile */);
mFocusOverlayManager.onPreviewStopped();
return;
}
diff --git a/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java b/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java
index 31751e536..b5542ab6c 100644
--- a/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java
+++ b/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java
@@ -20,13 +20,11 @@ import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
import android.graphics.Matrix;
import android.net.Uri;
import android.os.Build.VERSION_CODES;
import android.support.v4.content.FileProvider;
import com.android.dialer.callcomposer.camera.exif.ExifInterface;
-import com.android.dialer.callcomposer.camera.exif.ExifTag;
import com.android.dialer.callcomposer.util.BitmapResizer;
import com.android.dialer.common.Assert;
import com.android.dialer.common.concurrent.FallibleAsyncTask;
@@ -71,13 +69,7 @@ public class ImagePersistTask extends FallibleAsyncTask<Void, Void, Uri> {
File outputFile = DialerUtils.createShareableFile(mContext);
try (OutputStream outputStream = new FileOutputStream(outputFile)) {
- if (mHeightPercent != 1.0f) {
- writeClippedBitmap(outputStream);
- } else {
- Bitmap bitmap = BitmapFactory.decodeByteArray(mBytes, 0, mBytes.length);
- bitmap = BitmapResizer.resizeForEnrichedCalling(bitmap);
- bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);
- }
+ writeClippedBitmap(outputStream);
}
return FileProvider.getUriForFile(
@@ -105,10 +97,12 @@ public class ImagePersistTask extends FallibleAsyncTask<Void, Void, Uri> {
} catch (final IOException e) {
// Couldn't get exif tags, not the end of the world
}
+
Bitmap bitmap = BitmapFactory.decodeByteArray(mBytes, 0, mBytes.length);
final int clippedWidth;
final int clippedHeight;
- if (ExifInterface.getOrientationParams(orientation).invertDimensions) {
+ boolean invert = ExifInterface.getOrientationParams(orientation).invertDimensions;
+ if (invert) {
Assert.checkState(mWidth == bitmap.getHeight());
Assert.checkState(mHeight == bitmap.getWidth());
clippedWidth = (int) (mHeight * mHeightPercent);
@@ -119,24 +113,22 @@ public class ImagePersistTask extends FallibleAsyncTask<Void, Void, Uri> {
clippedWidth = mWidth;
clippedHeight = (int) (mHeight * mHeightPercent);
}
- final int offsetTop = (bitmap.getHeight() - clippedHeight) / 2;
- final int offsetLeft = (bitmap.getWidth() - clippedWidth) / 2;
+
+ int offsetTop = (bitmap.getHeight() - clippedHeight) / 2;
+ int offsetLeft = (bitmap.getWidth() - clippedWidth) / 2;
mWidth = clippedWidth;
mHeight = clippedHeight;
+
+ Matrix matrix = new Matrix();
+ matrix.postRotate(invert ? 90 : 0);
+
Bitmap clippedBitmap =
- Bitmap.createBitmap(clippedWidth, clippedHeight, Bitmap.Config.ARGB_8888);
- clippedBitmap.setDensity(bitmap.getDensity());
- final Canvas clippedBitmapCanvas = new Canvas(clippedBitmap);
- final Matrix matrix = new Matrix();
- matrix.postTranslate(-offsetLeft, -offsetTop);
- clippedBitmapCanvas.drawBitmap(bitmap, matrix, null /* paint */);
- clippedBitmapCanvas.save();
+ Bitmap.createBitmap(
+ bitmap, offsetLeft, offsetTop, clippedWidth, clippedHeight, matrix, true);
clippedBitmap = BitmapResizer.resizeForEnrichedCalling(clippedBitmap);
- // EXIF data can take a big chunk of the file size and is often cleared by the
- // carrier, only store orientation since that's critical
- final ExifTag orientationTag = exifInterface.getTag(ExifInterface.TAG_ORIENTATION);
+ // EXIF data can take a big chunk of the file size and we've already manually rotated our image,
+ // so remove all of the exif data.
exifInterface.clearExif();
- exifInterface.setTag(orientationTag);
exifInterface.writeExif(clippedBitmap, outputStream);
clippedBitmap.recycle();
diff --git a/java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml b/java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml
index c3f1102d1..14703a44c 100644
--- a/java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml
+++ b/java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml
@@ -15,11 +15,11 @@
~ limitations under the License
-->
<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/background"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/call_composer_background_color">
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/background"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/call_composer_background_color">
<LinearLayout
android:id="@+id/call_composer_container"
@@ -87,7 +87,7 @@
android:layout_height="@dimen/call_composer_media_bar_height"
android:orientation="horizontal"
android:gravity="center_horizontal"
- android:background="@color/dialer_secondary_color"
+ android:background="@color/dialer_theme_color_dark"
android:clickable="true">
<ImageView
diff --git a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml b/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
index 77c7a58d1..15562476a 100644
--- a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
+++ b/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
@@ -70,7 +70,7 @@
android:background="@color/background_dialer_white"
android:textCursorDrawable="@drawable/searchedittext_custom_cursor"
android:layout_toStartOf="@+id/remaining_characters"
- android:inputType="textShortMessage"
+ android:inputType="textShortMessage|textCapSentences"
android:imeOptions="flagNoExtractUi|actionSend"/>
<TextView
diff --git a/java/com/android/dialer/callcomposer/res/values-ca/strings.xml b/java/com/android/dialer/callcomposer/res/values-ca/strings.xml
index 4fa52ad63..1a57f87ce 100644
--- a/java/com/android/dialer/callcomposer/res/values-ca/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ca/strings.xml
@@ -28,6 +28,6 @@
<string name="camera_switch_to_still_mode" msgid="1881982437979592567">"Fes una foto"</string>
<string name="camera_media_failure" msgid="8979549551450965882">"No s\'ha pogut carregar la imatge de la càmera"</string>
<string name="allow" msgid="8637148297403066623">"Permet"</string>
- <string name="camera_permission_text" msgid="7863231776480341614">"Per fer una foto, dóna accés a la càmera"</string>
- <string name="gallery_permission_text" msgid="4102566850658919346">"Per compartir una imatge, dóna accés al contingut multimèdia"</string>
+ <string name="camera_permission_text" msgid="7863231776480341614">"Per fer una foto, dona accés a la càmera"</string>
+ <string name="gallery_permission_text" msgid="4102566850658919346">"Per compartir una imatge, dona accés al contingut multimèdia"</string>
</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values/styles.xml b/java/com/android/dialer/callcomposer/res/values/styles.xml
index 29ac4ddaa..16e7fb622 100644
--- a/java/com/android/dialer/callcomposer/res/values/styles.xml
+++ b/java/com/android/dialer/callcomposer/res/values/styles.xml
@@ -15,7 +15,7 @@
~ limitations under the License
-->
<resources>
- <style name="Theme.AppCompat.CallComposer" parent="Theme.AppCompat.NoActionBar">
+ <style name="Theme.AppCompat.CallComposer" parent="DialerThemeBase.NoActionBar">
<item name="android:colorPrimaryDark">@color/dialer_theme_color_dark</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
diff --git a/java/com/android/dialer/calldetails/AndroidManifest.xml b/java/com/android/dialer/calldetails/AndroidManifest.xml
index adaac402e..fd887c4b5 100644
--- a/java/com/android/dialer/calldetails/AndroidManifest.xml
+++ b/java/com/android/dialer/calldetails/AndroidManifest.xml
@@ -16,11 +16,11 @@
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.dialer.calldetails">
- <application>
+ <application android:theme="@style/Theme.AppCompat">
<activity
android:label="@string/call_details"
android:name="com.android.dialer.calldetails.CallDetailsActivity"
- android:theme="@style/Theme.AppCompat.Light.NoActionBar">
+ android:theme="@style/DialerThemeBase.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
diff --git a/java/com/android/dialer/calldetails/CallDetailsActivity.java b/java/com/android/dialer/calldetails/CallDetailsActivity.java
index 7eab951fa..4d5853fef 100644
--- a/java/com/android/dialer/calldetails/CallDetailsActivity.java
+++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java
@@ -29,12 +29,13 @@ import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.support.v7.widget.Toolbar.OnMenuItemClickListener;
import android.view.MenuItem;
-import com.android.dialer.callcomposer.CallComposerContact;
import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
import com.android.dialer.common.Assert;
import com.android.dialer.common.concurrent.AsyncTaskExecutors;
+import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
+import com.android.dialer.postcall.PostCall;
import com.android.dialer.protos.ProtoParsers;
import java.util.List;
@@ -48,7 +49,7 @@ public class CallDetailsActivity extends AppCompatActivity implements OnMenuItem
private List<CallDetailsEntry> entries;
public static Intent newInstance(
- Context context, @NonNull CallDetailsEntries details, @NonNull CallComposerContact contact) {
+ Context context, @NonNull CallDetailsEntries details, @NonNull DialerContact contact) {
Assert.isNotNull(details);
Assert.isNotNull(contact);
@@ -70,14 +71,20 @@ public class CallDetailsActivity extends AppCompatActivity implements OnMenuItem
}
@Override
+ protected void onResume() {
+ super.onResume();
+ PostCall.promptUserForMessageIfNecessary(this, findViewById(R.id.recycler_view));
+ }
+
+ @Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
onHandleIntent(intent);
}
private void onHandleIntent(Intent intent) {
- CallComposerContact contact =
- ProtoParsers.getTrusted(intent, EXTRA_CONTACT, CallComposerContact.getDefaultInstance());
+ DialerContact contact =
+ ProtoParsers.getTrusted(intent, EXTRA_CONTACT, DialerContact.getDefaultInstance());
entries =
ProtoParsers.getTrusted(
intent, EXTRA_CALL_DETAILS_ENTRIES, CallDetailsEntries.getDefaultInstance())
diff --git a/java/com/android/dialer/calldetails/CallDetailsAdapter.java b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
index 725077965..d2fdbb424 100644
--- a/java/com/android/dialer/calldetails/CallDetailsAdapter.java
+++ b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
@@ -22,26 +22,26 @@ import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.ViewGroup;
-import com.android.dialer.callcomposer.CallComposerContact;
import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
import com.android.dialer.calllogutils.CallTypeHelper;
import com.android.dialer.common.Assert;
+import com.android.dialer.dialercontact.DialerContact;
import java.util.List;
/** Adapter for RecyclerView in {@link CallDetailsActivity}. */
-public class CallDetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
+final class CallDetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int HEADER_VIEW_TYPE = 1;
private static final int CALL_ENTRY_VIEW_TYPE = 2;
private static final int FOOTER_VIEW_TYPE = 3;
- private final CallComposerContact contact;
+ private final DialerContact contact;
private final List<CallDetailsEntry> callDetailsEntries;
private final CallTypeHelper callTypeHelper;
- public CallDetailsAdapter(
+ CallDetailsAdapter(
Context context,
- @NonNull CallComposerContact contact,
+ @NonNull DialerContact contact,
@NonNull List<CallDetailsEntry> callDetailsEntries) {
this.contact = Assert.isNotNull(contact);
this.callDetailsEntries = callDetailsEntries;
@@ -62,8 +62,8 @@ public class CallDetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
return new CallDetailsFooterViewHolder(
inflater.inflate(R.layout.call_details_footer, parent, false));
default:
- Assert.fail("No ViewHolder available for viewType: " + viewType);
- return null;
+ throw Assert.createIllegalStateFailException(
+ "No ViewHolder available for viewType: " + viewType);
}
}
diff --git a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
index 4d9aacf7b..1ddd2e77e 100644
--- a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
@@ -25,11 +25,12 @@ import android.view.View.OnClickListener;
import android.widget.QuickContactBadge;
import android.widget.TextView;
import com.android.contacts.common.ContactPhotoManager;
-import com.android.dialer.callcomposer.CallComposerContact;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.Assert;
+import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
import com.android.dialer.util.DialerUtils;
@@ -43,20 +44,24 @@ public class CallDetailsHeaderViewHolder extends RecyclerView.ViewHolder
private final QuickContactBadge contactPhoto;
private final Context context;
- private CallComposerContact contact;
+ private DialerContact contact;
CallDetailsHeaderViewHolder(View container) {
super(container);
context = container.getContext();
callBackButton = container.findViewById(R.id.call_back_button);
- nameView = (TextView) container.findViewById(R.id.contact_name);
- numberView = (TextView) container.findViewById(R.id.phone_number);
- contactPhoto = (QuickContactBadge) container.findViewById(R.id.quick_contact_photo);
+ nameView = container.findViewById(R.id.contact_name);
+ numberView = container.findViewById(R.id.phone_number);
+ contactPhoto = container.findViewById(R.id.quick_contact_photo);
+
callBackButton.setOnClickListener(this);
+ Logger.get(context)
+ .logQuickContactOnTouch(
+ contactPhoto, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CALL_DETAILS, true);
}
/** Populates the contact info fields based on the current contact information. */
- void updateContactInfo(CallComposerContact contact) {
+ void updateContactInfo(DialerContact contact) {
this.contact = contact;
ContactPhotoManager.getInstance(context)
.loadDialerThumbnailOrPhoto(
@@ -98,7 +103,7 @@ public class CallDetailsHeaderViewHolder extends RecyclerView.ViewHolder
view.getContext(),
new CallIntentBuilder(contact.getNumber(), CallInitiationType.Type.CALL_DETAILS).build());
} else {
- Assert.fail("View OnClickListener not implemented: " + view);
+ throw Assert.createIllegalStateFailException("View OnClickListener not implemented: " + view);
}
}
}
diff --git a/java/com/android/dialer/calldetails/res/layout/contact_container.xml b/java/com/android/dialer/calldetails/res/layout/contact_container.xml
index bb89b36f2..d8d6e4e70 100644
--- a/java/com/android/dialer/calldetails/res/layout/contact_container.xml
+++ b/java/com/android/dialer/calldetails/res/layout/contact_container.xml
@@ -56,6 +56,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/photo_text_margin"
+ android:ellipsize="end"
+ android:maxLines="1"
style="@style/SecondaryText"/>
</LinearLayout>
@@ -66,8 +68,8 @@
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:background="?android:attr/selectableItemBackgroundBorderless"
- android:contentDescription="@string/description_call_log_call_action"
+ android:contentDescription="@string/call"
android:scaleType="center"
android:src="@drawable/quantum_ic_call_white_24"
android:tint="@color/secondary_text_color"/>
-</RelativeLayout>
+</RelativeLayout> \ No newline at end of file
diff --git a/java/com/android/dialer/calldetails/res/values-af/strings.xml b/java/com/android/dialer/calldetails/res/values-af/strings.xml
index 86bef4b9a..74fbcd023 100644
--- a/java/com/android/dialer/calldetails/res/values-af/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-af/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Vee uit"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopieer nommer"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Wysig nommer voordat jy bel"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Bel"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Het \'n foto gestuur"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Het \'n foto ontvang"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-am/strings.xml b/java/com/android/dialer/calldetails/res/values-am/strings.xml
index 2a23945fe..4deaceb8c 100644
--- a/java/com/android/dialer/calldetails/res/values-am/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-am/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"ሰርዝ"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"ቁጥር ቅዳ"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"ከመደወል በፊት ቁጥር አርትዕ ያድርጉ"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"ጥሪ"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"አንድ ፎቶ ተልኳል"</string>
<string name="received_a_photo" msgid="3528953225576480505">"አንድ ፎቶ ደርሷል"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"«<xliff:g id="MESSAGE">%1$s</xliff:g>»"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ar/strings.xml b/java/com/android/dialer/calldetails/res/values-ar/strings.xml
index 6b0d8a773..11a80e9b3 100644
--- a/java/com/android/dialer/calldetails/res/values-ar/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ar/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"حذف"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"نسخ الرقم"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"تعديل الرقم قبل الاتصال"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"الاتصال"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"تم إرسال صورة"</string>
<string name="received_a_photo" msgid="3528953225576480505">"تم تلقي صورة"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-az/strings.xml b/java/com/android/dialer/calldetails/res/values-az/strings.xml
index 479837c34..6710966a8 100644
--- a/java/com/android/dialer/calldetails/res/values-az/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-az/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Silin"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Nömrəni kopyalayın"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Zəng etmədən öncə nömrəyə düzəliş edin"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Zəng edin"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Foto göndərildi"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Foto alındı"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml
index 01141ffa4..a08c4eda1 100644
--- a/java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Izbriši"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopiraj broj"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Izmenite broj pre poziva"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Pozovi"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Slika je poslata"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Slika je primljena"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-be/strings.xml b/java/com/android/dialer/calldetails/res/values-be/strings.xml
index 683f29bb2..3997fb2f2 100644
--- a/java/com/android/dialer/calldetails/res/values-be/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-be/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Выдаліць"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Скапіраваць нумар"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Рэдагаваць нумар перад выклікам"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Выклік"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Адпраўлена фота"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Атрымана фота"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-bg/strings.xml b/java/com/android/dialer/calldetails/res/values-bg/strings.xml
index 9cd70e2f6..2354517db 100644
--- a/java/com/android/dialer/calldetails/res/values-bg/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-bg/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Изтриване"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Копиране на номера"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Редактиране на номера преди обаждане"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Обаждане"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Изпратена бе снимка"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Получена бе снимка"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-bn/strings.xml b/java/com/android/dialer/calldetails/res/values-bn/strings.xml
index 148f61aba..066715265 100644
--- a/java/com/android/dialer/calldetails/res/values-bn/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-bn/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"মুছুন"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"নম্বর কপি করুন"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"কল করার আগে নম্বর সম্পাদন করুন"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"কল করুন"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"একটি ফটো পাঠিয়েছেন"</string>
<string name="received_a_photo" msgid="3528953225576480505">"একটি ফটো পেয়েছেন"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-bs/strings.xml b/java/com/android/dialer/calldetails/res/values-bs/strings.xml
index 6f164b228..305a41347 100644
--- a/java/com/android/dialer/calldetails/res/values-bs/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-bs/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Izbriši"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopiraj broj"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Uredi broj prije poziva"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Poziv"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Fotografija poslana"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Fotografija primljena"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ca/strings.xml b/java/com/android/dialer/calldetails/res/values-ca/strings.xml
index 0e33e60e7..6d5092e19 100644
--- a/java/com/android/dialer/calldetails/res/values-ca/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ca/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Suprimeix"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copia el número"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Edita el número abans de trucar"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Truca"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"S\'ha enviat una foto"</string>
<string name="received_a_photo" msgid="3528953225576480505">"S\'ha rebut una foto"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"<xliff:g id="MESSAGE">%1$s</xliff:g>"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-cs/strings.xml b/java/com/android/dialer/calldetails/res/values-cs/strings.xml
index 9747ee139..bec5bab59 100644
--- a/java/com/android/dialer/calldetails/res/values-cs/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-cs/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Smazat"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopírovat číslo"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Před voláním upravit číslo"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Zavolat"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Byla poslána fotka"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Byla přijata fotka"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-da/strings.xml b/java/com/android/dialer/calldetails/res/values-da/strings.xml
index 41bc25254..cfc4ad151 100644
--- a/java/com/android/dialer/calldetails/res/values-da/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-da/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Slet"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopiér nummer"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Rediger nummer før opkald"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Ring op"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Der blev sendt et billede"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Der blev modtaget et billede"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-de/strings.xml b/java/com/android/dialer/calldetails/res/values-de/strings.xml
index 014666b3f..64439240e 100644
--- a/java/com/android/dialer/calldetails/res/values-de/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-de/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Löschen"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Nummer kopieren"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Nummer vor Anruf bearbeiten"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Anrufen"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Hat ein Foto gesendet"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Hat ein Foto empfangen"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-el/strings.xml b/java/com/android/dialer/calldetails/res/values-el/strings.xml
index 6b51fc71d..04c850e2f 100644
--- a/java/com/android/dialer/calldetails/res/values-el/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-el/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Διαγραφή"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Αντιγραφή αριθμού"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Επεξεργασία αριθμού πριν από την κλήση"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Κλήση"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Έγινε αποστολή φωτογραφίας"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Έγινε λήψη φωτογραφίας"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml b/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml
index 2d5210e8c..5f4f55910 100644
--- a/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Delete"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copy number"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Edit number before call"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Call"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Sent a photo"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Received a photo"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml b/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml
index 2d5210e8c..5f4f55910 100644
--- a/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Delete"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copy number"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Edit number before call"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Call"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Sent a photo"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Received a photo"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml b/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml
index 2d5210e8c..5f4f55910 100644
--- a/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Delete"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copy number"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Edit number before call"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Call"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Sent a photo"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Received a photo"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml b/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml
index d9db2825c..898653431 100644
--- a/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Borrar"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copiar número"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Editar número antes de llamar"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Llamar"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Enviaste una foto"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Recibiste una foto"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-es/strings.xml b/java/com/android/dialer/calldetails/res/values-es/strings.xml
index e72e898b4..ad581b4f6 100644
--- a/java/com/android/dialer/calldetails/res/values-es/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-es/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Eliminar"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copiar número"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Editar número antes de llamar"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Llamar"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Se ha enviado una foto"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Se ha recibido una foto"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-et/strings.xml b/java/com/android/dialer/calldetails/res/values-et/strings.xml
index 496459d6b..9190b2831 100644
--- a/java/com/android/dialer/calldetails/res/values-et/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-et/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Kustuta"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopeeri number"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Muuda numbrit enne helistamist"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Kõne"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Saatis foto"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Sai foto"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-eu/strings.xml b/java/com/android/dialer/calldetails/res/values-eu/strings.xml
index 913082fb8..a8c48cf66 100644
--- a/java/com/android/dialer/calldetails/res/values-eu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-eu/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Ezabatu"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopiatu zenbakia"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Editatu zenbakia deitu aurretik"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Deia"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Argazki bat bidali duzu"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Argazki bat jaso duzu"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-fa/strings.xml b/java/com/android/dialer/calldetails/res/values-fa/strings.xml
index cad85a265..d02591be9 100644
--- a/java/com/android/dialer/calldetails/res/values-fa/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fa/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"حذف"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"کپی کردن شماره"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"ویرایش شماره قبل از تماس"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"تماس"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"عکسی ارسال کرد"</string>
<string name="received_a_photo" msgid="3528953225576480505">"عکسی دریافت کرد"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"«<xliff:g id="MESSAGE">%1$s</xliff:g>»"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-fi/strings.xml b/java/com/android/dialer/calldetails/res/values-fi/strings.xml
index c16110d58..3b409edea 100644
--- a/java/com/android/dialer/calldetails/res/values-fi/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fi/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Poista"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopioi numero"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Muokkaa numeroa ennen puhelua"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Soita"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Lähetetty kuva"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Vastaanotettu kuva"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml b/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml
index 676861f3f..7b88bddcd 100644
--- a/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Supprimer"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copier le numéro"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Modifier le numéro avant de passer l\'appel"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Appeler"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Photo envoyée"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Photo reçue"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"« <xliff:g id="MESSAGE">%1$s</xliff:g> »"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-fr/strings.xml b/java/com/android/dialer/calldetails/res/values-fr/strings.xml
index 606cb1095..8319a2c9e 100644
--- a/java/com/android/dialer/calldetails/res/values-fr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fr/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Supprimer"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copier le numéro"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Modifier le numéro avant d\'appeler"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Appeler"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Envoi d\'une photo"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Réception d\'une photo"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-gl/strings.xml b/java/com/android/dialer/calldetails/res/values-gl/strings.xml
index aa5ff14dd..f7aa16660 100644
--- a/java/com/android/dialer/calldetails/res/values-gl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-gl/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Eliminar"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copiar número"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Editar número antes de chamar"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Chamar"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Enviouse unha foto"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Recibiuse unha foto"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-gu/strings.xml b/java/com/android/dialer/calldetails/res/values-gu/strings.xml
index ccb8755b3..03e402e00 100644
--- a/java/com/android/dialer/calldetails/res/values-gu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-gu/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"કાઢી નાખો"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"નંબર કૉપિ કરો"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"કૉલ કરતાં પહેલાં નંબર સંપાદિત કરો"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"કૉલ કરો"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"એક ફોટો મોકલ્યો"</string>
<string name="received_a_photo" msgid="3528953225576480505">"એક ફોટો પ્રાપ્ત કર્યો"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-hi/strings.xml b/java/com/android/dialer/calldetails/res/values-hi/strings.xml
index 517fbe52d..3e46920fb 100644
--- a/java/com/android/dialer/calldetails/res/values-hi/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hi/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"हटाएं"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"नंबर कॉपी करें"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"कॉल करने से पहले नंबर संपादित करें"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"कॉल करें"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"फ़ोटो भेजी गई"</string>
<string name="received_a_photo" msgid="3528953225576480505">"फ़ोटो मिली"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-hr/strings.xml b/java/com/android/dialer/calldetails/res/values-hr/strings.xml
index 687a65e2b..c1cc36098 100644
--- a/java/com/android/dialer/calldetails/res/values-hr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hr/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Brisanje"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopiranje broja"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Uređivanje broja prije poziva"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Poziv"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Šalje fotografiju"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Prima fotografiju"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-hu/strings.xml b/java/com/android/dialer/calldetails/res/values-hu/strings.xml
index 66863e87d..298c10e53 100644
--- a/java/com/android/dialer/calldetails/res/values-hu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hu/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Törlés"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Szám másolása"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Szám szerkesztése hívás előtt"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Telefonhívás"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Küldött egy fotót"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Kapott egy fotót"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-hy/strings.xml b/java/com/android/dialer/calldetails/res/values-hy/strings.xml
index a1e84e955..ab44622d2 100644
--- a/java/com/android/dialer/calldetails/res/values-hy/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hy/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Ջնջել"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Պատճենել համարը"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Փոփոխել համարը զանգելուց առաջ"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Զանգ"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Ուղարկվել է լուսանկար"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Ստացվել է լուսանկար"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"«<xliff:g id="MESSAGE">%1$s</xliff:g>»"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-in/strings.xml b/java/com/android/dialer/calldetails/res/values-in/strings.xml
index ba58ba01c..68ced556e 100644
--- a/java/com/android/dialer/calldetails/res/values-in/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-in/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Hapus"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Salin nomor"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Edit nomor sebelum menelepon"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Telepon"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Mengirim foto"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Menerima foto"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-is/strings.xml b/java/com/android/dialer/calldetails/res/values-is/strings.xml
index 0770814df..667ebd62a 100644
--- a/java/com/android/dialer/calldetails/res/values-is/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-is/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Eyða"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Afrita númer"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Breyta númeri áður en hringt er"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Hringja"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Sendi mynd"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Tók á móti mynd"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-it/strings.xml b/java/com/android/dialer/calldetails/res/values-it/strings.xml
index 97af25168..4f159d574 100644
--- a/java/com/android/dialer/calldetails/res/values-it/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-it/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Elimina"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copia numero"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Modifica numero prima di chiamare"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Chiama"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Foto inviata"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Foto ricevuta"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-iw/strings.xml b/java/com/android/dialer/calldetails/res/values-iw/strings.xml
index 329eded62..87c6fed79 100644
--- a/java/com/android/dialer/calldetails/res/values-iw/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-iw/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"מחק"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"העתק את המספר"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"ערוך את המספר לפני השיחה"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"התקשר"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"נשלחה תמונה"</string>
<string name="received_a_photo" msgid="3528953225576480505">"התקבלה תמונה"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ja/strings.xml b/java/com/android/dialer/calldetails/res/values-ja/strings.xml
index 7aef345fd..d3a15d420 100644
--- a/java/com/android/dialer/calldetails/res/values-ja/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ja/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"削除"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"電話番号をコピー"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"発信前に電話番号を編集"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"発信"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"写真を送信しました"</string>
<string name="received_a_photo" msgid="3528953225576480505">"写真を受信しました"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"「<xliff:g id="MESSAGE">%1$s</xliff:g>」"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ka/strings.xml b/java/com/android/dialer/calldetails/res/values-ka/strings.xml
index 1cd7bc219..66f19282d 100644
--- a/java/com/android/dialer/calldetails/res/values-ka/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ka/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"წაშლა"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"ნომრის კოპირება"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"ნომრის რედაქტირება დარეკვამდე"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"დარეკვა"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"ფოტო გაიგზავნა"</string>
<string name="received_a_photo" msgid="3528953225576480505">"მიღებულია ფოტო"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-kk/strings.xml b/java/com/android/dialer/calldetails/res/values-kk/strings.xml
index 1923cf79b..c3903e158 100644
--- a/java/com/android/dialer/calldetails/res/values-kk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-kk/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Жою"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Нөмірді көшіру"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Нөмірді қоңырау шалуға дейін өзгерту"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Қоңырау шалу"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Сурет жіберілді"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Сурет қабылданды"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-km/strings.xml b/java/com/android/dialer/calldetails/res/values-km/strings.xml
index e0472796f..240e28ab7 100644
--- a/java/com/android/dialer/calldetails/res/values-km/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-km/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"លុប"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"ថតចម្លងលេខទូរសព្ទ"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"កែ​លេខ​ មុន​ពេល​ហៅទូរសព្ទ"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"ហៅទូរសព្ទ"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"បានផ្ញើរូបថត"</string>
<string name="received_a_photo" msgid="3528953225576480505">"បាន​ទទួល​រូបថត"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-kn/strings.xml b/java/com/android/dialer/calldetails/res/values-kn/strings.xml
index 66c0d6349..a833ffc95 100644
--- a/java/com/android/dialer/calldetails/res/values-kn/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-kn/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"ಅಳಿಸಿ"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"ಸಂಖ್ಯೆಯನ್ನು ನಕಲಿಸಿ"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"ಕರೆ ಮಾಡುವ ಮೊದಲು ಸಂಖ್ಯೆಯನ್ನು ಎಡಿಟ್ ಮಾಡಿ"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"ಕರೆಮಾಡಿ"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"ಫೋಟೋ ಕಳುಹಿಸಲಾಗಿದೆ"</string>
<string name="received_a_photo" msgid="3528953225576480505">"ಫೋಟೋ ಸ್ವೀಕರಿಸಲಾಗಿದೆ"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ko/strings.xml b/java/com/android/dialer/calldetails/res/values-ko/strings.xml
index 35c503858..700c3603d 100644
--- a/java/com/android/dialer/calldetails/res/values-ko/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ko/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"삭제"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"전화번호 복사"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"통화하기 전에 번호 수정"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"전화걸기"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"사진 전송됨"</string>
<string name="received_a_photo" msgid="3528953225576480505">"사진 수신됨"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\'<xliff:g id="MESSAGE">%1$s</xliff:g>\'"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ky/strings.xml b/java/com/android/dialer/calldetails/res/values-ky/strings.xml
index fe37b33bd..08546c8ec 100644
--- a/java/com/android/dialer/calldetails/res/values-ky/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ky/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Жок кылуу"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Номерди көчүрүү"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Чалуудан мурун номерди түзөтүү"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Чалуу"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Сүрөт жөнөтүлдү"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Сүрөт алынды"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-lo/strings.xml b/java/com/android/dialer/calldetails/res/values-lo/strings.xml
index 85b636acd..8f099e827 100644
--- a/java/com/android/dialer/calldetails/res/values-lo/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-lo/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"​ລຶບ"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"ສຳເນົາເບີໂທ"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"ແກ້ໄຂເບີກ່ອນໂທ"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"ໂທ"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"ສົ່ງຮູບພາບ"</string>
<string name="received_a_photo" msgid="3528953225576480505">"ໄດ້ຮັບຮູບພາບແລ້ວ"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-lt/strings.xml b/java/com/android/dialer/calldetails/res/values-lt/strings.xml
index 9c8ad7b7f..62d89f5b9 100644
--- a/java/com/android/dialer/calldetails/res/values-lt/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-lt/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Ištrinti"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopijuoti numerį"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Redaguoti numerį prieš skambinant"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Skambinti"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Išsiuntė nuotrauką"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Gavo nuotrauką"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-lv/strings.xml b/java/com/android/dialer/calldetails/res/values-lv/strings.xml
index d8783935b..3625649ee 100644
--- a/java/com/android/dialer/calldetails/res/values-lv/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-lv/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Dzēst"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopēt numuru"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Rediģēt numuru pirms zvanīšanas"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Zvanīt"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Nosūtīja fotoattēlu"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Saņēma fotoattēlu"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"“<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-mk/strings.xml b/java/com/android/dialer/calldetails/res/values-mk/strings.xml
index 9388ae070..6d1fd710f 100644
--- a/java/com/android/dialer/calldetails/res/values-mk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-mk/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Избриши"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Копирај го бројот"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Измени го бројот пред повикот"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Повикај"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Испрати фотографија"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Прими фотографија"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ml/strings.xml b/java/com/android/dialer/calldetails/res/values-ml/strings.xml
index d29691159..fbafb88ea 100644
--- a/java/com/android/dialer/calldetails/res/values-ml/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ml/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"ഇല്ലാതാക്കുക"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"നമ്പർ പകർത്തുക"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"കോൾ ചെയ്യുന്നതിന് മുമ്പായി നമ്പർ എഡിറ്റുചെയ്യുക"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"കോള്‍ ചെയ്യുക"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"ഒരു ഫോട്ടോ അയച്ചു"</string>
<string name="received_a_photo" msgid="3528953225576480505">"ഒരു ഫോട്ടോ ലഭിച്ചു"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-mn/strings.xml b/java/com/android/dialer/calldetails/res/values-mn/strings.xml
index cb264e016..10b5d967a 100644
--- a/java/com/android/dialer/calldetails/res/values-mn/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-mn/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Устгах"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Дугаар хуулах"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Залгахын өмнө дугаар засах"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Залгах"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Зураг илгээсэн"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Зураг хүлээн авсан"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-mr/strings.xml b/java/com/android/dialer/calldetails/res/values-mr/strings.xml
index 5c31e361e..5644664f6 100644
--- a/java/com/android/dialer/calldetails/res/values-mr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-mr/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"हटवा"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"नंबर कॉपी करा"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"कॉल करण्यापूर्वी नंबर संपादित करा"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"कॉल करा"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"एक फोटो पाठविला"</string>
<string name="received_a_photo" msgid="3528953225576480505">"एक फोटो प्राप्त झाला"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ms/strings.xml b/java/com/android/dialer/calldetails/res/values-ms/strings.xml
index da17d6edb..157198dfc 100644
--- a/java/com/android/dialer/calldetails/res/values-ms/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ms/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Padam"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Salin nombor"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Edit nombor sebelum panggilan"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Panggil"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Menghantar foto"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Foto diterima"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-my/strings.xml b/java/com/android/dialer/calldetails/res/values-my/strings.xml
index 75508d8d4..bf3f90b60 100644
--- a/java/com/android/dialer/calldetails/res/values-my/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-my/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"ဖျက်ရန်"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"နံပါတ်ကိုကူးယူရန်"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"မခေါ်ဆိုမီ နံပါတ်ကိုပြင်ဆင်ရန်"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"ခေါ်ဆိုရန်"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"ဓာတ်ပုံ ပို့လိုက်သည်"</string>
<string name="received_a_photo" msgid="3528953225576480505">"ဓာတ်ပုံ လက်ခံရရှိသည်"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-nb/strings.xml b/java/com/android/dialer/calldetails/res/values-nb/strings.xml
index 022025fa3..609c8afcf 100644
--- a/java/com/android/dialer/calldetails/res/values-nb/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-nb/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Slett"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopiér nummeret"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Rediger nummeret før du ringer"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Ring"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Et bilde ble sendt"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Et bilde ble mottatt"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"«<xliff:g id="MESSAGE">%1$s</xliff:g>»"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ne/strings.xml b/java/com/android/dialer/calldetails/res/values-ne/strings.xml
index 8fe355ba6..6b609670c 100644
--- a/java/com/android/dialer/calldetails/res/values-ne/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ne/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"मेट्नुहोस्"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"नम्बर प्रतिलिपि गर्नुहोस्"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"कल गर्नु अघि नम्बर सम्पादन गर्नुहोस्"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"कल"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"एउटा तस्बिर पठाइयो"</string>
<string name="received_a_photo" msgid="3528953225576480505">"एउटा तस्बिर प्राप्त भयो"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-nl/strings.xml b/java/com/android/dialer/calldetails/res/values-nl/strings.xml
index 71657b813..f5efb1a43 100644
--- a/java/com/android/dialer/calldetails/res/values-nl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-nl/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Verwijderen"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Nummer kopiëren"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Nummer bewerken vóór bellen"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Bellen"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Foto verzonden"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Foto ontvangen"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\'<xliff:g id="MESSAGE">%1$s</xliff:g>\'"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-no/strings.xml b/java/com/android/dialer/calldetails/res/values-no/strings.xml
index 022025fa3..609c8afcf 100644
--- a/java/com/android/dialer/calldetails/res/values-no/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-no/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Slett"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopiér nummeret"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Rediger nummeret før du ringer"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Ring"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Et bilde ble sendt"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Et bilde ble mottatt"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"«<xliff:g id="MESSAGE">%1$s</xliff:g>»"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-pa/strings.xml b/java/com/android/dialer/calldetails/res/values-pa/strings.xml
index d4f175943..8a9ec1f69 100644
--- a/java/com/android/dialer/calldetails/res/values-pa/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pa/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"ਮਿਟਾਓ"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"ਨੰਬਰ ਕਾਪੀ ਕਰੋ"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"ਕਾਲ ਤੋਂ ਪਹਿਲਾਂ ਨੰਬਰ ਸੰਪਾਦਿਤ ਕਰੋ"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"ਕਾਲ ਕਰੋ"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"ਇੱਕ ਫ਼ੋਟੋ ਭੇਜੀ ਗਈ"</string>
<string name="received_a_photo" msgid="3528953225576480505">"ਇੱਕ ਫ਼ੋਟੋ ਪ੍ਰਾਪਤ ਹੋਈ"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-pl/strings.xml b/java/com/android/dialer/calldetails/res/values-pl/strings.xml
index 96446005d..1a342b0ce 100644
--- a/java/com/android/dialer/calldetails/res/values-pl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pl/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Usuń"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopiuj numer"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Edytuj numer, zanim zadzwonisz"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Zadzwoń"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Wysłano zdjęcie"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Odebrano zdjęcie"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml b/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml
index 467973d55..7abc8be39 100644
--- a/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Excluir"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copiar número"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Editar número antes de ligar"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Ligar"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Enviou uma foto"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Recebeu uma foto"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml b/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml
index cfbbc0240..5e6dae83f 100644
--- a/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Eliminar"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copiar número"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Editar o número antes de efetuar a chamada"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Telefonar"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Enviou uma foto"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Recebeu uma foto"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-pt/strings.xml b/java/com/android/dialer/calldetails/res/values-pt/strings.xml
index 467973d55..7abc8be39 100644
--- a/java/com/android/dialer/calldetails/res/values-pt/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pt/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Excluir"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copiar número"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Editar número antes de ligar"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Ligar"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Enviou uma foto"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Recebeu uma foto"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ro/strings.xml b/java/com/android/dialer/calldetails/res/values-ro/strings.xml
index e9281ae66..3a6447b64 100644
--- a/java/com/android/dialer/calldetails/res/values-ro/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ro/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Ștergeți"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Copiați numărul"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Modificați numărul înainte de apelare"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Apelați"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"A fost trimisă o fotografie."</string>
<string name="received_a_photo" msgid="3528953225576480505">"A fost primită o fotografie."</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ru/strings.xml b/java/com/android/dialer/calldetails/res/values-ru/strings.xml
index bf981e293..b071dc68d 100644
--- a/java/com/android/dialer/calldetails/res/values-ru/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ru/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Удалить"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Скопировать номер"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Изменить номер перед вызовом"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Позвонить"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Отправлена фотография"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Получена фотография"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-si/strings.xml b/java/com/android/dialer/calldetails/res/values-si/strings.xml
index 5fdca0d52..999183b20 100644
--- a/java/com/android/dialer/calldetails/res/values-si/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-si/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"මකන්න"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"අංකය පිටපත් කරන්න"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"ඇමතුමට පෙර අංකය සංස්කරණය කරන්න"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"අමතන්න"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"ඡායාරූපයක් යැවිණි"</string>
<string name="received_a_photo" msgid="3528953225576480505">"ඡායාරූපයක් ලැබිණි"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sk/strings.xml b/java/com/android/dialer/calldetails/res/values-sk/strings.xml
index db0478713..57b90cf8d 100644
--- a/java/com/android/dialer/calldetails/res/values-sk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sk/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Odstrániť"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopírovať číslo"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Pred volaním upraviť číslo"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Volať"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Bola odoslaná fotka"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Bola prijatá fotka"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sl/strings.xml b/java/com/android/dialer/calldetails/res/values-sl/strings.xml
index 98975f406..83ffcbb96 100644
--- a/java/com/android/dialer/calldetails/res/values-sl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sl/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Izbriši"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopiraj številko"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Pred klicanjem uredi številko"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Pokliči"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Poslana fotografija"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Prejeta fotografija"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"»<xliff:g id="MESSAGE">%1$s</xliff:g>«"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sq/strings.xml b/java/com/android/dialer/calldetails/res/values-sq/strings.xml
index dd9915da5..d05770fb6 100644
--- a/java/com/android/dialer/calldetails/res/values-sq/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sq/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Fshi"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopjo numrin"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Redakto numrin para telefonatës"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Telefono"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"U dërgua një fotografi"</string>
<string name="received_a_photo" msgid="3528953225576480505">"U mor një fotografi"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sr/strings.xml b/java/com/android/dialer/calldetails/res/values-sr/strings.xml
index 7f4005d78..a1294df1a 100644
--- a/java/com/android/dialer/calldetails/res/values-sr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sr/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Избриши"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Копирај број"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Измените број пре позива"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Позови"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Слика је послата"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Слика је примљена"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sv/strings.xml b/java/com/android/dialer/calldetails/res/values-sv/strings.xml
index 3967b4ff3..9b2e25e44 100644
--- a/java/com/android/dialer/calldetails/res/values-sv/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sv/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Radera"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopiera nummer"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Redigera nummer före samtal"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Ring"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Skickade ett foto"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Tog emot ett foto"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"<xliff:g id="MESSAGE">%1$s</xliff:g>"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sw/strings.xml b/java/com/android/dialer/calldetails/res/values-sw/strings.xml
index e5df8230a..b7673372f 100644
--- a/java/com/android/dialer/calldetails/res/values-sw/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sw/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Futa"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Nakili nambari"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Hariri nambari kabla ya kupiga"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Piga simu"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Picha imetumwa"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Picha imepokelewa"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ta/strings.xml b/java/com/android/dialer/calldetails/res/values-ta/strings.xml
index 840ad8790..51ff04f2c 100644
--- a/java/com/android/dialer/calldetails/res/values-ta/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ta/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"நீக்கு"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"எண்ணை நகலெடு"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"அழைப்பதற்கு முன் எண்ணைத் திருத்து"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"அழை"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"படம் அனுப்பப்பட்டது"</string>
<string name="received_a_photo" msgid="3528953225576480505">"படம் பெறப்பட்டது"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-te/strings.xml b/java/com/android/dialer/calldetails/res/values-te/strings.xml
index 3054444ac..1d44e5514 100644
--- a/java/com/android/dialer/calldetails/res/values-te/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-te/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"తొలగించు"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"నంబర్‌ను కాపీ చేయి"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"కాల్ చేసే ముందు నంబర్‌ను సవరించు"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"కాల్ చేయి"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"ఫోటో పంపబడింది"</string>
<string name="received_a_photo" msgid="3528953225576480505">"ఫోటో స్వీకరించబడింది"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-th/strings.xml b/java/com/android/dialer/calldetails/res/values-th/strings.xml
index c565ebadf..3fe88f950 100644
--- a/java/com/android/dialer/calldetails/res/values-th/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-th/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"ลบ"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"คัดลอกหมายเลข"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"แก้ไขหมายเลขก่อนโทร"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"โทร"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"ส่งรูปภาพแล้ว"</string>
<string name="received_a_photo" msgid="3528953225576480505">"ได้รับรูปภาพแล้ว"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-tl/strings.xml b/java/com/android/dialer/calldetails/res/values-tl/strings.xml
index 81c148e6b..91fb3bec4 100644
--- a/java/com/android/dialer/calldetails/res/values-tl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-tl/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"I-delete"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopyahin ang numero"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"I-edit ang numero bago tumawag"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Tumawag"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Nagpadala ng larawan"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Nakatanggap ng larawan"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-tr/strings.xml b/java/com/android/dialer/calldetails/res/values-tr/strings.xml
index ade401843..f84d0b383 100644
--- a/java/com/android/dialer/calldetails/res/values-tr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-tr/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Sil"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Numarayı kopyala"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Telefon etmeden önce numarayı düzenleyin"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Telefon eder"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Bir fotoğraf gönderildi"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Bir fotoğraf alındı"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-uk/strings.xml b/java/com/android/dialer/calldetails/res/values-uk/strings.xml
index 6538d664d..bf6e0acc1 100644
--- a/java/com/android/dialer/calldetails/res/values-uk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-uk/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Видалити"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Копіювати номер"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Редагувати номер перед дзвінком"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Виклик"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Надіслано фотографію"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Отримано фотографію"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ur/strings.xml b/java/com/android/dialer/calldetails/res/values-ur/strings.xml
index 90c3a590a..5a22869dc 100644
--- a/java/com/android/dialer/calldetails/res/values-ur/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ur/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"حذف کریں"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"نمبر کاپی کریں"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"کال کرنے سے پہلے نمبر میں ترمیم کریں"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"کال"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"ایک تصویر بھیجی"</string>
<string name="received_a_photo" msgid="3528953225576480505">"ایک تصویر موصول ہوئی"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-uz/strings.xml b/java/com/android/dialer/calldetails/res/values-uz/strings.xml
index 7b443ca2e..890b7ae59 100644
--- a/java/com/android/dialer/calldetails/res/values-uz/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-uz/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"O‘chirib tashlash"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Raqamni nusxalash"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Qo‘ng‘iroq qilishdan oldin raqamni tahrirlash"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Qo‘ng‘iroq qilish"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Rasm yuborildi"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Rasm qabul qilindi"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"“<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-vi/strings.xml b/java/com/android/dialer/calldetails/res/values-vi/strings.xml
index 7a950216d..b58963293 100644
--- a/java/com/android/dialer/calldetails/res/values-vi/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-vi/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Xóa"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Sao chép số"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Chỉnh sửa số trước khi gọi"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Gọi"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Đã gửi một ảnh"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Đã nhận một ảnh"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml b/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml
index aad695a73..7b8b9723c 100644
--- a/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"删除"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"复制号码"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"拨打电话之前修改号码"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"拨打电话"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"发送了一张照片"</string>
<string name="received_a_photo" msgid="3528953225576480505">"收到了一张照片"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"“<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml b/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml
index eb5b606b7..87710986a 100644
--- a/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"刪除"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"複製號碼"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"在撥打前編輯號碼"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"通話"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"已傳送相片"</string>
<string name="received_a_photo" msgid="3528953225576480505">"已收到相片"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"「<xliff:g id="MESSAGE">%1$s</xliff:g>」"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml b/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml
index fd426c0fa..73aba80c6 100644
--- a/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"刪除"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"複製號碼"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"撥打電話前編輯號碼"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"撥號"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"傳送了 1 張相片"</string>
<string name="received_a_photo" msgid="3528953225576480505">"收到了 1 張相片"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"「<xliff:g id="MESSAGE">%1$s</xliff:g>」"</string>
diff --git a/java/com/android/dialer/calldetails/res/values-zu/strings.xml b/java/com/android/dialer/calldetails/res/values-zu/strings.xml
index d41d1f5cb..94040ce2b 100644
--- a/java/com/android/dialer/calldetails/res/values-zu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zu/strings.xml
@@ -21,7 +21,6 @@
<string name="delete" msgid="2141020674108406737">"Susa"</string>
<string name="call_details_copy_number" msgid="4265479408878990796">"Kopisha inombolo"</string>
<string name="call_details_edit_number" msgid="8718476514903513624">"Hlela inombolo ngaphambi kokushaya ucingo"</string>
- <string name="description_call_log_call_action" msgid="1421313064764221900">"Shaya"</string>
<string name="sent_a_photo" msgid="3978670717462979502">"Uthumele isithombe"</string>
<string name="received_a_photo" msgid="3528953225576480505">"Uthole isithombe"</string>
<string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
diff --git a/java/com/android/dialer/calldetails/res/values/dimens.xml b/java/com/android/dialer/calldetails/res/values/dimens.xml
index f85d02f83..91bf70e88 100644
--- a/java/com/android/dialer/calldetails/res/values/dimens.xml
+++ b/java/com/android/dialer/calldetails/res/values/dimens.xml
@@ -15,8 +15,6 @@
~ limitations under the License
-->
<resources>
- <dimen name="call_details_primary_text_size">16sp</dimen>
- <dimen name="call_details_secondary_text_size">14sp</dimen>
<dimen name="call_details_top_margin">6dp</dimen>
<!-- contact container -->
diff --git a/java/com/android/dialer/calldetails/res/values/strings.xml b/java/com/android/dialer/calldetails/res/values/strings.xml
index 4471605f6..6b3b17962 100644
--- a/java/com/android/dialer/calldetails/res/values/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values/strings.xml
@@ -27,10 +27,6 @@
<!-- Label for action to edit a number before calling it. [CHAR LIMIT=48] -->
<string name="call_details_edit_number">Edit number before call</string>
- <!-- String describing the phone icon on a call log list item. When tapped, it will place a
- call to the number represented by that call log entry. [CHAR LIMIT=NONE]-->
- <string name="description_call_log_call_action">Call</string>
-
<!-- String shown when the call details show a image that was sent -->
<string name="sent_a_photo">Sent a photo</string>
diff --git a/java/com/android/dialer/calldetails/res/values/styles.xml b/java/com/android/dialer/calldetails/res/values/styles.xml
index 4fffe1afb..1a2b52994 100644
--- a/java/com/android/dialer/calldetails/res/values/styles.xml
+++ b/java/com/android/dialer/calldetails/res/values/styles.xml
@@ -15,24 +15,6 @@
~ limitations under the License
-->
<resources>
- <style name="PrimaryText">
- <item name="android:textColor">#DE000000</item>
- <item name="android:textSize">@dimen/call_details_primary_text_size</item>
- <item name="android:maxLines">1</item>
- </style>
-
- <style name="SecondaryText">
- <item name="android:textColor">#8A000000</item>
- <item name="android:textSize">@dimen/call_details_secondary_text_size</item>
- <item name="android:maxLines">1</item>
- </style>
-
- <style name="ECText">
- <item name="android:textColor">#8A000000</item>
- <item name="android:textSize">@dimen/call_details_ec_text_size</item>
- <item name="android:maxLines">1</item>
- </style>
-
<style name="CallDetailsActionItemStyle">
<item name="android:foreground">?android:attr/selectableItemBackground</item>
<item name="android:clickable">true</item>
diff --git a/java/com/android/dialer/callintent/call_specific_app_data.proto b/java/com/android/dialer/callintent/call_specific_app_data.proto
index 20ffc1ff4..c62006dfc 100644
--- a/java/com/android/dialer/callintent/call_specific_app_data.proto
+++ b/java/com/android/dialer/callintent/call_specific_app_data.proto
@@ -7,6 +7,7 @@ option optimize_for = LITE_RUNTIME;
package com.android.dialer.callintent;
import "java/com/android/dialer/callintent/call_initiation_type.proto";
+import "java/com/android/dialer/callintent/speed_dial_contact_type.proto";
// Miscellaneous data that's included in a new outgoing call initiated by
// Dialer. The system will pass this data to the InCallUi which can use it
@@ -17,4 +18,7 @@ message CallSpecificAppData {
optional int32 position_of_selected_search_result = 2;
optional int32 characters_in_search_string = 3;
+
+ repeated SpeedDialContactType.Type speed_dial_contact_type = 4;
+ optional int32 speed_dial_contact_position = 5;
}
diff --git a/java/com/android/dialer/callintent/speed_dial_contact_type.proto b/java/com/android/dialer/callintent/speed_dial_contact_type.proto
new file mode 100644
index 000000000..d352f458b
--- /dev/null
+++ b/java/com/android/dialer/callintent/speed_dial_contact_type.proto
@@ -0,0 +1,18 @@
+syntax = "proto2";
+
+option java_package = "com.android.dialer.callintent";
+option java_multiple_files = true;
+
+package com.android.dialer.callintent;
+option optimize_for = LITE_RUNTIME;
+
+// The type of speed call contact (favorites). Applies to initiation type
+// SPEED_DIAL only.
+message SpeedDialContactType {
+ enum Type {
+ UNDEFINED = 0;
+ PINNED_CONTACT = 1;
+ STARRED_CONTACT = 2;
+ FREQUENT_CONTACT = 3;
+ }
+}
diff --git a/java/com/android/dialer/calllog/CallLogComponent.java b/java/com/android/dialer/calllog/CallLogComponent.java
index 5cdd2b4d0..c7db2a1b8 100644
--- a/java/com/android/dialer/calllog/CallLogComponent.java
+++ b/java/com/android/dialer/calllog/CallLogComponent.java
@@ -25,6 +25,8 @@ public abstract class CallLogComponent {
public abstract CallLogFramework callLogFramework();
+ public abstract RefreshAnnotatedCallLogWorker getRefreshAnnotatedCallLogWorker();
+
public static CallLogComponent get(Context context) {
return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
.callLogComponent();
diff --git a/java/com/android/dialer/calllog/CallLogFramework.java b/java/com/android/dialer/calllog/CallLogFramework.java
index 508413b14..55ef15b47 100644
--- a/java/com/android/dialer/calllog/CallLogFramework.java
+++ b/java/com/android/dialer/calllog/CallLogFramework.java
@@ -22,6 +22,7 @@ import android.preference.PreferenceManager;
import android.support.annotation.MainThread;
import android.support.annotation.Nullable;
import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.calllog.datasources.DataSources;
import com.android.dialer.common.Assert;
import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
@@ -38,7 +39,6 @@ import javax.inject.Singleton;
public final class CallLogFramework implements CallLogDataSource.ContentObserverCallbacks {
static final String PREF_FORCE_REBUILD = "callLogFrameworkForceRebuild";
- static final String PREF_LAST_REBUILD_TIMESTAMP_MILLIS = "callLogFrameworkLastRebuild";
private final DataSources dataSources;
@@ -58,6 +58,7 @@ public final class CallLogFramework implements CallLogDataSource.ContentObserver
LogUtil.enterBlock("CallLogFramework.registerContentObservers");
if (!isNewCallLogEnabled(appContext)) {
+ LogUtil.i("CallLogFramework.registerContentObservers", "new call log not enabled");
return;
}
diff --git a/java/com/android/dialer/calllog/CallLogModule.java b/java/com/android/dialer/calllog/CallLogModule.java
index d7473a75e..2f2f16d5b 100644
--- a/java/com/android/dialer/calllog/CallLogModule.java
+++ b/java/com/android/dialer/calllog/CallLogModule.java
@@ -17,11 +17,9 @@
package com.android.dialer.calllog;
import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.calllog.datasources.DataSources;
import com.android.dialer.calllog.datasources.contacts.ContactsDataSource;
import com.android.dialer.calllog.datasources.systemcalllog.SystemCallLogDataSource;
-import com.android.dialer.common.concurrent.DefaultDialerExecutorFactory;
-import com.android.dialer.common.concurrent.DialerExecutorFactory;
-import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import java.util.Arrays;
@@ -32,10 +30,6 @@ import java.util.List;
@Module
public abstract class CallLogModule {
- @Binds
- abstract DialerExecutorFactory bindDialerExecutorFactory(
- DefaultDialerExecutorFactory defaultDialerExecutorFactory);
-
@Provides
static DataSources provideCallLogDataSources(
SystemCallLogDataSource systemCallLogDataSource, ContactsDataSource contactsDataSource) {
diff --git a/java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java b/java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java
index f9f0c9935..d25ec5e65 100644
--- a/java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java
+++ b/java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java
@@ -18,14 +18,16 @@ package com.android.dialer.calllog;
import android.annotation.TargetApi;
import android.content.Context;
+import android.content.OperationApplicationException;
import android.content.SharedPreferences;
-import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
+import android.os.RemoteException;
import android.preference.PreferenceManager;
import android.support.annotation.WorkerThread;
-import com.android.dialer.calllog.database.AnnotatedCallLog;
-import com.android.dialer.calllog.database.CallLogMutations;
+import com.android.dialer.calllog.database.CallLogDatabaseComponent;
import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.calllog.datasources.CallLogMutations;
+import com.android.dialer.calllog.datasources.DataSources;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
@@ -34,75 +36,65 @@ import javax.inject.Inject;
/**
* Worker which brings the annotated call log up to date, if necessary.
*
- * <p>Accepts a boolean which indicates if the dirty check should be skipped, and returns true if
- * the annotated call log was updated.
+ * <p>Accepts a boolean which indicates if the dirty check should be skipped.
*/
-public class RefreshAnnotatedCallLogWorker implements Worker<Boolean, Boolean> {
+public class RefreshAnnotatedCallLogWorker implements Worker<Boolean, Void> {
private final Context appContext;
private final DataSources dataSources;
@Inject
- public RefreshAnnotatedCallLogWorker(Context appContext, DataSources dataSources) {
+ RefreshAnnotatedCallLogWorker(Context appContext, DataSources dataSources) {
this.appContext = appContext;
this.dataSources = dataSources;
}
@Override
- public Boolean doInBackground(Boolean skipDirtyCheck) {
- LogUtil.enterBlock("RefreshAnnotatedCallLogWorker.doInBackgroundFallible");
+ public Void doInBackground(Boolean skipDirtyCheck)
+ throws RemoteException, OperationApplicationException {
+ LogUtil.enterBlock("RefreshAnnotatedCallLogWorker.doInBackground");
long startTime = System.currentTimeMillis();
- boolean annotatedCallLogUpdated = checkDirtyAndRebuildIfNecessary(appContext, skipDirtyCheck);
+ checkDirtyAndRebuildIfNecessary(appContext, skipDirtyCheck);
LogUtil.i(
- "RefreshAnnotatedCallLogWorker.doInBackgroundFallible",
- "updated? %s, took %dms",
- annotatedCallLogUpdated,
+ "RefreshAnnotatedCallLogWorker.doInBackground",
+ "took %dms",
System.currentTimeMillis() - startTime);
- return annotatedCallLogUpdated;
+ return null;
}
@WorkerThread
- private boolean checkDirtyAndRebuildIfNecessary(Context appContext, boolean skipDirtyCheck) {
+ private void checkDirtyAndRebuildIfNecessary(Context appContext, boolean skipDirtyCheck)
+ throws RemoteException, OperationApplicationException {
Assert.isWorkerThread();
long startTime = System.currentTimeMillis();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(appContext);
- long lastRebuildTimeMillis =
- sharedPreferences.getLong(CallLogFramework.PREF_LAST_REBUILD_TIMESTAMP_MILLIS, 0);
- if (lastRebuildTimeMillis == 0) {
- LogUtil.i(
- "RefreshAnnotatedCallLogWorker.checkDirtyAndRebuildIfNecessary",
- "annotated call log has never been built, marking it dirty");
- }
+ // Default to true. If the pref doesn't exist, the annotated call log hasn't been created and
+ // we just skip isDirty checks and force a rebuild.
boolean forceRebuildPrefValue =
- sharedPreferences.getBoolean(CallLogFramework.PREF_FORCE_REBUILD, false);
+ sharedPreferences.getBoolean(CallLogFramework.PREF_FORCE_REBUILD, true);
if (forceRebuildPrefValue) {
LogUtil.i(
"RefreshAnnotatedCallLogWorker.checkDirtyAndRebuildIfNecessary",
- "call log has been marked dirty");
+ "annotated call log has been marked dirty or does not exist");
}
- boolean isDirty =
- lastRebuildTimeMillis == 0
- || skipDirtyCheck
- || forceRebuildPrefValue
- || isDirty(appContext);
+ boolean isDirty = skipDirtyCheck || forceRebuildPrefValue || isDirty(appContext);
+
LogUtil.i(
"RefreshAnnotatedCallLogWorker.checkDirtyAndRebuildIfNecessary",
"isDirty took: %dms",
System.currentTimeMillis() - startTime);
if (isDirty) {
startTime = System.currentTimeMillis();
- rebuild(appContext, lastRebuildTimeMillis);
+ rebuild(appContext);
LogUtil.i(
"RefreshAnnotatedCallLogWorker.checkDirtyAndRebuildIfNecessary",
"rebuild took: %dms",
System.currentTimeMillis() - startTime);
- return true; // Annotated call log was updated.
}
- return false; // Annotated call log was not updated.
}
@WorkerThread
@@ -129,51 +121,48 @@ public class RefreshAnnotatedCallLogWorker implements Worker<Boolean, Boolean> {
@TargetApi(Build.VERSION_CODES.M) // Uses try-with-resources
@WorkerThread
- private void rebuild(Context appContext, long lastRebuildTimeMillis) {
+ private void rebuild(Context appContext) throws RemoteException, OperationApplicationException {
Assert.isWorkerThread();
- // TODO: Start a transaction?
- try (SQLiteDatabase database = AnnotatedCallLog.getWritableDatabase(appContext)) {
+ CallLogMutations mutations = new CallLogMutations();
- CallLogMutations mutations = new CallLogMutations();
+ // System call log data source must go first!
+ CallLogDataSource systemCallLogDataSource = dataSources.getSystemCallLogDataSource();
+ String dataSourceName = getName(systemCallLogDataSource);
+ LogUtil.i("RefreshAnnotatedCallLogWorker.rebuild", "filling %s", dataSourceName);
+ long startTime = System.currentTimeMillis();
+ systemCallLogDataSource.fill(appContext, mutations);
+ LogUtil.i(
+ "RefreshAnnotatedCallLogWorker.rebuild",
+ "%s.fill took: %dms",
+ dataSourceName,
+ System.currentTimeMillis() - startTime);
- // System call log data source must go first!
- CallLogDataSource systemCallLogDataSource = dataSources.getSystemCallLogDataSource();
- String dataSourceName = getName(systemCallLogDataSource);
+ for (CallLogDataSource dataSource : dataSources.getDataSourcesExcludingSystemCallLog()) {
+ dataSourceName = getName(dataSource);
LogUtil.i("RefreshAnnotatedCallLogWorker.rebuild", "filling %s", dataSourceName);
- long startTime = System.currentTimeMillis();
- systemCallLogDataSource.fill(appContext, database, lastRebuildTimeMillis, mutations);
+ startTime = System.currentTimeMillis();
+ dataSource.fill(appContext, mutations);
LogUtil.i(
- "RefreshAnnotatedCallLogWorker.rebuild",
+ "CallLogFramework.rebuild",
"%s.fill took: %dms",
dataSourceName,
System.currentTimeMillis() - startTime);
-
- for (CallLogDataSource dataSource : dataSources.getDataSourcesExcludingSystemCallLog()) {
- dataSourceName = getName(dataSource);
- LogUtil.i("RefreshAnnotatedCallLogWorker.rebuild", "filling %s", dataSourceName);
- startTime = System.currentTimeMillis();
- dataSource.fill(appContext, database, lastRebuildTimeMillis, mutations);
- LogUtil.i(
- "CallLogFramework.rebuild",
- "%s.fill took: %dms",
- dataSourceName,
- System.currentTimeMillis() - startTime);
- }
- LogUtil.i("RefreshAnnotatedCallLogWorker.rebuild", "applying mutations to database");
- startTime = System.currentTimeMillis();
- mutations.applyToDatabase(database);
- LogUtil.i(
- "RefreshAnnotatedCallLogWorker.rebuild",
- "applyToDatabase took: %dms",
- System.currentTimeMillis() - startTime);
}
+ LogUtil.i("RefreshAnnotatedCallLogWorker.rebuild", "applying mutations to database");
+ startTime = System.currentTimeMillis();
+ CallLogDatabaseComponent.get(appContext)
+ .mutationApplier()
+ .applyToDatabase(mutations, appContext);
+ LogUtil.i(
+ "RefreshAnnotatedCallLogWorker.rebuild",
+ "applyToDatabase took: %dms",
+ System.currentTimeMillis() - startTime);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(appContext);
sharedPreferences
.edit()
.putBoolean(CallLogFramework.PREF_FORCE_REBUILD, false)
- .putLong(CallLogFramework.PREF_LAST_REBUILD_TIMESTAMP_MILLIS, System.currentTimeMillis())
.commit();
}
diff --git a/java/com/android/dialer/calllog/database/AndroidManifest.xml b/java/com/android/dialer/calllog/database/AndroidManifest.xml
new file mode 100644
index 000000000..396a6d9a1
--- /dev/null
+++ b/java/com/android/dialer/calllog/database/AndroidManifest.xml
@@ -0,0 +1,28 @@
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.dialer.calllog.database">
+
+ <application>
+
+ <provider
+ android:authorities="com.android.dialer.annotatedcalllog"
+ android:exported="false"
+ android:multiprocess="false"
+ android:name=".AnnotatedCallLogContentProvider"/>
+
+ </application>
+</manifest>
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLog.java b/java/com/android/dialer/calllog/database/AnnotatedCallLog.java
deleted file mode 100644
index 7dca44a60..000000000
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLog.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2017 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.database;
-
-import android.content.Context;
-import android.database.sqlite.SQLiteDatabase;
-import android.support.annotation.WorkerThread;
-import com.android.dialer.common.Assert;
-
-/** Static methods and constants for interacting with the annotated call log table. */
-public final class AnnotatedCallLog {
-
- private static final String DATABASE_NAME = "annotated_call_log.db";
-
- public static final String TABLE_NAME = "AnnotatedCallLog";
-
- /** Column names for the annotated call log table. */
- public static final class Columns {
- public static final String ID = "_id";
- public static final String TIMESTAMP = "timestamp";
- public static final String CONTACT_NAME = "contact_name";
- }
-
- private AnnotatedCallLog() {}
-
- @WorkerThread
- public static SQLiteDatabase getWritableDatabase(Context appContext) {
- Assert.isWorkerThread();
-
- return new AnnotatedCallLogDatabaseHelper(appContext, DATABASE_NAME).getWritableDatabase();
- }
-
- @WorkerThread
- public static SQLiteDatabase getReadableDatabase(Context appContext) {
- Assert.isWorkerThread();
-
- return new AnnotatedCallLogDatabaseHelper(appContext, DATABASE_NAME).getReadableDatabase();
- }
-}
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java
new file mode 100644
index 000000000..a9c0d36b0
--- /dev/null
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java
@@ -0,0 +1,310 @@
+/*
+ * Copyright (C) 2017 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.database;
+
+import android.annotation.TargetApi;
+import android.content.ContentProvider;
+import android.content.ContentProviderOperation;
+import android.content.ContentProviderResult;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.OperationApplicationException;
+import android.content.UriMatcher;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteQueryBuilder;
+import android.net.Uri;
+import android.os.Build;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.CoalescedAnnotatedCallLog;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import java.util.ArrayList;
+
+/** {@link ContentProvider} for the annotated call log. */
+public class AnnotatedCallLogContentProvider extends ContentProvider {
+
+ private static final int ANNOTATED_CALL_LOG_TABLE_CODE = 1;
+ private static final int ANNOTATED_CALL_LOG_TABLE_ID_CODE = 2;
+ private static final int COALESCED_ANNOTATED_CALL_LOG_TABLE_CODE = 3;
+
+ private static final UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
+
+ static {
+ uriMatcher.addURI(
+ AnnotatedCallLogContract.AUTHORITY, AnnotatedCallLog.TABLE, ANNOTATED_CALL_LOG_TABLE_CODE);
+ uriMatcher.addURI(
+ AnnotatedCallLogContract.AUTHORITY,
+ AnnotatedCallLog.TABLE + "/#",
+ ANNOTATED_CALL_LOG_TABLE_ID_CODE);
+ uriMatcher.addURI(
+ AnnotatedCallLogContract.AUTHORITY,
+ CoalescedAnnotatedCallLog.TABLE,
+ COALESCED_ANNOTATED_CALL_LOG_TABLE_CODE);
+ }
+
+ private AnnotatedCallLogDatabaseHelper databaseHelper;
+ private Coalescer coalescer;
+
+ private final ThreadLocal<Boolean> applyingBatch = new ThreadLocal<>();
+
+ /** Ensures that only a single notification is generated from {@link #applyBatch(ArrayList)}. */
+ private boolean isApplyingBatch() {
+ return applyingBatch.get() != null && applyingBatch.get();
+ }
+
+ @Override
+ public boolean onCreate() {
+ databaseHelper = new AnnotatedCallLogDatabaseHelper(getContext());
+ coalescer = CallLogDatabaseComponent.get(getContext()).coalescer();
+ return true;
+ }
+
+ @TargetApi(Build.VERSION_CODES.M) // Uses try-with-resources
+ @Nullable
+ @Override
+ public Cursor query(
+ @NonNull Uri uri,
+ @Nullable String[] projection,
+ @Nullable String selection,
+ @Nullable String[] selectionArgs,
+ @Nullable String sortOrder) {
+ SQLiteDatabase db = databaseHelper.getReadableDatabase();
+ SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
+ queryBuilder.setTables(AnnotatedCallLog.TABLE);
+ int match = uriMatcher.match(uri);
+ switch (match) {
+ case ANNOTATED_CALL_LOG_TABLE_ID_CODE:
+ queryBuilder.appendWhere(AnnotatedCallLog._ID + "=" + ContentUris.parseId(uri));
+ // fall through
+ case ANNOTATED_CALL_LOG_TABLE_CODE:
+ Cursor cursor =
+ queryBuilder.query(db, projection, selection, selectionArgs, null, null, sortOrder);
+ if (cursor != null) {
+ cursor.setNotificationUri(
+ getContext().getContentResolver(), AnnotatedCallLog.CONTENT_URI);
+ } else {
+ LogUtil.w("AnnotatedCallLogContentProvider.query", "cursor was null");
+ }
+ return cursor;
+ case COALESCED_ANNOTATED_CALL_LOG_TABLE_CODE:
+ Assert.checkArgument(projection == null, "projection not supported for coalesced call log");
+ Assert.checkArgument(selection == null, "selection not supported for coalesced call log");
+ Assert.checkArgument(
+ selectionArgs == null, "selection args not supported for coalesced call log");
+ Assert.checkArgument(sortOrder == null, "sort order not supported for coalesced call log");
+ try (Cursor allAnnotatedCallLogRows =
+ queryBuilder.query(
+ db, null, null, null, null, null, AnnotatedCallLog.TIMESTAMP + " DESC")) {
+ Cursor coalescedRows = coalescer.coalesce(allAnnotatedCallLogRows);
+ coalescedRows.setNotificationUri(
+ getContext().getContentResolver(), CoalescedAnnotatedCallLog.CONTENT_URI);
+ return coalescedRows;
+ }
+ default:
+ throw new IllegalArgumentException("Unknown uri: " + uri);
+ }
+ }
+
+ @Nullable
+ @Override
+ public String getType(@NonNull Uri uri) {
+ return AnnotatedCallLog.CONTENT_ITEM_TYPE;
+ }
+
+ @Nullable
+ @Override
+ public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
+ // Javadoc states values is not nullable, even though it is annotated as such (b/38123194)!
+ Assert.checkArgument(values != null);
+
+ SQLiteDatabase database = databaseHelper.getWritableDatabase();
+ int match = uriMatcher.match(uri);
+ switch (match) {
+ case ANNOTATED_CALL_LOG_TABLE_CODE:
+ Assert.checkArgument(
+ values.get(AnnotatedCallLog._ID) != null, "You must specify an _ID when inserting");
+ break;
+ case ANNOTATED_CALL_LOG_TABLE_ID_CODE:
+ Long idFromUri = ContentUris.parseId(uri);
+ Long idFromValues = values.getAsLong(AnnotatedCallLog._ID);
+ Assert.checkArgument(
+ idFromValues == null || idFromValues.equals(idFromUri),
+ "_ID from values %d does not match ID from URI: %s",
+ idFromValues,
+ uri);
+ if (idFromValues == null) {
+ values.put(AnnotatedCallLog._ID, idFromUri);
+ }
+ break;
+ case COALESCED_ANNOTATED_CALL_LOG_TABLE_CODE:
+ throw new UnsupportedOperationException("coalesced call log does not support inserting");
+ default:
+ throw new IllegalArgumentException("Unknown uri: " + uri);
+ }
+ long id = database.insert(AnnotatedCallLog.TABLE, null, values);
+ if (id < 0) {
+ LogUtil.w(
+ "AnnotatedCallLogContentProvider.insert",
+ "error inserting row with id: %d",
+ values.get(AnnotatedCallLog._ID));
+ return null;
+ }
+ Uri insertedUri = ContentUris.withAppendedId(AnnotatedCallLog.CONTENT_URI, id);
+ if (!isApplyingBatch()) {
+ notifyChange(insertedUri);
+ }
+ return insertedUri;
+ }
+
+ @Override
+ public int delete(
+ @NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
+ SQLiteDatabase database = databaseHelper.getWritableDatabase();
+ final int match = uriMatcher.match(uri);
+ switch (match) {
+ case ANNOTATED_CALL_LOG_TABLE_CODE:
+ break;
+ case ANNOTATED_CALL_LOG_TABLE_ID_CODE:
+ Assert.checkArgument(selection == null, "Do not specify selection when deleting by ID");
+ Assert.checkArgument(
+ selectionArgs == null, "Do not specify selection args when deleting by ID");
+ long id = ContentUris.parseId(uri);
+ Assert.checkArgument(id != -1, "error parsing id from uri %s", uri);
+ selection = getSelectionWithId(id);
+ break;
+ case COALESCED_ANNOTATED_CALL_LOG_TABLE_CODE:
+ throw new UnsupportedOperationException("coalesced call log does not support deleting");
+ default:
+ throw new IllegalArgumentException("Unknown uri: " + uri);
+ }
+ int rows = database.delete(AnnotatedCallLog.TABLE, selection, selectionArgs);
+ if (rows > 0) {
+ if (!isApplyingBatch()) {
+ notifyChange(uri);
+ }
+ } else {
+ LogUtil.w("AnnotatedCallLogContentProvider.delete", "no rows deleted");
+ }
+ return rows;
+ }
+
+ @Override
+ public int update(
+ @NonNull Uri uri,
+ @Nullable ContentValues values,
+ @Nullable String selection,
+ @Nullable String[] selectionArgs) {
+ // Javadoc states values is not nullable, even though it is annotated as such (b/38123194)!
+ Assert.checkArgument(values != null);
+
+ SQLiteDatabase database = databaseHelper.getWritableDatabase();
+ int match = uriMatcher.match(uri);
+ switch (match) {
+ case ANNOTATED_CALL_LOG_TABLE_CODE:
+ break;
+ case ANNOTATED_CALL_LOG_TABLE_ID_CODE:
+ Assert.checkArgument(
+ !values.containsKey(AnnotatedCallLog._ID), "Do not specify _ID when updating by ID");
+ Assert.checkArgument(selection == null, "Do not specify selection when updating by ID");
+ Assert.checkArgument(
+ selectionArgs == null, "Do not specify selection args when updating by ID");
+ selection = getSelectionWithId(ContentUris.parseId(uri));
+ break;
+ case COALESCED_ANNOTATED_CALL_LOG_TABLE_CODE:
+ throw new UnsupportedOperationException("coalesced call log does not support updating");
+ default:
+ throw new IllegalArgumentException("Unknown uri: " + uri);
+ }
+ int rows = database.update(AnnotatedCallLog.TABLE, values, selection, selectionArgs);
+ if (rows > 0) {
+ if (!isApplyingBatch()) {
+ notifyChange(uri);
+ }
+ } else {
+ LogUtil.w("AnnotatedCallLogContentProvider.update", "no rows updated");
+ }
+ return rows;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * <p>Note: When applyBatch is used with the AnnotatedCallLog, only a single notification for the
+ * content URI is generated, not individual notifications for each affected URI.
+ */
+ @NonNull
+ @Override
+ public ContentProviderResult[] applyBatch(@NonNull ArrayList<ContentProviderOperation> operations)
+ throws OperationApplicationException {
+ ContentProviderResult[] results = new ContentProviderResult[operations.size()];
+ if (operations.isEmpty()) {
+ return results;
+ }
+
+ SQLiteDatabase database = databaseHelper.getWritableDatabase();
+ try {
+ applyingBatch.set(true);
+ database.beginTransaction();
+ for (int i = 0; i < operations.size(); i++) {
+ ContentProviderOperation operation = operations.get(i);
+ int match = uriMatcher.match(operation.getUri());
+ switch (match) {
+ case ANNOTATED_CALL_LOG_TABLE_CODE:
+ case ANNOTATED_CALL_LOG_TABLE_ID_CODE:
+ // These are allowed values, continue.
+ break;
+ case COALESCED_ANNOTATED_CALL_LOG_TABLE_CODE:
+ throw new UnsupportedOperationException(
+ "coalesced call log does not support applyBatch");
+ default:
+ throw new IllegalArgumentException("Unknown uri: " + operation.getUri());
+ }
+ ContentProviderResult result = operation.apply(this, results, i);
+ if (operations.get(i).isInsert()) {
+ if (result.uri == null) {
+ throw new OperationApplicationException("error inserting row");
+ }
+ } else if (result.count == 0) {
+ throw new OperationApplicationException("error updating or deleting rows");
+ }
+ results[i] = result;
+ }
+ database.setTransactionSuccessful();
+ } finally {
+ applyingBatch.set(false);
+ database.endTransaction();
+ }
+ notifyChange(AnnotatedCallLog.CONTENT_URI);
+ return results;
+ }
+
+ private String getSelectionWithId(long id) {
+ return AnnotatedCallLog._ID + "=" + id;
+ }
+
+ private void notifyChange(Uri uri) {
+ getContext().getContentResolver().notifyChange(uri, null);
+ // Any time the annotated call log changes, we need to also notify observers of the
+ // CoalescedAnnotatedCallLog, since that is just a massaged in-memory view of the real annotated
+ // call log table.
+ getContext().getContentResolver().notifyChange(CoalescedAnnotatedCallLog.CONTENT_URI, null);
+ }
+}
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
index 7b28e5505..3cca639ff 100644
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
@@ -16,28 +16,25 @@
package com.android.dialer.calllog.database;
-import static com.android.dialer.calllog.database.AnnotatedCallLog.Columns.CONTACT_NAME;
-import static com.android.dialer.calllog.database.AnnotatedCallLog.Columns.ID;
-import static com.android.dialer.calllog.database.AnnotatedCallLog.Columns.TIMESTAMP;
-
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
import com.android.dialer.common.LogUtil;
/** {@link SQLiteOpenHelper} for the AnnotatedCallLog database. */
class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper {
- AnnotatedCallLogDatabaseHelper(Context appContext, String databaseName) {
- super(appContext, databaseName, null, 1);
+ AnnotatedCallLogDatabaseHelper(Context appContext) {
+ super(appContext, "annotated_call_log.db", null, 1);
}
private static final String CREATE_SQL =
new StringBuilder()
- .append("create table if not exists " + AnnotatedCallLog.TABLE_NAME + " (")
- .append(ID + " integer primary key, ")
- .append(TIMESTAMP + " integer, ")
- .append(CONTACT_NAME + " string")
+ .append("create table if not exists " + AnnotatedCallLog.TABLE + " (")
+ .append(AnnotatedCallLog._ID + " integer primary key, ")
+ .append(AnnotatedCallLog.TIMESTAMP + " integer, ")
+ .append(AnnotatedCallLog.CONTACT_NAME + " string")
.append(");")
.toString();
diff --git a/java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java b/java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java
new file mode 100644
index 000000000..ede46911c
--- /dev/null
+++ b/java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 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.database;
+
+import android.content.Context;
+import com.android.dialer.inject.HasRootComponent;
+import dagger.Subcomponent;
+
+/** Dagger component for database package. */
+@Subcomponent
+public abstract class CallLogDatabaseComponent {
+
+ public abstract Coalescer coalescer();
+
+ public abstract MutationApplier mutationApplier();
+
+ public static CallLogDatabaseComponent get(Context context) {
+ return ((CallLogDatabaseComponent.HasComponent)
+ ((HasRootComponent) context.getApplicationContext()).component())
+ .callLogDatabaseComponent();
+ }
+
+ /** Used to refer to the root application component. */
+ public interface HasComponent {
+ CallLogDatabaseComponent callLogDatabaseComponent();
+ }
+}
diff --git a/java/com/android/dialer/calllog/database/CallLogMutations.java b/java/com/android/dialer/calllog/database/CallLogMutations.java
deleted file mode 100644
index ec020c6af..000000000
--- a/java/com/android/dialer/calllog/database/CallLogMutations.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2017 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.database;
-
-import android.content.ContentValues;
-import android.database.sqlite.SQLiteDatabase;
-import android.support.annotation.WorkerThread;
-import android.util.ArrayMap;
-import android.util.ArraySet;
-import com.android.dialer.common.Assert;
-
-/** A collection of mutations to the annotated call log. */
-public final class CallLogMutations {
-
- private final ArrayMap<Integer, ContentValues> inserts = new ArrayMap<>();
- private final ArrayMap<Integer, ContentValues> updates = new ArrayMap<>();
- private final ArraySet<Integer> deletes = new ArraySet<>();
-
- /** @param contentValues an entire row not including the ID */
- public void insert(int id, ContentValues contentValues) {
- inserts.put(id, contentValues);
- }
-
- /** @param contentValues the specific columns to update, not including the ID. */
- public void update(int id, ContentValues contentValues) {
- // TODO: Consider merging automatically.
- updates.put(id, contentValues);
- }
-
- public void delete(int id) {
- deletes.add(id);
- }
-
- public boolean isEmpty() {
- return inserts.isEmpty() && updates.isEmpty() && deletes.isEmpty();
- }
-
- @WorkerThread
- public void applyToDatabase(SQLiteDatabase writableDatabase) {
- Assert.isWorkerThread();
-
- // TODO: Implementation.
- }
-}
diff --git a/java/com/android/dialer/calllog/database/Coalescer.java b/java/com/android/dialer/calllog/database/Coalescer.java
new file mode 100644
index 000000000..e3dfb7ece
--- /dev/null
+++ b/java/com/android/dialer/calllog/database/Coalescer.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2017 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.database;
+
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.database.MatrixCursor;
+import android.support.annotation.NonNull;
+import android.support.annotation.WorkerThread;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.CoalescedAnnotatedCallLog;
+import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.calllog.datasources.DataSources;
+import com.android.dialer.common.Assert;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import javax.inject.Inject;
+
+/**
+ * Coalesces call log rows by combining some adjacent rows.
+ *
+ * <p>Applies the business which logic which determines which adjacent rows should be coalasced, and
+ * then delegates to each data source to determine how individual columns should be aggregated.
+ */
+public class Coalescer {
+
+ private final DataSources dataSources;
+
+ @Inject
+ Coalescer(DataSources dataSources) {
+ this.dataSources = dataSources;
+ }
+
+ /**
+ * Reads the entire {@link AnnotatedCallLog} database into memory from the provided {@code
+ * allAnnotatedCallLog} parameter and then builds and returns a new {@link MatrixCursor} which is
+ * the result of combining adjacent rows which should be collapsed for display purposes.
+ *
+ * @param allAnnotatedCallLogRowsSortedByTimestampDesc all {@link AnnotatedCallLog} rows, sorted
+ * by timestamp descending
+ * @return a new {@link MatrixCursor} containing the {@link CoalescedAnnotatedCallLog} rows to
+ * display
+ */
+ @WorkerThread
+ @NonNull
+ Cursor coalesce(@NonNull Cursor allAnnotatedCallLogRowsSortedByTimestampDesc) {
+ Assert.isWorkerThread();
+
+ // Note: This method relies on rowsShouldBeCombined to determine which rows should be combined,
+ // but delegates to data sources to actually aggregate column values.
+
+ MatrixCursor allCoalescedRowsMatrixCursor =
+ new MatrixCursor(
+ CoalescedAnnotatedCallLog.ALL_COLUMNS,
+ Assert.isNotNull(allAnnotatedCallLogRowsSortedByTimestampDesc).getCount());
+
+ if (allAnnotatedCallLogRowsSortedByTimestampDesc.moveToFirst()) {
+ int coalescedRowId = 0;
+
+ List<ContentValues> currentRowGroup = new ArrayList<>();
+
+ do {
+ ContentValues currentRow = new ContentValues();
+ DatabaseUtils.cursorRowToContentValues(
+ allAnnotatedCallLogRowsSortedByTimestampDesc, currentRow);
+
+ if (currentRowGroup.isEmpty()) {
+ currentRowGroup.add(currentRow);
+ continue;
+ }
+
+ ContentValues previousRow = currentRowGroup.get(currentRowGroup.size() - 1);
+
+ if (!rowsShouldBeCombined(previousRow, currentRow)) {
+ ContentValues coalescedRow = coalesceRowsForAllDataSources(currentRowGroup);
+ coalescedRow.put(CoalescedAnnotatedCallLog.NUMBER_CALLS, currentRowGroup.size());
+ addContentValuesToMatrixCursor(
+ coalescedRow, allCoalescedRowsMatrixCursor, coalescedRowId++);
+ currentRowGroup.clear();
+ }
+ currentRowGroup.add(currentRow);
+ } while (allAnnotatedCallLogRowsSortedByTimestampDesc.moveToNext());
+
+ // Deal with leftover rows.
+ ContentValues coalescedRow = coalesceRowsForAllDataSources(currentRowGroup);
+ coalescedRow.put(CoalescedAnnotatedCallLog.NUMBER_CALLS, currentRowGroup.size());
+ addContentValuesToMatrixCursor(coalescedRow, allCoalescedRowsMatrixCursor, coalescedRowId);
+ }
+ return allCoalescedRowsMatrixCursor;
+ }
+
+ /**
+ * @param row1 a row from {@link AnnotatedCallLog}
+ * @param row2 a row from {@link AnnotatedCallLog}
+ */
+ private static boolean rowsShouldBeCombined(ContentValues row1, ContentValues row2) {
+ // TODO: Real implementation.
+ return row1.get(AnnotatedCallLog.TIMESTAMP).equals(row2.get(AnnotatedCallLog.TIMESTAMP));
+ }
+
+ /**
+ * Delegates to data sources to aggregate individual columns to create a new coalesced row.
+ *
+ * @param individualRows {@link AnnotatedCallLog} rows sorted by timestamp descending
+ * @return a {@link CoalescedAnnotatedCallLog} row
+ */
+ private ContentValues coalesceRowsForAllDataSources(List<ContentValues> individualRows) {
+ ContentValues coalescedValues = new ContentValues();
+ for (CallLogDataSource dataSource : dataSources.getDataSourcesIncludingSystemCallLog()) {
+ coalescedValues.putAll(dataSource.coalesce(individualRows));
+ }
+ return coalescedValues;
+ }
+
+ /**
+ * @param contentValues a {@link CoalescedAnnotatedCallLog} row
+ * @param matrixCursor represents {@link CoalescedAnnotatedCallLog}
+ */
+ private static void addContentValuesToMatrixCursor(
+ ContentValues contentValues, MatrixCursor matrixCursor, int rowId) {
+ MatrixCursor.RowBuilder rowBuilder = matrixCursor.newRow();
+ rowBuilder.add(CoalescedAnnotatedCallLog._ID, rowId);
+ for (Map.Entry<String, Object> entry : contentValues.valueSet()) {
+ rowBuilder.add(entry.getKey(), entry.getValue());
+ }
+ }
+}
diff --git a/java/com/android/dialer/calllog/database/MutationApplier.java b/java/com/android/dialer/calllog/database/MutationApplier.java
new file mode 100644
index 000000000..21c8a507d
--- /dev/null
+++ b/java/com/android/dialer/calllog/database/MutationApplier.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2017 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.database;
+
+import android.content.ContentProviderOperation;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.OperationApplicationException;
+import android.os.RemoteException;
+import android.support.annotation.WorkerThread;
+import android.text.TextUtils;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
+import com.android.dialer.calllog.datasources.CallLogMutations;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Map.Entry;
+import javax.inject.Inject;
+
+/** Applies {@link CallLogMutations} to the annotated call log. */
+public class MutationApplier {
+
+ @Inject
+ MutationApplier() {}
+
+ /** Applies the provided {@link CallLogMutations} to the annotated call log. */
+ @WorkerThread
+ public void applyToDatabase(CallLogMutations mutations, Context appContext)
+ throws RemoteException, OperationApplicationException {
+ Assert.isWorkerThread();
+
+ if (mutations.isEmpty()) {
+ return;
+ }
+
+ ArrayList<ContentProviderOperation> operations = new ArrayList<>();
+
+ if (!mutations.getInserts().isEmpty()) {
+ LogUtil.i(
+ "CallLogMutations.applyToDatabase", "inserting %d rows", mutations.getInserts().size());
+ for (Entry<Long, ContentValues> entry : mutations.getInserts().entrySet()) {
+ long id = entry.getKey();
+ ContentValues contentValues = entry.getValue();
+ operations.add(
+ ContentProviderOperation.newInsert(
+ ContentUris.withAppendedId(AnnotatedCallLog.CONTENT_URI, id))
+ .withValues(contentValues)
+ .build());
+ }
+ }
+
+ if (!mutations.getUpdates().isEmpty()) {
+ LogUtil.i(
+ "CallLogMutations.applyToDatabase", "updating %d rows", mutations.getUpdates().size());
+ for (Entry<Long, ContentValues> entry : mutations.getUpdates().entrySet()) {
+ long id = entry.getKey();
+ ContentValues contentValues = entry.getValue();
+ operations.add(
+ ContentProviderOperation.newUpdate(
+ ContentUris.withAppendedId(AnnotatedCallLog.CONTENT_URI, id))
+ .withValues(contentValues)
+ .build());
+ }
+ }
+
+ if (!mutations.getDeletes().isEmpty()) {
+ LogUtil.i(
+ "CallLogMutations.applyToDatabase", "deleting %d rows", mutations.getDeletes().size());
+ String[] questionMarks = new String[mutations.getDeletes().size()];
+ Arrays.fill(questionMarks, "?");
+
+ String whereClause =
+ (AnnotatedCallLog._ID + " in (") + TextUtils.join(",", questionMarks) + ")";
+
+ String[] whereArgs = new String[mutations.getDeletes().size()];
+ int i = 0;
+ for (long id : mutations.getDeletes()) {
+ whereArgs[i++] = String.valueOf(id);
+ }
+
+ operations.add(
+ ContentProviderOperation.newDelete(AnnotatedCallLog.CONTENT_URI)
+ .withSelection(whereClause, whereArgs)
+ .build());
+ }
+
+ appContext.getContentResolver().applyBatch(AnnotatedCallLogContract.AUTHORITY, operations);
+ }
+}
diff --git a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
new file mode 100644
index 000000000..8b3b0a852
--- /dev/null
+++ b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2017 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.database.contract;
+
+import android.net.Uri;
+import android.provider.BaseColumns;
+import com.android.dialer.constants.Constants;
+import java.util.Arrays;
+
+/** Contract for the AnnotatedCallLog content provider. */
+public class AnnotatedCallLogContract {
+ public static final String AUTHORITY = Constants.get().getAnnotatedCallLogProviderAuthority();
+
+ public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY);
+
+ /**
+ * Columns shared by {@link AnnotatedCallLog} and {@link CoalescedAnnotatedCallLog}.
+ *
+ * <p>When adding columns be sure to update {@link #ALL_COMMON_COLUMNS}.
+ */
+ interface CommonColumns extends BaseColumns {
+
+ /**
+ * Timestamp of the entry, in milliseconds.
+ *
+ * <p>Type: INTEGER (long)
+ */
+ String TIMESTAMP = "timestamp";
+
+ /**
+ * Name to display for the entry.
+ *
+ * <p>Type: TEXT
+ */
+ String CONTACT_NAME = "contact_name";
+
+ String[] ALL_COMMON_COLUMNS = new String[] {_ID, TIMESTAMP, CONTACT_NAME};
+ }
+
+ /**
+ * AnnotatedCallLog table.
+ *
+ * <p>This contains all of the non-coalesced call log entries.
+ */
+ public static final class AnnotatedCallLog implements CommonColumns {
+
+ public static final String TABLE = "AnnotatedCallLog";
+
+ /** The content URI for this table. */
+ public static final Uri CONTENT_URI =
+ Uri.withAppendedPath(AnnotatedCallLogContract.CONTENT_URI, TABLE);
+
+ /** The MIME type of a {@link android.content.ContentProvider#getType(Uri)} single entry. */
+ public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/annotated_call_log";
+ }
+
+ /**
+ * Coalesced view of the AnnotatedCallLog table.
+ *
+ * <p>This is an in-memory view of the {@link AnnotatedCallLog} with some adjacent entries
+ * collapsed.
+ *
+ * <p>When adding columns be sure to update {@link #COLUMNS_ONLY_IN_COALESCED_CALL_LOG}.
+ */
+ public static final class CoalescedAnnotatedCallLog implements CommonColumns {
+
+ public static final String TABLE = "CoalescedAnnotatedCallLog";
+
+ /** The content URI for this table. */
+ public static final Uri CONTENT_URI =
+ Uri.withAppendedPath(AnnotatedCallLogContract.CONTENT_URI, TABLE);
+
+ /** The MIME type of a {@link android.content.ContentProvider#getType(Uri)} single entry. */
+ public static final String CONTENT_ITEM_TYPE =
+ "vnd.android.cursor.item/coalesced_annotated_call_log";
+
+ /**
+ * Number of AnnotatedCallLog rows represented by this CoalescedAnnotatedCallLog row.
+ *
+ * <p>Type: INTEGER
+ */
+ public static final String NUMBER_CALLS = "number_calls";
+
+ /**
+ * Columns that are only in the {@link CoalescedAnnotatedCallLog} but not the {@link
+ * AnnotatedCallLog}.
+ */
+ private static final String[] COLUMNS_ONLY_IN_COALESCED_CALL_LOG = new String[] {NUMBER_CALLS};
+
+ /** All columns in the {@link CoalescedAnnotatedCallLog}. */
+ public static final String[] ALL_COLUMNS =
+ concat(ALL_COMMON_COLUMNS, COLUMNS_ONLY_IN_COALESCED_CALL_LOG);
+ }
+
+ private static String[] concat(String[] first, String[] second) {
+ String[] result = Arrays.copyOf(first, first.length + second.length);
+ System.arraycopy(second, 0, result, first.length, second.length);
+ return result;
+ }
+}
diff --git a/java/com/android/dialer/calllog/datasources/CallLogDataSource.java b/java/com/android/dialer/calllog/datasources/CallLogDataSource.java
index 13d0b842d..3fff3ba53 100644
--- a/java/com/android/dialer/calllog/datasources/CallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/CallLogDataSource.java
@@ -16,13 +16,39 @@
package com.android.dialer.calllog.datasources;
+import android.content.ContentValues;
import android.content.Context;
-import android.database.sqlite.SQLiteDatabase;
import android.support.annotation.MainThread;
import android.support.annotation.WorkerThread;
-import com.android.dialer.calllog.database.CallLogMutations;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract;
+import java.util.List;
-/** A source of data for one or more columns in the annotated call log. */
+/**
+ * A source of data for one or more columns in the annotated call log.
+ *
+ * <p>Data sources have three lifecycle operations, which are always called on the same thread and
+ * in the same order for a particular "checkDirtyAndRebuild" cycle. However, not all operations are
+ * always invoked.
+ *
+ * <ol>
+ * <li>{@link #isDirty(Context)}: Invoked only if the framework doesn't yet know if a rebuild is
+ * necessary.
+ * <li>{@link #fill(Context, CallLogMutations)}: Invoked only if the framework determined a
+ * rebuild is necessary.
+ * <li>{@link #onSuccessfulFill(Context)}: Invoked if and only if fill was previously called and
+ * the mutations provided by the previous fill operation succeeded in being applied.
+ * </ol>
+ *
+ * <p>Because {@link #isDirty(Context)} is not always invoked, {@link #fill(Context,
+ * CallLogMutations)} shouldn't rely on any state saved during {@link #isDirty(Context)}. It
+ * <em>is</em> safe to assume that {@link #onSuccessfulFill(Context)} refers to the previous fill
+ * operation.
+ *
+ * <p>The same data source objects may be reused across multiple checkDirtyAndRebuild cycles, so
+ * implementors should take care to clear any internal state at the start of a new cycle.
+ *
+ * <p>{@link #coalesce(List)} may be called from any worker thread at any time.
+ */
public interface CallLogDataSource {
/**
@@ -35,6 +61,8 @@ public interface CallLogDataSource {
* <p>Most implementations of this method will rely on some sort of last modified timestamp. If it
* is impossible for a data source to be modified without the dialer application being notified,
* this method may immediately return false.
+ *
+ * @see CallLogDataSource class doc for complete lifecyle information
*/
@WorkerThread
boolean isDirty(Context appContext);
@@ -43,16 +71,39 @@ public interface CallLogDataSource {
* Computes the set of mutations necessary to update the annotated call log with respect to this
* data source.
*
+ * @see CallLogDataSource class doc for complete lifecyle information
* @param mutations the set of mutations which this method should contribute to. Note that it may
* contain inserts from the system call log, and these inserts should be modified by each data
* source.
*/
@WorkerThread
- void fill(
- Context appContext,
- SQLiteDatabase readableDatabase,
- long lastRebuildTimeMillis,
- CallLogMutations mutations);
+ void fill(Context appContext, CallLogMutations mutations);
+
+ /**
+ * Called after database mutations have been applied to all data sources. This is useful for
+ * saving state such as the timestamp of the last row processed in an underlying database. Note
+ * that all mutations across all data sources are applied in a single transaction.
+ *
+ * @see CallLogDataSource class doc for complete lifecyle information
+ */
+ @WorkerThread
+ void onSuccessfulFill(Context appContext);
+
+ /**
+ * Combines raw annotated call log rows into a single coalesced row.
+ *
+ * <p>May be called by any worker thread at any time so implementations should take care to be
+ * threadsafe. (Ideally no state should be required to implement this.)
+ *
+ * @param individualRowsSortedByTimestampDesc group of fully populated rows from {@link
+ * AnnotatedCallLogContract.AnnotatedCallLog} which need to be combined for display purposes.
+ * This method should not modify this list.
+ * @return a partial {@link AnnotatedCallLogContract.CoalescedAnnotatedCallLog} row containing
+ * only columns which this data source is responsible for, which is the result of aggregating
+ * {@code individualRowsSortedByTimestampDesc}.
+ */
+ @WorkerThread
+ ContentValues coalesce(List<ContentValues> individualRowsSortedByTimestampDesc);
@MainThread
void registerContentObservers(
diff --git a/java/com/android/dialer/calllog/datasources/CallLogMutations.java b/java/com/android/dialer/calllog/datasources/CallLogMutations.java
new file mode 100644
index 000000000..148601d68
--- /dev/null
+++ b/java/com/android/dialer/calllog/datasources/CallLogMutations.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2017 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.datasources;
+
+import android.content.ContentValues;
+import android.util.ArrayMap;
+import android.util.ArraySet;
+import com.android.dialer.common.Assert;
+
+/** A collection of mutations to the annotated call log. */
+public final class CallLogMutations {
+
+ private final ArrayMap<Long, ContentValues> inserts = new ArrayMap<>();
+ private final ArrayMap<Long, ContentValues> updates = new ArrayMap<>();
+ private final ArraySet<Long> deletes = new ArraySet<>();
+
+ /**
+ * @param contentValues an entire row not including the ID
+ * @throws IllegalStateException if this {@link CallLogMutations} already contains an insert,
+ * update, or delete with the provided id
+ */
+ public void insert(long id, ContentValues contentValues) {
+ Assert.checkArgument(!inserts.containsKey(id), "Can't insert row already scheduled for insert");
+ Assert.checkArgument(!updates.containsKey(id), "Can't insert row scheduled for update");
+ Assert.checkArgument(!deletes.contains(id), "Can't insert row scheduled for delete");
+
+ inserts.put(id, contentValues);
+ }
+
+ /**
+ * Stores a database update using the provided ID and content values. If this {@link
+ * CallLogMutations} object already contains an update with the specified ID, the existing content
+ * values are merged with the provided ones, with the provided ones overwriting the existing ones
+ * for values with the same key.
+ *
+ * @param contentValues the specific columns to update, not including the ID.
+ * @throws IllegalStateException if this {@link CallLogMutations} already contains an insert or
+ * delete with the provided id
+ */
+ public void update(long id, ContentValues contentValues) {
+ Assert.checkArgument(!inserts.containsKey(id), "Can't update row scheduled for insert");
+ Assert.checkArgument(!deletes.contains(id), "Can't delete row scheduled for delete");
+
+ ContentValues existingContentValues = updates.get(id);
+ if (existingContentValues != null) {
+ existingContentValues.putAll(contentValues);
+ } else {
+ updates.put(id, contentValues);
+ }
+ }
+
+ /**
+ * @throws IllegalStateException if this {@link CallLogMutations} already contains an insert,
+ * update, or delete with the provided id
+ */
+ public void delete(long id) {
+ Assert.checkArgument(!inserts.containsKey(id), "Can't delete row scheduled for insert");
+ Assert.checkArgument(!updates.containsKey(id), "Can't delete row scheduled for update");
+ Assert.checkArgument(!deletes.contains(id), "Can't delete row already scheduled for delete");
+
+ deletes.add(id);
+ }
+
+ public boolean isEmpty() {
+ return inserts.isEmpty() && updates.isEmpty() && deletes.isEmpty();
+ }
+
+ /**
+ * Get the pending inserts.
+ *
+ * @return the pending inserts where the key is the annotated call log database ID and the values
+ * are values to be inserted (not including the ID)
+ */
+ public ArrayMap<Long, ContentValues> getInserts() {
+ return inserts;
+ }
+
+ /**
+ * Get the pending updates.
+ *
+ * @return the pending updates where the key is the annotated call log database ID and the values
+ * are values to be updated (not including the ID)
+ */
+ public ArrayMap<Long, ContentValues> getUpdates() {
+ return updates;
+ }
+
+ /**
+ * Get the pending deletes.
+ *
+ * @return the annotated call log database IDs corresponding to the rows to be deleted
+ */
+ public ArraySet<Long> getDeletes() {
+ return deletes;
+ }
+}
diff --git a/java/com/android/dialer/calllog/DataSources.java b/java/com/android/dialer/calllog/datasources/DataSources.java
index 21d190167..911ca3fa3 100644
--- a/java/com/android/dialer/calllog/DataSources.java
+++ b/java/com/android/dialer/calllog/datasources/DataSources.java
@@ -14,14 +14,13 @@
* limitations under the License
*/
-package com.android.dialer.calllog;
+package com.android.dialer.calllog.datasources;
-import com.android.dialer.calllog.datasources.CallLogDataSource;
import com.android.dialer.calllog.datasources.systemcalllog.SystemCallLogDataSource;
import java.util.List;
/** Immutable lists of data sources used to populate the annotated call log. */
-interface DataSources {
+public interface DataSources {
SystemCallLogDataSource getSystemCallLogDataSource();
diff --git a/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java b/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
index 355940f6a..e9538daab 100644
--- a/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
@@ -16,13 +16,16 @@
package com.android.dialer.calllog.datasources.contacts;
+import android.content.ContentValues;
import android.content.Context;
-import android.database.sqlite.SQLiteDatabase;
import android.support.annotation.MainThread;
import android.support.annotation.WorkerThread;
-import com.android.dialer.calllog.database.CallLogMutations;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.calllog.datasources.CallLogMutations;
+import com.android.dialer.calllog.datasources.util.RowCombiner;
import com.android.dialer.common.Assert;
+import java.util.List;
import javax.inject.Inject;
/** Responsible for maintaining the contacts related columns in the annotated call log. */
@@ -44,13 +47,24 @@ public final class ContactsDataSource implements CallLogDataSource {
@Override
public void fill(
Context appContext,
- SQLiteDatabase readableDatabase,
- long lastRebuildTimeMillis,
CallLogMutations mutations) {
Assert.isWorkerThread();
// TODO: Implementation.
}
+ @Override
+ public void onSuccessfulFill(Context appContext) {
+ // TODO: Implementation.
+ }
+
+ @Override
+ public ContentValues coalesce(List<ContentValues> individualRowsSortedByTimestampDesc) {
+ // TODO: Implementation.
+ return new RowCombiner(individualRowsSortedByTimestampDesc)
+ .useSingleValueString(AnnotatedCallLog.CONTACT_NAME)
+ .combine();
+ }
+
@MainThread
@Override
public void registerContentObservers(
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
index ea6663fbe..be2df6043 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -16,28 +16,49 @@
package com.android.dialer.calllog.datasources.systemcalllog;
+import android.Manifest.permission;
+import android.annotation.TargetApi;
+import android.content.ContentValues;
import android.content.Context;
import android.database.ContentObserver;
-import android.database.sqlite.SQLiteDatabase;
+import android.database.Cursor;
import android.net.Uri;
+import android.os.Build;
import android.os.Handler;
+import android.preference.PreferenceManager;
import android.provider.CallLog;
+import android.provider.CallLog.Calls;
import android.support.annotation.MainThread;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
import android.support.annotation.WorkerThread;
-import com.android.dialer.calllog.database.CallLogMutations;
+import android.text.TextUtils;
+import android.util.ArraySet;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.calllog.datasources.CallLogMutations;
+import com.android.dialer.calllog.datasources.util.RowCombiner;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.ThreadUtil;
import com.android.dialer.util.PermissionsUtil;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
import javax.inject.Inject;
/**
* Responsible for defining the rows in the annotated call log and maintaining the columns in it
* which are derived from the system call log.
*/
+@SuppressWarnings("MissingPermission")
public class SystemCallLogDataSource implements CallLogDataSource {
+ @VisibleForTesting
+ static final String PREF_LAST_TIMESTAMP_PROCESSED = "systemCallLogLastTimestampProcessed";
+
+ @Nullable private Long lastTimestampProcessed;
+
@Inject
public SystemCallLogDataSource() {}
@@ -47,6 +68,8 @@ public class SystemCallLogDataSource implements CallLogDataSource {
Context appContext, ContentObserverCallbacks contentObserverCallbacks) {
Assert.isMainThread();
+ LogUtil.enterBlock("SystemCallLogDataSource.registerContentObservers");
+
if (!PermissionsUtil.hasCallLogReadPermissions(appContext)) {
LogUtil.i("SystemCallLogDataSource.registerContentObservers", "no call log permissions");
return;
@@ -77,17 +100,185 @@ public class SystemCallLogDataSource implements CallLogDataSource {
@WorkerThread
@Override
- public void fill(
- Context appContext,
- SQLiteDatabase readableDatabase,
- long lastRebuildTimeMillis,
- CallLogMutations mutations) {
+ public void fill(Context appContext, CallLogMutations mutations) {
Assert.isWorkerThread();
+ lastTimestampProcessed = null;
+
+ if (!PermissionsUtil.hasPermission(appContext, permission.READ_CALL_LOG)) {
+ LogUtil.i("SystemCallLogDataSource.fill", "no call log permissions");
+ return;
+ }
+
// This data source should always run first so the mutations should always be empty.
- Assert.checkState(mutations.isEmpty());
+ Assert.checkArgument(mutations.isEmpty());
+
+ Set<Long> annotatedCallLogIds = getAnnotatedCallLogIds(appContext);
+
+ LogUtil.i(
+ "SystemCallLogDataSource.fill",
+ "found %d existing annotated call log ids",
+ annotatedCallLogIds.size());
+
+ handleInsertsAndUpdates(appContext, mutations, annotatedCallLogIds);
+ handleDeletes(appContext, annotatedCallLogIds, mutations);
+ }
+
+ @WorkerThread
+ @Override
+ public void onSuccessfulFill(Context appContext) {
+ // If a fill operation was a no-op, lastTimestampProcessed could still be null.
+ if (lastTimestampProcessed != null) {
+ PreferenceManager.getDefaultSharedPreferences(appContext)
+ .edit()
+ .putLong(PREF_LAST_TIMESTAMP_PROCESSED, lastTimestampProcessed)
+ .commit();
+ }
+ }
+
+ @Override
+ public ContentValues coalesce(List<ContentValues> individualRowsSortedByTimestampDesc) {
+ // TODO: Complete implementation.
+ return new RowCombiner(individualRowsSortedByTimestampDesc)
+ .useMostRecentLong(AnnotatedCallLog.TIMESTAMP)
+ .combine();
+ }
+
+ @TargetApi(Build.VERSION_CODES.M) // Uses try-with-resources
+ private void handleInsertsAndUpdates(
+ Context appContext, CallLogMutations mutations, Set<Long> existingAnnotatedCallLogIds) {
+ long previousTimestampProcessed =
+ PreferenceManager.getDefaultSharedPreferences(appContext)
+ .getLong(PREF_LAST_TIMESTAMP_PROCESSED, 0L);
+
+ try (Cursor cursor =
+ appContext
+ .getContentResolver()
+ .query(
+ Calls.CONTENT_URI, // Excludes voicemail
+ new String[] {Calls._ID, Calls.DATE, Calls.LAST_MODIFIED},
+ Calls.LAST_MODIFIED + " > ?",
+ new String[] {String.valueOf(previousTimestampProcessed)},
+ Calls.LAST_MODIFIED + " DESC LIMIT 1000")) {
+
+ if (cursor == null) {
+ LogUtil.e("SystemCallLogDataSource.handleInsertsAndUpdates", "null cursor");
+ return;
+ }
+
+ LogUtil.i(
+ "SystemCallLogDataSource.handleInsertsAndUpdates",
+ "found %d entries to insert/update",
+ cursor.getCount());
- // TODO: Implementation.
+ if (cursor.moveToFirst()) {
+ int idColumn = cursor.getColumnIndexOrThrow(Calls._ID);
+ int dateColumn = cursor.getColumnIndexOrThrow(Calls.DATE);
+ int lastModifiedColumn = cursor.getColumnIndexOrThrow(Calls.LAST_MODIFIED);
+
+ // The cursor orders by LAST_MODIFIED DESC, so the first result is the most recent timestamp
+ // processed.
+ lastTimestampProcessed = cursor.getLong(lastModifiedColumn);
+ do {
+ long id = cursor.getLong(idColumn);
+ long date = cursor.getLong(dateColumn);
+
+ ContentValues contentValues = new ContentValues();
+ contentValues.put(AnnotatedCallLog.TIMESTAMP, date);
+
+ if (existingAnnotatedCallLogIds.contains(id)) {
+ mutations.update(id, contentValues);
+ } else {
+ mutations.insert(id, contentValues);
+ }
+ } while (cursor.moveToNext());
+ } // else no new results, do nothing.
+ }
+ }
+
+ private static void handleDeletes(
+ Context appContext, Set<Long> existingAnnotatedCallLogIds, CallLogMutations mutations) {
+ Set<Long> systemCallLogIds =
+ getIdsFromSystemCallLogThatMatch(appContext, existingAnnotatedCallLogIds);
+ LogUtil.i(
+ "SystemCallLogDataSource.handleDeletes",
+ "found %d entries in system call log",
+ systemCallLogIds.size());
+ Set<Long> idsInAnnotatedCallLogNoLongerInSystemCallLog = new ArraySet<>();
+ idsInAnnotatedCallLogNoLongerInSystemCallLog.addAll(existingAnnotatedCallLogIds);
+ idsInAnnotatedCallLogNoLongerInSystemCallLog.removeAll(systemCallLogIds);
+
+ LogUtil.i(
+ "SystemCallLogDataSource.handleDeletes",
+ "found %d call log entries to remove",
+ idsInAnnotatedCallLogNoLongerInSystemCallLog.size());
+
+ for (long id : idsInAnnotatedCallLogNoLongerInSystemCallLog) {
+ mutations.delete(id);
+ }
+ }
+
+ @TargetApi(Build.VERSION_CODES.M) // Uses try-with-resources
+ private static Set<Long> getAnnotatedCallLogIds(Context appContext) {
+ ArraySet<Long> ids = new ArraySet<>();
+
+ try (Cursor cursor =
+ appContext
+ .getContentResolver()
+ .query(
+ AnnotatedCallLog.CONTENT_URI,
+ new String[] {AnnotatedCallLog._ID},
+ null,
+ null,
+ null)) {
+
+ if (cursor == null) {
+ LogUtil.e("SystemCallLogDataSource.getAnnotatedCallLogIds", "null cursor");
+ return ids;
+ }
+
+ if (cursor.moveToFirst()) {
+ int idColumn = cursor.getColumnIndexOrThrow(AnnotatedCallLog._ID);
+ do {
+ ids.add(cursor.getLong(idColumn));
+ } while (cursor.moveToNext());
+ }
+ }
+ return ids;
+ }
+
+ @TargetApi(Build.VERSION_CODES.M) // Uses try-with-resources
+ private static Set<Long> getIdsFromSystemCallLogThatMatch(
+ Context appContext, Set<Long> matchingIds) {
+ ArraySet<Long> ids = new ArraySet<>();
+
+ String[] questionMarks = new String[matchingIds.size()];
+ Arrays.fill(questionMarks, "?");
+ String whereClause = (Calls._ID + " in (") + TextUtils.join(",", questionMarks) + ")";
+ String[] whereArgs = new String[matchingIds.size()];
+ int i = 0;
+ for (long id : matchingIds) {
+ whereArgs[i++] = String.valueOf(id);
+ }
+
+ try (Cursor cursor =
+ appContext
+ .getContentResolver()
+ .query(Calls.CONTENT_URI, new String[] {Calls._ID}, whereClause, whereArgs, null)) {
+
+ if (cursor == null) {
+ LogUtil.e("SystemCallLogDataSource.getIdsFromSystemCallLog", "null cursor");
+ return ids;
+ }
+
+ if (cursor.moveToFirst()) {
+ int idColumn = cursor.getColumnIndexOrThrow(Calls._ID);
+ do {
+ ids.add(cursor.getLong(idColumn));
+ } while (cursor.moveToNext());
+ }
+ return ids;
+ }
}
private static class CallLogObserver extends ContentObserver {
diff --git a/java/com/android/dialer/calllog/datasources/util/RowCombiner.java b/java/com/android/dialer/calllog/datasources/util/RowCombiner.java
new file mode 100644
index 000000000..0c7be1e27
--- /dev/null
+++ b/java/com/android/dialer/calllog/datasources/util/RowCombiner.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2017 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.datasources.util;
+
+import android.content.ContentValues;
+import com.android.dialer.common.Assert;
+import java.util.Iterator;
+import java.util.List;
+
+/** Convenience class for aggregating row values. */
+public class RowCombiner {
+ private final List<ContentValues> individualRowsSortedByTimestampDesc;
+ private final ContentValues combinedRow = new ContentValues();
+
+ public RowCombiner(List<ContentValues> individualRowsSortedByTimestampDesc) {
+ Assert.checkArgument(!individualRowsSortedByTimestampDesc.isEmpty());
+ this.individualRowsSortedByTimestampDesc = individualRowsSortedByTimestampDesc;
+ }
+
+ /** Use the most recent value for the specified column. */
+ public RowCombiner useMostRecentLong(String columnName) {
+ combinedRow.put(columnName, individualRowsSortedByTimestampDesc.get(0).getAsLong(columnName));
+ return this;
+ }
+
+ /** Asserts that all column values for the given column name are the same, and uses it. */
+ public RowCombiner useSingleValueString(String columnName) {
+ Iterator<ContentValues> iterator = individualRowsSortedByTimestampDesc.iterator();
+ String singleValue = iterator.next().getAsString(columnName);
+ while (iterator.hasNext()) {
+ Assert.checkState(iterator.next().getAsString(columnName).equals(singleValue));
+ }
+ combinedRow.put(columnName, singleValue);
+ return this;
+ }
+
+ public ContentValues combine() {
+ return combinedRow;
+ }
+}
diff --git a/java/com/android/dialer/calllog/testing/FakeCallLogApplication.java b/java/com/android/dialer/calllog/testing/FakeCallLogApplication.java
new file mode 100644
index 000000000..cb2240539
--- /dev/null
+++ b/java/com/android/dialer/calllog/testing/FakeCallLogApplication.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2017 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.testing;
+
+import android.app.Application;
+import com.android.dialer.calllog.CallLogModule;
+import com.android.dialer.calllog.database.CallLogDatabaseComponent;
+import com.android.dialer.inject.HasRootComponent;
+import dagger.Component;
+import javax.inject.Singleton;
+
+/**
+ * Fake application for call log robolectric tests which uses all real bindings but doesn't require
+ * tests to depend on and use all of DialerApplication.
+ */
+public final class FakeCallLogApplication extends Application implements HasRootComponent {
+
+ @Override
+ public Object component() {
+ return DaggerFakeCallLogApplication_FakeComponent.create();
+ }
+
+ @Singleton
+ @Component(modules = CallLogModule.class)
+ interface FakeComponent extends CallLogDatabaseComponent.HasComponent {}
+}
diff --git a/java/com/android/dialer/calllog/ui/AndroidManifest.xml b/java/com/android/dialer/calllog/ui/AndroidManifest.xml
index 228167749..eaf71aba8 100644
--- a/java/com/android/dialer/calllog/ui/AndroidManifest.xml
+++ b/java/com/android/dialer/calllog/ui/AndroidManifest.xml
@@ -13,4 +13,4 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<manifest package="com.android.dialer.calllog"/>
+<manifest package="com.android.dialer.calllog.ui"/>
diff --git a/java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java b/java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java
deleted file mode 100644
index cd8622e80..000000000
--- a/java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2017 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.ui;
-
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.content.CursorLoader;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.os.Build;
-import com.android.dialer.calllog.database.AnnotatedCallLog;
-import com.android.dialer.calllog.database.AnnotatedCallLog.Columns;
-
-/** CursorLoader which reads the annotated call log. */
-class AnnotatedCallLogCursorLoader extends CursorLoader {
-
- AnnotatedCallLogCursorLoader(Context context) {
- super(context);
- }
-
- @TargetApi(Build.VERSION_CODES.M) // Uses try-with-resources
- @Override
- public Cursor loadInBackground() {
- try (SQLiteDatabase readableDatabase = AnnotatedCallLog.getReadableDatabase(getContext())) {
- return readableDatabase.rawQuery(
- "SELECT * FROM "
- + AnnotatedCallLog.TABLE_NAME
- + " ORDER BY "
- + Columns.TIMESTAMP
- + " DESC",
- null /* selectionArgs */);
- }
- }
-}
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java b/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java
new file mode 100644
index 000000000..f9ab21cb3
--- /dev/null
+++ b/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2017 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.ui;
+
+import android.database.Cursor;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.CoalescedAnnotatedCallLog;
+
+/** {@link RecyclerView.Adapter} for the new call log fragment. */
+final class NewCallLogAdapter extends RecyclerView.Adapter<NewCallLogViewHolder> {
+
+ private final Cursor cursor;
+ private final int timestampIndex;
+
+ NewCallLogAdapter(Cursor cursor) {
+ this.cursor = cursor;
+ timestampIndex = cursor.getColumnIndexOrThrow(CoalescedAnnotatedCallLog.TIMESTAMP);
+ }
+
+ @Override
+ public NewCallLogViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
+ return new NewCallLogViewHolder(
+ LayoutInflater.from(viewGroup.getContext())
+ .inflate(R.layout.new_call_log_entry, viewGroup, false));
+ }
+
+ @Override
+ public void onBindViewHolder(NewCallLogViewHolder viewHolder, int position) {
+ cursor.moveToPosition(position);
+ long timestamp = cursor.getLong(timestampIndex);
+ viewHolder.bind(timestamp);
+ }
+
+ @Override
+ public int getItemCount() {
+ return cursor.getCount();
+ }
+}
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
index b8f2b1326..89ed52fd7 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
@@ -17,30 +17,30 @@ package com.android.dialer.calllog.ui;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
-import android.content.Context;
+import android.content.CursorLoader;
import android.content.Loader;
import android.database.Cursor;
import android.os.Bundle;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.CursorAdapter;
-import android.widget.ListView;
-import android.widget.SimpleCursorAdapter;
-import android.widget.TextView;
import com.android.dialer.calllog.CallLogComponent;
import com.android.dialer.calllog.CallLogFramework;
import com.android.dialer.calllog.CallLogFramework.CallLogUi;
-import com.android.dialer.calllog.database.AnnotatedCallLog.Columns;
+import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.CoalescedAnnotatedCallLog;
import com.android.dialer.common.LogUtil;
-import java.text.SimpleDateFormat;
-import java.util.Locale;
+import com.android.dialer.common.concurrent.DialerExecutor;
+import com.android.dialer.common.concurrent.DialerExecutorComponent;
+import com.android.dialer.common.concurrent.DialerExecutorFactory;
/** The "new" call log fragment implementation, which is built on top of the annotated call log. */
public final class NewCallLogFragment extends Fragment
implements CallLogUi, LoaderCallbacks<Cursor> {
- private CursorAdapter cursorAdapter;
+ private DialerExecutor<Boolean> refreshAnnotatedCallLogTask;
+ private RecyclerView recyclerView;
public NewCallLogFragment() {
LogUtil.enterBlock("NewCallLogFragment.NewCallLogFragment");
@@ -52,8 +52,27 @@ public final class NewCallLogFragment extends Fragment
LogUtil.enterBlock("NewCallLogFragment.onCreate");
- CallLogFramework callLogFramework = CallLogComponent.get(getContext()).callLogFramework();
+ CallLogComponent component = CallLogComponent.get(getContext());
+ CallLogFramework callLogFramework = component.callLogFramework();
callLogFramework.attachUi(this);
+
+ DialerExecutorFactory dialerExecutorFactory =
+ DialerExecutorComponent.get(getContext()).dialerExecutorFactory();
+
+ refreshAnnotatedCallLogTask =
+ dialerExecutorFactory
+ .createUiTaskBuilder(
+ getFragmentManager(),
+ "NewCallLogFragment.refreshAnnotatedCallLog",
+ component.getRefreshAnnotatedCallLogWorker())
+ .build();
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
+ LogUtil.enterBlock("NewCallLogFragment.onStart");
}
@Override
@@ -64,6 +83,9 @@ public final class NewCallLogFragment extends Fragment
CallLogFramework callLogFramework = CallLogComponent.get(getContext()).callLogFramework();
callLogFramework.attachUi(this);
+
+ // TODO: Consider doing this when fragment becomes visible.
+ checkAnnotatedCallLogDirtyAndRefreshIfNecessary();
}
@Override
@@ -82,57 +104,44 @@ public final class NewCallLogFragment extends Fragment
LogUtil.enterBlock("NewCallLogFragment.onCreateView");
View view = inflater.inflate(R.layout.new_call_log_fragment, container, false);
- ListView listView = (ListView) view.findViewById(R.id.list);
+ recyclerView = view.findViewById(R.id.new_call_log_recycler_view);
- this.cursorAdapter =
- new MyCursorAdapter(
- getContext(),
- R.layout.new_call_log_entry,
- null /* cursor */,
- new String[] {Columns.TIMESTAMP, Columns.CONTACT_NAME},
- new int[] {R.id.timestamp, R.id.contact_name},
- 0);
- listView.setAdapter(cursorAdapter);
-
- getLoaderManager().initLoader(0, null, this);
+ getLoaderManager().restartLoader(0, null, this);
return view;
}
+ private void checkAnnotatedCallLogDirtyAndRefreshIfNecessary() {
+ LogUtil.enterBlock("NewCallLogFragment.checkAnnotatedCallLogDirtyAndRefreshIfNecessary");
+ refreshAnnotatedCallLogTask.executeSerial(false /* skipDirtyCheck */);
+ }
+
@Override
public void invalidateUi() {
LogUtil.enterBlock("NewCallLogFragment.invalidateUi");
- // TODO: Implementation.
+ refreshAnnotatedCallLogTask.executeSerial(true /* skipDirtyCheck */);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- // TODO: This is sort of weird, do we need to implement a content provider?
- return new AnnotatedCallLogCursorLoader(getContext());
+ LogUtil.enterBlock("NewCallLogFragment.onCreateLoader");
+ // CoalescedAnnotatedCallLog requires that all params be null.
+ return new CursorLoader(
+ getContext(), CoalescedAnnotatedCallLog.CONTENT_URI, null, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor newCursor) {
- cursorAdapter.swapCursor(newCursor);
+ LogUtil.enterBlock("NewCallLogFragment.onLoadFinished");
+
+ // TODO: Handle empty cursor by showing empty view.
+ recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+ recyclerView.setAdapter(new NewCallLogAdapter(newCursor));
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
- cursorAdapter.swapCursor(null);
- }
-
- private static class MyCursorAdapter extends SimpleCursorAdapter {
-
- MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
- super(context, layout, c, from, to, flags);
- }
-
- @Override
- public void setViewText(TextView view, String text) {
- if (view.getId() == R.id.timestamp) {
- text = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US).format(Long.valueOf(text));
- }
- view.setText(text);
- }
+ LogUtil.enterBlock("NewCallLogFragment.onLoaderReset");
+ recyclerView.setAdapter(null);
}
}
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
new file mode 100644
index 000000000..4c459e123
--- /dev/null
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2017 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.ui;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.TextView;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+/** {@link RecyclerView.ViewHolder} for the new call log. */
+final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
+
+ // TODO: Format correctly using current locale.
+ private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US);
+
+ private final TextView contactNameView;
+ private final TextView timestampView;
+
+ NewCallLogViewHolder(View view) {
+ super(view);
+ contactNameView = view.findViewById(R.id.contact_name);
+ timestampView = view.findViewById(R.id.timestamp);
+ }
+
+ void bind(long timestamp) {
+ contactNameView.setText("Contact Name Placeholder");
+ timestampView.setText(dateFormat.format(timestamp));
+ }
+}
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
index ee3efd002..99797fab4 100644
--- a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
+++ b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
@@ -18,16 +18,20 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal">
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:orientation="vertical">
<TextView
- android:id="@+id/timestamp"
+ android:id="@+id/contact_name"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
+ android:layout_height="wrap_content"
+ style="@style/PrimaryText"/>
<TextView
- android:id="@+id/contact_name"
+ android:id="@+id/timestamp"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
+ android:layout_height="wrap_content"
+ style="@style/SecondaryText"/>
+
</LinearLayout> \ No newline at end of file
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml
index 433dbdd0f..e1d8410b6 100644
--- a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml
+++ b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml
@@ -15,8 +15,9 @@
~ limitations under the License
-->
-<ListView
+<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/list"
+ android:id="@+id/new_call_log_recycler_view"
android:layout_width="match_parent"
- android:layout_height="match_parent"/>
+ android:layout_height="match_parent"
+ android:background="@color/background_dialer_light"/>
diff --git a/java/com/android/dialer/common/Assert.java b/java/com/android/dialer/common/Assert.java
index 189d209c8..943e1ddcf 100644
--- a/java/com/android/dialer/common/Assert.java
+++ b/java/com/android/dialer/common/Assert.java
@@ -30,10 +30,6 @@ public class Assert {
Assert.areThreadAssertsEnabled = areThreadAssertsEnabled;
}
- public static boolean areThreadAssertsEnabled() {
- return areThreadAssertsEnabled;
- }
-
/**
* Called when a truly exceptional case occurs.
*
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutorComponent.java b/java/com/android/dialer/common/concurrent/DialerExecutorComponent.java
new file mode 100644
index 000000000..25033251f
--- /dev/null
+++ b/java/com/android/dialer/common/concurrent/DialerExecutorComponent.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2017 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.common.concurrent;
+
+import android.content.Context;
+import com.android.dialer.inject.HasRootComponent;
+import dagger.Subcomponent;
+
+/** Dagger component which provides a {@link DialerExecutorFactory}. */
+@Subcomponent
+public abstract class DialerExecutorComponent {
+
+ public abstract DialerExecutorFactory dialerExecutorFactory();
+
+ public static DialerExecutorComponent get(Context context) {
+ return ((DialerExecutorComponent.HasComponent)
+ ((HasRootComponent) context.getApplicationContext()).component())
+ .dialerExecutorComponent();
+ }
+
+ /** Used to refer to the root application component. */
+ public interface HasComponent {
+ DialerExecutorComponent dialerExecutorComponent();
+ }
+}
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutorModule.java b/java/com/android/dialer/common/concurrent/DialerExecutorModule.java
new file mode 100644
index 000000000..281f88c15
--- /dev/null
+++ b/java/com/android/dialer/common/concurrent/DialerExecutorModule.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2017 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.common.concurrent;
+
+import dagger.Binds;
+import dagger.Module;
+
+/** Module which binds the production {@link DialerExecutorFactory}. */
+@Module
+public abstract class DialerExecutorModule {
+
+ @Binds
+ abstract DialerExecutorFactory bindDialerExecutorFactory(
+ DefaultDialerExecutorFactory defaultDialerExecutorFactory);
+}
diff --git a/java/com/android/dialer/compat/CompatUtils.java b/java/com/android/dialer/compat/CompatUtils.java
index 673cb709b..351c89ad7 100644
--- a/java/com/android/dialer/compat/CompatUtils.java
+++ b/java/com/android/dialer/compat/CompatUtils.java
@@ -16,15 +16,9 @@
package com.android.dialer.compat;
import android.os.Build;
-import android.support.annotation.Nullable;
-import android.text.TextUtils;
-import android.util.Log;
-import java.lang.reflect.InvocationTargetException;
public final class CompatUtils {
- private static final String TAG = CompatUtils.class.getSimpleName();
-
/** PrioritizedMimeType is added in API level 23. */
public static boolean hasPrioritizedMimeType() {
return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M;
@@ -70,153 +64,4 @@ public final class CompatUtils {
public static boolean isCallSubjectCompatible() {
return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP) >= Build.VERSION_CODES.M;
}
-
- /**
- * Determines if this version is compatible with a default dialer. Can also force the version to
- * be lower through {@link SdkVersionOverride}.
- *
- * @return {@code true} if default dialer is a feature on this device, {@code false} otherwise.
- */
- public static boolean isDefaultDialerCompatible() {
- return isMarshmallowCompatible();
- }
-
- /**
- * Determines if this version is compatible with Lollipop Mr1-specific APIs. Can also force the
- * version to be lower through SdkVersionOverride.
- *
- * @return {@code true} if runtime sdk is compatible with Lollipop MR1, {@code false} otherwise.
- */
- public static boolean isLollipopMr1Compatible() {
- return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP_MR1)
- >= Build.VERSION_CODES.LOLLIPOP_MR1;
- }
-
- /**
- * Determines if this version is compatible with Marshmallow-specific APIs. Can also force the
- * version to be lower through SdkVersionOverride.
- *
- * @return {@code true} if runtime sdk is compatible with Marshmallow, {@code false} otherwise.
- */
- public static boolean isMarshmallowCompatible() {
- return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP) >= Build.VERSION_CODES.M;
- }
-
- /**
- * Determines if the given class is available. Can be used to check if system apis exist at
- * runtime.
- *
- * @param className the name of the class to look for.
- * @return {@code true} if the given class is available, {@code false} otherwise or if className
- * is empty.
- */
- public static boolean isClassAvailable(@Nullable String className) {
- if (TextUtils.isEmpty(className)) {
- return false;
- }
- try {
- Class.forName(className);
- return true;
- } catch (ClassNotFoundException e) {
- return false;
- } catch (Throwable t) {
- Log.e(
- TAG,
- "Unexpected exception when checking if class:" + className + " exists at " + "runtime",
- t);
- return false;
- }
- }
-
- /**
- * Determines if the given class's method is available to call. Can be used to check if system
- * apis exist at runtime.
- *
- * @param className the name of the class to look for
- * @param methodName the name of the method to look for
- * @param parameterTypes the needed parameter types for the method to look for
- * @return {@code true} if the given class is available, {@code false} otherwise or if className
- * or methodName are empty.
- */
- public static boolean isMethodAvailable(
- @Nullable String className, @Nullable String methodName, Class<?>... parameterTypes) {
- if (TextUtils.isEmpty(className) || TextUtils.isEmpty(methodName)) {
- return false;
- }
-
- try {
- Class.forName(className).getMethod(methodName, parameterTypes);
- return true;
- } catch (ClassNotFoundException | NoSuchMethodException e) {
- Log.v(TAG, "Could not find method: " + className + "#" + methodName);
- return false;
- } catch (Throwable t) {
- Log.e(
- TAG,
- "Unexpected exception when checking if method: "
- + className
- + "#"
- + methodName
- + " exists at runtime",
- t);
- return false;
- }
- }
-
- /**
- * Invokes a given class's method using reflection. Can be used to call system apis that exist at
- * runtime but not in the SDK.
- *
- * @param instance The instance of the class to invoke the method on.
- * @param methodName The name of the method to invoke.
- * @param parameterTypes The needed parameter types for the method.
- * @param parameters The parameter values to pass into the method.
- * @return The result of the invocation or {@code null} if instance or methodName are empty, or if
- * the reflection fails.
- */
- @Nullable
- public static Object invokeMethod(
- @Nullable Object instance,
- @Nullable String methodName,
- Class<?>[] parameterTypes,
- Object[] parameters) {
- if (instance == null || TextUtils.isEmpty(methodName)) {
- return null;
- }
-
- String className = instance.getClass().getName();
- try {
- return Class.forName(className)
- .getMethod(methodName, parameterTypes)
- .invoke(instance, parameters);
- } catch (ClassNotFoundException
- | NoSuchMethodException
- | IllegalArgumentException
- | IllegalAccessException
- | InvocationTargetException e) {
- Log.v(TAG, "Could not invoke method: " + className + "#" + methodName);
- return null;
- } catch (Throwable t) {
- Log.e(
- TAG,
- "Unexpected exception when invoking method: "
- + className
- + "#"
- + methodName
- + " at runtime",
- t);
- return null;
- }
- }
-
- /**
- * Determines if this version is compatible with Lollipop-specific APIs. Can also force the
- * version to be lower through SdkVersionOverride.
- *
- * @return {@code true} if call subject is a feature on this device, {@code false} otherwise.
- */
- public static boolean isLollipopCompatible() {
- return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP)
- >= Build.VERSION_CODES.LOLLIPOP;
- }
}
diff --git a/java/com/android/dialer/constants/Constants.java b/java/com/android/dialer/constants/Constants.java
index d92c0bcfc..076393e63 100644
--- a/java/com/android/dialer/constants/Constants.java
+++ b/java/com/android/dialer/constants/Constants.java
@@ -53,5 +53,8 @@ public abstract class Constants {
@NonNull
public abstract String getFileProviderAuthority();
+ @NonNull
+ public abstract String getAnnotatedCallLogProviderAuthority();
+
protected Constants() {}
}
diff --git a/java/com/android/dialer/constants/ScheduledJobIds.java b/java/com/android/dialer/constants/ScheduledJobIds.java
index 2fed4ef8a..a54adc757 100644
--- a/java/com/android/dialer/constants/ScheduledJobIds.java
+++ b/java/com/android/dialer/constants/ScheduledJobIds.java
@@ -32,6 +32,7 @@ public final class ScheduledJobIds {
public static final int VVM_TASK_SCHEDULER_JOB = 200;
public static final int VVM_STATUS_CHECK_JOB = 201;
public static final int VVM_DEVICE_PROVISIONED_JOB = 202;
+ public static final int VVM_TRANSCRIPTION_JOB = 203;
public static final int VOIP_REGISTRATION = 300;
diff --git a/java/com/android/dialer/constants/TrafficStatsTags.java b/java/com/android/dialer/constants/TrafficStatsTags.java
new file mode 100644
index 000000000..4e6140431
--- /dev/null
+++ b/java/com/android/dialer/constants/TrafficStatsTags.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2017 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.constants;
+
+/** Registry of tags for {@link android.net.TrafficStats#setThreadStatsTag(int)} */
+public class TrafficStatsTags {
+ public static final int CONTACT_PHOTO_DOWNLOAD_TAG = 0x0001;
+ public static final int NEARBY_PLACES_TAG = 0xaaaa;
+ public static final int REVERSE_LOOKUP_CONTACT_TAG = 0xbaaa;
+ public static final int REVERSE_LOOKUP_IMAGE_TAG = 0xbaab;
+ public static final int DOWNLOAD_LOCATION_MAP_TAG = 0xd000;
+ public static final int REVERSE_GEOCODE_TAG = 0xd001;
+ public static final int VISUAL_VOICEMAIL_TAG = 0xd002;
+}
diff --git a/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java b/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
index 6b78b986c..1111732f3 100644
--- a/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
+++ b/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
@@ -34,4 +34,10 @@ public class ConstantsImpl extends Constants {
public String getFileProviderAuthority() {
return "com.android.dialer.files";
}
+
+ @NonNull
+ @Override
+ public String getAnnotatedCallLogProviderAuthority() {
+ return "com.android.dialer.annotatedcalllog";
+ }
}
diff --git a/java/com/android/dialer/contactactions/AndroidManifest.xml b/java/com/android/dialer/contactactions/AndroidManifest.xml
new file mode 100644
index 000000000..a64066e0b
--- /dev/null
+++ b/java/com/android/dialer/contactactions/AndroidManifest.xml
@@ -0,0 +1,16 @@
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<manifest package="com.android.dialer.contactactions"/>
diff --git a/java/com/android/dialer/contactactions/ContactActionBottomSheet.java b/java/com/android/dialer/contactactions/ContactActionBottomSheet.java
new file mode 100644
index 000000000..4718ff036
--- /dev/null
+++ b/java/com/android/dialer/contactactions/ContactActionBottomSheet.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2017 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.contactactions;
+
+import android.content.Context;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.design.widget.BottomSheetDialog;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.dialer.common.Assert;
+import com.android.dialer.dialercontact.DialerContact;
+import java.util.List;
+
+/**
+ * {@link BottomSheetDialog} used for building a list of contact actions in a bottom sheet menu.
+ *
+ * <p>{@link #show(Context, DialerContact, List)} should be used to create and display the menu.
+ * Modules are built using {@link ContactActionModule} and some defaults are provided by {@link
+ * IntentModule} and {@link DividerModule}.
+ */
+public class ContactActionBottomSheet extends BottomSheetDialog implements OnClickListener {
+
+ private final List<ContactActionModule> modules;
+ private final DialerContact contact;
+
+ private ContactActionBottomSheet(
+ Context context, DialerContact contact, List<ContactActionModule> modules) {
+ super(context);
+ this.modules = modules;
+ this.contact = contact;
+ setContentView(LayoutInflater.from(context).inflate(R.layout.sheet_layout, null));
+ }
+
+ public static ContactActionBottomSheet show(
+ Context context, DialerContact contact, List<ContactActionModule> modules) {
+ ContactActionBottomSheet sheet = new ContactActionBottomSheet(context, contact, modules);
+ sheet.show();
+ return sheet;
+ }
+
+ @Override
+ protected void onCreate(Bundle bundle) {
+ super.onCreate(bundle);
+ LinearLayout container = Assert.isNotNull(findViewById(R.id.action_container));
+ container.addView(getContactView(container));
+
+ for (ContactActionModule module : modules) {
+ if (module instanceof DividerModule) {
+ container.addView(getDividerView(container));
+ } else {
+ container.addView(getModuleView(container, module));
+ }
+ }
+ }
+
+ // TODO: add on click action to contact.
+ private View getContactView(ViewGroup container) {
+ LayoutInflater inflater = LayoutInflater.from(getContext());
+ View contactView = inflater.inflate(R.layout.contact_layout, container, false);
+
+ ContactPhotoManager.getInstance(getContext())
+ .loadDialerThumbnailOrPhoto(
+ contactView.findViewById(R.id.quick_contact_photo),
+ contact.hasContactUri() ? Uri.parse(contact.getContactUri()) : null,
+ contact.getPhotoId(),
+ contact.hasPhotoUri() ? Uri.parse(contact.getPhotoUri()) : null,
+ contact.getNameOrNumber(),
+ contact.getContactType());
+
+ TextView nameView = contactView.findViewById(R.id.contact_name);
+ TextView numberView = contactView.findViewById(R.id.phone_number);
+
+ nameView.setText(contact.getNameOrNumber());
+ if (!TextUtils.isEmpty(contact.getDisplayNumber())) {
+ numberView.setVisibility(View.VISIBLE);
+ String secondaryInfo =
+ TextUtils.isEmpty(contact.getNumberLabel())
+ ? contact.getDisplayNumber()
+ : getContext()
+ .getString(
+ com.android.contacts.common.R.string.call_subject_type_and_number,
+ contact.getNumberLabel(),
+ contact.getDisplayNumber());
+ numberView.setText(secondaryInfo);
+ } else {
+ numberView.setVisibility(View.GONE);
+ numberView.setText(null);
+ }
+ return contactView;
+ }
+
+ private View getDividerView(ViewGroup container) {
+ LayoutInflater inflater = LayoutInflater.from(getContext());
+ return inflater.inflate(R.layout.divider_layout, container, false);
+ }
+
+ private View getModuleView(ViewGroup container, ContactActionModule module) {
+ LayoutInflater inflater = LayoutInflater.from(getContext());
+ View moduleView = inflater.inflate(R.layout.module_layout, container, false);
+ ((TextView) moduleView.findViewById(R.id.module_text)).setText(module.getStringId());
+ ((ImageView) moduleView.findViewById(R.id.module_image))
+ .setImageResource(module.getDrawableId());
+ moduleView.setOnClickListener(this);
+ moduleView.setTag(module);
+ return moduleView;
+ }
+
+ @Override
+ public void onClick(View view) {
+ if (((ContactActionModule) view.getTag()).onClick()) {
+ dismiss();
+ }
+ }
+}
diff --git a/java/com/android/dialer/contactactions/ContactActionModule.java b/java/com/android/dialer/contactactions/ContactActionModule.java
new file mode 100644
index 000000000..8089edc7b
--- /dev/null
+++ b/java/com/android/dialer/contactactions/ContactActionModule.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2017 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.contactactions;
+
+import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
+
+/**
+ * Modules used to build {@link ContactActionBottomSheet}.
+ *
+ * <p>Contacts as they relate to this class should be thought of as any entity that an action can be
+ * performed on like unknown/restricted contacts, along with saved and non-saved contacts.
+ */
+public interface ContactActionModule {
+
+ @StringRes
+ int getStringId();
+
+ @DrawableRes
+ int getDrawableId();
+
+ /** @return true if the bottom sheet should close, false otherwise */
+ boolean onClick();
+}
diff --git a/java/com/android/dialer/contactactions/DividerModule.java b/java/com/android/dialer/contactactions/DividerModule.java
new file mode 100644
index 000000000..aabd160db
--- /dev/null
+++ b/java/com/android/dialer/contactactions/DividerModule.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2017 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.contactactions;
+
+import com.android.dialer.common.Assert;
+
+/**
+ * A module that inserts a grey line divider into {@link ContactActionModule}. Layout it provided in
+ * R.layout.divider_layout.xml
+ */
+public final class DividerModule implements ContactActionModule {
+
+ @Override
+ public int getStringId() {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public int getDrawableId() {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public boolean onClick() {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+}
diff --git a/java/com/android/dialer/contactactions/IntentModule.java b/java/com/android/dialer/contactactions/IntentModule.java
new file mode 100644
index 000000000..201f52192
--- /dev/null
+++ b/java/com/android/dialer/contactactions/IntentModule.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2017 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.contactactions;
+
+import android.content.Context;
+import android.content.Intent;
+import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
+import com.android.dialer.callintent.CallInitiationType.Type;
+import com.android.dialer.callintent.CallIntentBuilder;
+
+/**
+ * {@link ContactActionModule} useful for making easy to build modules based on starting an intent.
+ */
+public class IntentModule implements ContactActionModule {
+
+ private final Context context;
+ private final Intent intent;
+ private final @StringRes int text;
+ private final @DrawableRes int image;
+
+ public IntentModule(Context context, Intent intent, @StringRes int text, @DrawableRes int image) {
+ this.context = context;
+ this.intent = intent;
+ this.text = text;
+ this.image = image;
+ }
+
+ @Override
+ public int getStringId() {
+ return text;
+ }
+
+ @Override
+ public int getDrawableId() {
+ return image;
+ }
+
+ @Override
+ public boolean onClick() {
+ context.startActivity(intent);
+ return true;
+ }
+
+ public static IntentModule newCallModule(Context context, String number, Type initiationType) {
+ return new IntentModule(
+ context,
+ new CallIntentBuilder(number, initiationType).build(),
+ R.string.call,
+ R.drawable.quantum_ic_call_white_24);
+ }
+
+ public static IntentModule newVideoCallModule(
+ Context context, String number, Type initiationType) {
+ return new IntentModule(
+ context,
+ new CallIntentBuilder(number, initiationType).setIsVideoCall(true).build(),
+ R.string.video_call,
+ R.drawable.quantum_ic_videocam_white_24);
+ }
+}
diff --git a/java/com/android/dialer/contactactions/res/layout/contact_layout.xml b/java/com/android/dialer/contactactions/res/layout/contact_layout.xml
new file mode 100644
index 000000000..bf3297153
--- /dev/null
+++ b/java/com/android/dialer/contactactions/res/layout/contact_layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="12dp"
+ android:layout_marginEnd="8dp">
+
+ <QuickContactBadge
+ android:id="@+id/quick_contact_photo"
+ android:layout_width="@dimen/contact_actions_image_size"
+ android:layout_height="@dimen/contact_actions_image_size"
+ android:layout_marginStart="@dimen/contact_actions_image_margin"
+ android:layout_marginEnd="@dimen/contact_actions_image_margin"
+ android:padding="4dp"
+ android:focusable="true"/>
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical">
+
+ <TextView
+ android:id="@+id/contact_name"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/PrimaryText"/>
+
+ <TextView
+ android:id="@+id/phone_number"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ style="@style/SecondaryText"/>
+ </LinearLayout>
+</LinearLayout> \ No newline at end of file
diff --git a/java/com/android/dialer/contactactions/res/layout/divider_layout.xml b/java/com/android/dialer/contactactions/res/layout/divider_layout.xml
new file mode 100644
index 000000000..fdee50e48
--- /dev/null
+++ b/java/com/android/dialer/contactactions/res/layout/divider_layout.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<View
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp"
+ android:background="#12000000"/>
diff --git a/java/com/android/dialer/contactactions/res/layout/module_layout.xml b/java/com/android/dialer/contactactions/res/layout/module_layout.xml
new file mode 100644
index 000000000..9aee67937
--- /dev/null
+++ b/java/com/android/dialer/contactactions/res/layout/module_layout.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/module_container"
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?android:attr/selectableItemBackground">
+
+ <ImageView
+ android:id="@+id/module_image"
+ android:layout_width="@dimen/contact_actions_image_size"
+ android:layout_height="@dimen/contact_actions_image_size"
+ android:layout_marginStart="@dimen/contact_actions_image_margin"
+ android:layout_marginEnd="@dimen/contact_actions_image_margin"
+ android:tint="@color/dialer_secondary_text_color"
+ android:scaleType="center"/>
+
+ <TextView
+ android:id="@+id/module_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ style="@style/PrimaryText"/>
+</LinearLayout> \ No newline at end of file
diff --git a/java/com/android/dialer/contactactions/res/layout/sheet_layout.xml b/java/com/android/dialer/contactactions/res/layout/sheet_layout.xml
new file mode 100644
index 000000000..6984367bf
--- /dev/null
+++ b/java/com/android/dialer/contactactions/res/layout/sheet_layout.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/action_container"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingTop="4dp"
+ android:paddingBottom="8dp"/>
diff --git a/java/com/android/dialer/contactactions/res/values/dimens.xml b/java/com/android/dialer/contactactions/res/values/dimens.xml
new file mode 100644
index 000000000..47bf804ac
--- /dev/null
+++ b/java/com/android/dialer/contactactions/res/values/dimens.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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>
+ <dimen name="contact_actions_image_size">48dp</dimen>
+ <dimen name="contact_actions_image_margin">12dp</dimen>
+</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/contactsfragment/ContactViewHolder.java b/java/com/android/dialer/contactsfragment/ContactViewHolder.java
index 5df106dbc..586e22aab 100644
--- a/java/com/android/dialer/contactsfragment/ContactViewHolder.java
+++ b/java/com/android/dialer/contactsfragment/ContactViewHolder.java
@@ -16,6 +16,7 @@
package com.android.dialer.contactsfragment;
+import android.content.Context;
import android.net.Uri;
import android.provider.ContactsContract.QuickContact;
import android.support.v7.widget.RecyclerView;
@@ -25,6 +26,8 @@ import android.view.View.OnClickListener;
import android.widget.QuickContactBadge;
import android.widget.TextView;
import com.android.dialer.common.Assert;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
/** View holder for a contact. */
final class ContactViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
@@ -32,12 +35,14 @@ final class ContactViewHolder extends RecyclerView.ViewHolder implements OnClick
private final TextView header;
private final TextView name;
private final QuickContactBadge photo;
+ private final Context context;
private String headerText;
private Uri contactUri;
public ContactViewHolder(View itemView) {
super(itemView);
+ context = itemView.getContext();
itemView.findViewById(R.id.click_target).setOnClickListener(this);
header = (TextView) itemView.findViewById(R.id.header);
name = (TextView) itemView.findViewById(R.id.contact_name);
@@ -60,6 +65,10 @@ final class ContactViewHolder extends RecyclerView.ViewHolder implements OnClick
name.setText(displayName);
header.setText(headerText);
header.setVisibility(showHeader ? View.VISIBLE : View.INVISIBLE);
+
+ Logger.get(context)
+ .logQuickContactOnTouch(
+ photo, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_BADGE, true);
}
public QuickContactBadge getPhoto() {
@@ -76,6 +85,8 @@ final class ContactViewHolder extends RecyclerView.ViewHolder implements OnClick
@Override
public void onClick(View v) {
+ Logger.get(context)
+ .logInteraction(InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_ITEM);
QuickContact.showQuickContact(
photo.getContext(), photo, contactUri, QuickContact.MODE_LARGE, null /* excludeMimes */);
}
diff --git a/java/com/android/dialer/contactsfragment/ContactsAdapter.java b/java/com/android/dialer/contactsfragment/ContactsAdapter.java
index 4692eff5d..309e034cc 100644
--- a/java/com/android/dialer/contactsfragment/ContactsAdapter.java
+++ b/java/com/android/dialer/contactsfragment/ContactsAdapter.java
@@ -23,10 +23,10 @@ import android.provider.ContactsContract.Contacts;
import android.support.v4.util.ArrayMap;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
+import android.view.View;
import android.view.ViewGroup;
-import android.widget.TextView;
import com.android.contacts.common.ContactPhotoManager;
-import com.android.dialer.common.Assert;
+import com.android.contacts.common.lettertiles.LetterTileDrawable;
/** List adapter for the union of all contacts associated with every account on the device. */
final class ContactsAdapter extends RecyclerView.Adapter<ContactViewHolder> {
@@ -70,7 +70,7 @@ final class ContactsAdapter extends RecyclerView.Adapter<ContactViewHolder> {
getPhotoId(cursor),
getPhotoUri(cursor),
name,
- 0);
+ LetterTileDrawable.TYPE_DEFAULT);
String photoDescription =
context.getString(com.android.contacts.common.R.string.description_quick_contact_for, name);
@@ -79,17 +79,23 @@ final class ContactsAdapter extends RecyclerView.Adapter<ContactViewHolder> {
// Always show the view holder's header if it's the first item in the list. Otherwise, compare
// it to the previous element and only show the anchored header if the row elements fall into
// the same sublists.
- if (position == 0) {
- contactViewHolder.bind(header, name, contactUri, true);
- } else {
- boolean showHeader = !header.equals(getHeaderString(position - 1));
- contactViewHolder.bind(header, name, contactUri, showHeader);
- }
+ boolean showHeader = position == 0 || !header.equals(getHeaderString(position - 1));
+ contactViewHolder.bind(header, name, contactUri, showHeader);
+ }
+
+ @Override
+ public void onViewRecycled(ContactViewHolder contactViewHolder) {
+ super.onViewRecycled(contactViewHolder);
+ holderMap.remove(contactViewHolder);
}
public void refreshHeaders() {
for (ContactViewHolder holder : holderMap.keySet()) {
- onBindViewHolder(holder, holderMap.get(holder));
+ int position = holderMap.get(holder);
+ boolean showHeader =
+ position == 0 || !getHeaderString(position).equals(getHeaderString(position - 1));
+ int visibility = showHeader ? View.VISIBLE : View.INVISIBLE;
+ holder.getHeaderView().setVisibility(visibility);
}
}
@@ -98,27 +104,6 @@ final class ContactsAdapter extends RecyclerView.Adapter<ContactViewHolder> {
return cursor == null ? 0 : cursor.getCount();
}
- public String getHeader(int position) {
- return getHolderAt(position).getHeader();
- }
-
- public TextView getHeaderView(int position) {
- return getHolderAt(position).getHeaderView();
- }
-
- public void setHeaderVisibility(int position, int visibility) {
- getHolderAt(position).getHeaderView().setVisibility(visibility);
- }
-
- private ContactViewHolder getHolderAt(int position) {
- for (ContactViewHolder holder : holderMap.keySet()) {
- if (holderMap.get(holder) == position) {
- return holder;
- }
- }
- throw Assert.createIllegalStateFailException("No holder for position: " + position);
- }
-
private static String getDisplayName(Cursor cursor) {
return cursor.getString(ContactsCursorLoader.CONTACT_DISPLAY_NAME);
}
@@ -138,7 +123,7 @@ final class ContactsAdapter extends RecyclerView.Adapter<ContactViewHolder> {
return Contacts.getLookupUri(contactId, lookupKey);
}
- private String getHeaderString(int position) {
+ public String getHeaderString(int position) {
int index = -1;
int sum = 0;
while (sum <= position) {
diff --git a/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java b/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java
index 6d4d21079..2bb540ac0 100644
--- a/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java
+++ b/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java
@@ -29,7 +29,7 @@ final class ContactsCursorLoader extends CursorLoader {
public static final int CONTACT_PHOTO_URI = 3;
public static final int CONTACT_LOOKUP_KEY = 4;
- public static final String[] CONTACTS_PROJECTION =
+ public static final String[] CONTACTS_PROJECTION_DISPLAY_NAME_PRIMARY =
new String[] {
Contacts._ID, // 0
Contacts.DISPLAY_NAME_PRIMARY, // 1
@@ -38,16 +38,35 @@ final class ContactsCursorLoader extends CursorLoader {
Contacts.LOOKUP_KEY, // 4
};
- public ContactsCursorLoader(Context context) {
+ public static final String[] CONTACTS_PROJECTION_DISPLAY_NAME_ALTERNATIVE =
+ new String[] {
+ Contacts._ID, // 0
+ Contacts.DISPLAY_NAME_ALTERNATIVE, // 1
+ Contacts.PHOTO_ID, // 2
+ Contacts.PHOTO_THUMBNAIL_URI, // 3
+ Contacts.LOOKUP_KEY, // 4
+ };
+
+ private ContactsCursorLoader(Context context, String[] contactProjection, String sortKey) {
super(
context,
Contacts.CONTENT_URI
.buildUpon()
.appendQueryParameter(Contacts.EXTRA_ADDRESS_BOOK_INDEX, "true")
.build(),
- CONTACTS_PROJECTION,
+ contactProjection,
null,
null,
- Contacts.SORT_KEY_PRIMARY + " ASC");
+ sortKey + " ASC");
+ }
+
+ public static ContactsCursorLoader createInstanceDisplayNamePrimary(
+ Context context, String sortKey) {
+ return new ContactsCursorLoader(context, CONTACTS_PROJECTION_DISPLAY_NAME_PRIMARY, sortKey);
+ }
+
+ public static ContactsCursorLoader createInstanceDisplayNameAlternative(
+ Context context, String sortKey) {
+ return new ContactsCursorLoader(context, CONTACTS_PROJECTION_DISPLAY_NAME_ALTERNATIVE, sortKey);
}
}
diff --git a/java/com/android/dialer/contactsfragment/ContactsFragment.java b/java/com/android/dialer/contactsfragment/ContactsFragment.java
index ea662fc89..a996a4fad 100644
--- a/java/com/android/dialer/contactsfragment/ContactsFragment.java
+++ b/java/com/android/dialer/contactsfragment/ContactsFragment.java
@@ -16,63 +16,125 @@
package com.android.dialer.contactsfragment;
+import android.Manifest.permission;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.Loader;
+import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.Bundle;
+import android.provider.ContactsContract.Contacts;
import android.support.annotation.Nullable;
+import android.support.v13.app.FragmentCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.RecyclerView.Recycler;
+import android.support.v7.widget.RecyclerView.State;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnScrollChangeListener;
import android.view.ViewGroup;
import android.widget.TextView;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.dialer.common.Assert;
+import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.IntentUtil;
import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
/** Fragment containing a list of all contacts. */
public class ContactsFragment extends Fragment
- implements LoaderCallbacks<Cursor>, OnScrollChangeListener {
+ implements LoaderCallbacks<Cursor>,
+ OnScrollChangeListener,
+ OnEmptyViewActionButtonClickedListener {
+ public static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
+
+ private FastScroller fastScroller;
private TextView anchoredHeader;
private RecyclerView recyclerView;
private LinearLayoutManager manager;
private ContactsAdapter adapter;
+ private EmptyContentView emptyContentView;
+
+ private ContactsPreferences contactsPrefs;
+
+ private final ContactsPreferences.ChangeListener preferencesChangeListener =
+ () -> getLoaderManager().restartLoader(0, null, this);
+
+ @Override
+ public void onCreate(Bundle savedState) {
+ super.onCreate(savedState);
+ contactsPrefs = new ContactsPreferences(getContext());
+ contactsPrefs.registerChangeListener(preferencesChangeListener);
+ }
@Nullable
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_contacts, container, false);
+ fastScroller = (FastScroller) view.findViewById(R.id.fast_scroller);
anchoredHeader = (TextView) view.findViewById(R.id.header);
- manager = new LinearLayoutManager(getContext());
-
- // TODO: Handle contacts permission denied view
- // TODO: Handle 0 contacts layout
recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
- recyclerView.setLayoutManager(manager);
- getLoaderManager().initLoader(0, null, this);
+
+ emptyContentView = (EmptyContentView) view.findViewById(R.id.empty_list_view);
+ emptyContentView.setImage(R.drawable.empty_contacts);
+ emptyContentView.setActionClickedListener(this);
if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
getLoaderManager().initLoader(0, null, this);
+ } else {
+ emptyContentView.setDescription(R.string.permission_no_contacts);
+ emptyContentView.setActionLabel(R.string.permission_single_turn_on);
+ emptyContentView.setVisibility(View.VISIBLE);
}
return view;
}
+ /** @return a loader according to sort order and display order. */
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- return new ContactsCursorLoader(getContext());
+ boolean sortOrderPrimary =
+ (contactsPrefs.getSortOrder() == ContactsPreferences.SORT_ORDER_PRIMARY);
+ boolean displayOrderPrimary =
+ (contactsPrefs.getDisplayOrder() == ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+
+ String sortKey = sortOrderPrimary ? Contacts.SORT_KEY_PRIMARY : Contacts.SORT_KEY_ALTERNATIVE;
+ return displayOrderPrimary
+ ? ContactsCursorLoader.createInstanceDisplayNamePrimary(getContext(), sortKey)
+ : ContactsCursorLoader.createInstanceDisplayNameAlternative(getContext(), sortKey);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
- // TODO setup fast scroller.
- adapter = new ContactsAdapter(getContext(), cursor);
- recyclerView.setAdapter(adapter);
- if (adapter.getItemCount() > 1) {
- recyclerView.setOnScrollChangeListener(this);
+ if (cursor.getCount() == 0) {
+ emptyContentView.setDescription(R.string.all_contacts_empty);
+ emptyContentView.setActionLabel(R.string.all_contacts_empty_add_contact_action);
+ emptyContentView.setVisibility(View.VISIBLE);
+ } else {
+ emptyContentView.setVisibility(View.GONE);
+ adapter = new ContactsAdapter(getContext(), cursor);
+ manager =
+ new LinearLayoutManager(getContext()) {
+ @Override
+ public void onLayoutChildren(Recycler recycler, State state) {
+ super.onLayoutChildren(recycler, state);
+ int itemsShown = findLastVisibleItemPosition() - findFirstVisibleItemPosition() + 1;
+ if (adapter.getItemCount() > itemsShown) {
+ fastScroller.setVisibility(View.VISIBLE);
+ recyclerView.setOnScrollChangeListener(ContactsFragment.this);
+ } else {
+ fastScroller.setVisibility(View.GONE);
+ }
+ }
+ };
+
+ recyclerView.setLayoutManager(manager);
+ recyclerView.setAdapter(adapter);
+ fastScroller.setup(adapter, manager);
}
}
@@ -81,6 +143,7 @@ public class ContactsFragment extends Fragment
recyclerView.setAdapter(null);
recyclerView.setOnScrollChangeListener(null);
adapter = null;
+ contactsPrefs.unregisterChangeListener();
}
/*
@@ -95,8 +158,10 @@ public class ContactsFragment extends Fragment
*/
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
+ fastScroller.updateContainerAndScrollBarPosition(recyclerView);
int firstVisibleItem = manager.findFirstVisibleItemPosition();
int firstCompletelyVisible = manager.findFirstCompletelyVisibleItemPosition();
+ String anchoredHeaderString = adapter.getHeaderString(firstCompletelyVisible);
// If the user swipes to the top of the list very quickly, there is some strange behavior
// between this method updating headers and adapter#onBindViewHolder updating headers.
@@ -104,15 +169,46 @@ public class ContactsFragment extends Fragment
if (firstVisibleItem == firstCompletelyVisible && firstVisibleItem == 0) {
adapter.refreshHeaders();
anchoredHeader.setVisibility(View.INVISIBLE);
+ } else if (adapter.getHeaderString(firstVisibleItem).equals(anchoredHeaderString)) {
+ anchoredHeader.setText(anchoredHeaderString);
+ anchoredHeader.setVisibility(View.VISIBLE);
+ getContactHolder(firstVisibleItem).getHeaderView().setVisibility(View.INVISIBLE);
+ getContactHolder(firstCompletelyVisible).getHeaderView().setVisibility(View.INVISIBLE);
} else {
- boolean showAnchor =
- adapter.getHeader(firstVisibleItem).equals(adapter.getHeader(firstCompletelyVisible));
- anchoredHeader.setText(adapter.getHeader(firstCompletelyVisible));
- anchoredHeader.setVisibility(showAnchor ? View.VISIBLE : View.INVISIBLE);
-
- int rowHeaderVisibility = showAnchor ? View.INVISIBLE : View.VISIBLE;
- adapter.setHeaderVisibility(firstVisibleItem, rowHeaderVisibility);
- adapter.setHeaderVisibility(firstCompletelyVisible, rowHeaderVisibility);
+ anchoredHeader.setVisibility(View.INVISIBLE);
+ getContactHolder(firstVisibleItem).getHeaderView().setVisibility(View.VISIBLE);
+ getContactHolder(firstCompletelyVisible).getHeaderView().setVisibility(View.VISIBLE);
+ }
+ }
+
+ private ContactViewHolder getContactHolder(int position) {
+ return ((ContactViewHolder) recyclerView.findViewHolderForAdapterPosition(position));
+ }
+
+ @Override
+ public void onEmptyViewActionButtonClicked() {
+ if (emptyContentView.getActionLabel() == R.string.permission_single_turn_on) {
+ FragmentCompat.requestPermissions(
+ this, new String[] {permission.READ_CONTACTS}, READ_CONTACTS_PERMISSION_REQUEST_CODE);
+ } else if (emptyContentView.getActionLabel()
+ == R.string.all_contacts_empty_add_contact_action) {
+ // Add new contact
+ DialerUtils.startActivityWithErrorToast(
+ getContext(), IntentUtil.getNewContactIntent(), R.string.add_contact_not_available);
+ } else {
+ throw Assert.createIllegalStateFailException("Invalid empty content view action label.");
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(
+ int requestCode, String[] permissions, int[] grantResults) {
+ if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE) {
+ if (grantResults.length >= 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
+ // Force a refresh of the data since we were missing the permission before this.
+ emptyContentView.setVisibility(View.GONE);
+ getLoaderManager().initLoader(0, null, this);
+ }
}
}
}
diff --git a/java/com/android/dialer/contactsfragment/FastScroller.java b/java/com/android/dialer/contactsfragment/FastScroller.java
new file mode 100644
index 000000000..980032cb5
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/FastScroller.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2017 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.contactsfragment;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+/** Widget to add fast scrolling to {@link ContactsFragment}. */
+public class FastScroller extends RelativeLayout {
+
+ private final int touchTargetWidth;
+
+ private ContactsAdapter adapter;
+ private LinearLayoutManager layoutManager;
+
+ private TextView container;
+ private View scrollBar;
+
+ private boolean dragStarted;
+
+ public FastScroller(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ touchTargetWidth =
+ context.getResources().getDimensionPixelSize(R.dimen.fast_scroller_touch_target_width);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ container = (TextView) findViewById(R.id.fast_scroller_container);
+ scrollBar = findViewById(R.id.fast_scroller_scroll_bar);
+ }
+
+ void setup(ContactsAdapter adapter, LinearLayoutManager layoutManager) {
+ this.adapter = adapter;
+ this.layoutManager = layoutManager;
+ }
+
+ @Override
+ public boolean onTouchEvent(@NonNull MotionEvent event) {
+ // Don't override if touch event isn't within desired touch target and dragging hasn't started.
+ if (!dragStarted && getWidth() - touchTargetWidth - event.getX() > 0) {
+ return super.onTouchEvent(event);
+ }
+
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ dragStarted = true;
+ container.setVisibility(VISIBLE);
+ scrollBar.setSelected(true);
+ // fall through
+ case MotionEvent.ACTION_MOVE:
+ setContainerAndScrollBarPosition(event.getY());
+ setRecyclerViewPosition(event.getY());
+ return true;
+ case MotionEvent.ACTION_UP:
+ case MotionEvent.ACTION_CANCEL:
+ dragStarted = false;
+ container.setVisibility(INVISIBLE);
+ scrollBar.setSelected(false);
+ return true;
+ }
+ return super.onTouchEvent(event);
+ }
+
+ private void setRecyclerViewPosition(float y) {
+ final int itemCount = adapter.getItemCount();
+ float scrolledPosition = getScrolledPercentage(y) * (float) itemCount;
+ int targetPos = getValueInRange(0, itemCount - 1, (int) scrolledPosition);
+ layoutManager.scrollToPositionWithOffset(targetPos, 0);
+ container.setText(adapter.getHeaderString(targetPos));
+ }
+
+ // Returns a float in range [0, 1] which represents the position of the scroller.
+ private float getScrolledPercentage(float y) {
+ if (scrollBar.getY() == 0) {
+ return 0f;
+ } else if (scrollBar.getY() + scrollBar.getHeight() >= getHeight()) {
+ return 1f;
+ } else {
+ return y / (float) getHeight();
+ }
+ }
+
+ private int getValueInRange(int min, int max, int value) {
+ int minimum = Math.max(min, value);
+ return Math.min(minimum, max);
+ }
+
+ void updateContainerAndScrollBarPosition(RecyclerView recyclerView) {
+ if (!scrollBar.isSelected()) {
+ int verticalScrollOffset = recyclerView.computeVerticalScrollOffset();
+ int verticalScrollRange = recyclerView.computeVerticalScrollRange();
+ float proportion = (float) verticalScrollOffset / ((float) verticalScrollRange - getHeight());
+ setContainerAndScrollBarPosition(getHeight() * proportion);
+ }
+ }
+
+ private void setContainerAndScrollBarPosition(float y) {
+ int scrollBarHeight = scrollBar.getHeight();
+ int containerHeight = container.getHeight();
+ scrollBar.setY(
+ getValueInRange(0, getHeight() - scrollBarHeight, (int) (y - scrollBarHeight / 2)));
+ container.setY(
+ getValueInRange(
+ 0, getHeight() - containerHeight - scrollBarHeight / 2, (int) (y - containerHeight)));
+ }
+}
diff --git a/java/com/android/dialer/contactsfragment/res/drawable/fast_scroller_container_background.xml b/java/com/android/dialer/contactsfragment/res/drawable/fast_scroller_container_background.xml
new file mode 100644
index 000000000..a7b227799
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/res/drawable/fast_scroller_container_background.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ <solid android:color="@color/dialer_theme_color"/>
+ <size
+ android:height="@dimen/fast_scroller_container_size"
+ android:width="@dimen/fast_scroller_container_size"/>
+ <corners
+ android:topLeftRadius="@dimen/fast_scroller_container_corner_radius"
+ android:topRightRadius="@dimen/fast_scroller_container_corner_radius"
+ android:bottomLeftRadius="@dimen/fast_scroller_bottom_left_corner_radius"
+ android:bottomRightRadius="@dimen/fast_scroller_bottom_right_corner_radius"/>
+</shape> \ No newline at end of file
diff --git a/java/com/android/dialer/contactsfragment/res/drawable/fast_scroller_scroll_bar.xml b/java/com/android/dialer/contactsfragment/res/drawable/fast_scroller_scroll_bar.xml
new file mode 100644
index 000000000..a3e0c25c7
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/res/drawable/fast_scroller_scroll_bar.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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_selected="true">
+ <shape android:shape="rectangle">
+ <solid android:color="@color/dialer_theme_color"/>
+ <size android:height="32dp" android:width="4dp"/>
+ <corners android:radius="2dp"/>
+ </shape>
+ </item>
+ <item>
+ <shape android:shape="rectangle">
+ <solid android:color="@color/dialer_secondary_text_color"/>
+ <size android:height="32dp" android:width="4dp"/>
+ <corners android:radius="2dp"/>
+ </shape>
+ </item>
+</selector> \ No newline at end of file
diff --git a/java/com/android/dialer/contactsfragment/res/layout/contact_row.xml b/java/com/android/dialer/contactsfragment/res/layout/contact_row.xml
index af87c7f18..9e829fee4 100644
--- a/java/com/android/dialer/contactsfragment/res/layout/contact_row.xml
+++ b/java/com/android/dialer/contactsfragment/res/layout/contact_row.xml
@@ -43,11 +43,13 @@
<TextView
android:id="@+id/contact_name"
- android:layout_width="match_parent"
+ android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingStart="@dimen/text_padding_start"
android:paddingEnd="@dimen/text_padding_end"
- android:gravity="center_vertical|start"
+ android:maxLines="1"
+ android:ellipsize="end"
+ android:gravity="center_vertical"
android:textSize="@dimen/text_size"
android:textColor="@color/dialer_primary_text_color"
android:fontFamily="sans-serif"/>
diff --git a/java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml b/java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml
index 67b490f03..7cbc4f0e6 100644
--- a/java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml
+++ b/java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml
@@ -23,8 +23,46 @@
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/background_dialer_white"/>
+ android:background="@color/background_dialer_light"/>
+
+ <!-- Scrollbars are always on the right side of the screen. Layouts should use Rights/Left instead
+ of Start/End -->
+ <com.android.dialer.contactsfragment.FastScroller
+ android:id="@+id/fast_scroller"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp"
+ android:clipChildren="false">
+
+ <TextView
+ android:id="@+id/fast_scroller_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_toLeftOf="@+id/fast_scroller_scroll_bar"
+ android:gravity="center"
+ android:textSize="48sp"
+ android:textColor="@color/background_dialer_white"
+ android:visibility="gone"
+ android:background="@drawable/fast_scroller_container_background"/>
+
+ <ImageView
+ android:id="@+id/fast_scroller_scroll_bar"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="8dp"
+ android:layout_alignParentRight="true"
+ android:paddingRight="16dp"
+ android:src="@drawable/fast_scroller_scroll_bar" />
+ </com.android.dialer.contactsfragment.FastScroller>
<!-- Anchored header view -->
<include layout="@layout/header"/>
+
+ <com.android.dialer.widget.EmptyContentView
+ android:id="@+id/empty_list_view"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:visibility="gone"/>
</FrameLayout>
diff --git a/java/com/android/dialer/contactsfragment/res/values/dimens.xml b/java/com/android/dialer/contactsfragment/res/values/dimens.xml
index 00d7c6d7e..f120014e2 100644
--- a/java/com/android/dialer/contactsfragment/res/values/dimens.xml
+++ b/java/com/android/dialer/contactsfragment/res/values/dimens.xml
@@ -25,4 +25,11 @@
<dimen name="text_padding_start">16dp</dimen>
<dimen name="text_padding_end">8dp</dimen>
<dimen name="text_size">16sp</dimen>
-</resources>
+
+ <dimen name="fast_scroller_touch_target_width">20dp</dimen>
+
+ <dimen name="fast_scroller_container_size">88dp</dimen>
+ <dimen name="fast_scroller_container_corner_radius">44dp</dimen>
+ <dimen name="fast_scroller_bottom_right_corner_radius">0px</dimen>
+ <dimen name="fast_scroller_bottom_left_corner_radius">44dp</dimen>
+</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/database/DialerDatabaseHelper.java b/java/com/android/dialer/database/DialerDatabaseHelper.java
index 348814281..6dd7cf462 100644
--- a/java/com/android/dialer/database/DialerDatabaseHelper.java
+++ b/java/com/android/dialer/database/DialerDatabaseHelper.java
@@ -34,6 +34,7 @@ import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Directory;
import android.support.annotation.VisibleForTesting;
+import android.support.annotation.WorkerThread;
import android.text.TextUtils;
import com.android.contacts.common.R;
import com.android.contacts.common.util.StopWatch;
@@ -46,7 +47,6 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
/**
* Database helper for smart dial. Designed as a singleton to make sure there is only one access
@@ -77,8 +77,6 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
private static final int MAX_ENTRIES = 20;
private final Context mContext;
- private final Object mLock = new Object();
- private final AtomicBoolean mInUpdate = new AtomicBoolean(false);
private boolean mIsTestInstance = false;
protected DialerDatabaseHelper(Context context, String databaseName, int dbVersion) {
@@ -596,218 +594,212 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
* accordingly. It also queries the deleted contact database to remove newly deleted contacts
* since last update.
*/
- public void updateSmartDialDatabase() {
+ @WorkerThread
+ public synchronized void updateSmartDialDatabase() {
LogUtil.enterBlock("DialerDatabaseHelper.updateSmartDialDatabase");
final SQLiteDatabase db = getWritableDatabase();
- synchronized (mLock) {
- LogUtil.v("DialerDatabaseHelper.updateSmartDialDatabase", "starting to update database");
- final StopWatch stopWatch = DEBUG ? StopWatch.start("Updating databases") : null;
+ LogUtil.v("DialerDatabaseHelper.updateSmartDialDatabase", "starting to update database");
+ final StopWatch stopWatch = DEBUG ? StopWatch.start("Updating databases") : null;
- /** Gets the last update time on the database. */
- final SharedPreferences databaseLastUpdateSharedPref =
- mContext.getSharedPreferences(DATABASE_LAST_CREATED_SHARED_PREF, Context.MODE_PRIVATE);
- final String lastUpdateMillis =
- String.valueOf(databaseLastUpdateSharedPref.getLong(LAST_UPDATED_MILLIS, 0));
-
- LogUtil.v(
- "DialerDatabaseHelper.updateSmartDialDatabase", "last updated at " + lastUpdateMillis);
-
- /** Sets the time after querying the database as the current update time. */
- final Long currentMillis = System.currentTimeMillis();
+ /** Gets the last update time on the database. */
+ final SharedPreferences databaseLastUpdateSharedPref =
+ mContext.getSharedPreferences(DATABASE_LAST_CREATED_SHARED_PREF, Context.MODE_PRIVATE);
+ final String lastUpdateMillis =
+ String.valueOf(databaseLastUpdateSharedPref.getLong(LAST_UPDATED_MILLIS, 0));
- if (DEBUG) {
- stopWatch.lap("Queried the Contacts database");
- }
+ LogUtil.v(
+ "DialerDatabaseHelper.updateSmartDialDatabase", "last updated at " + lastUpdateMillis);
- /** Prevents the app from reading the dialer database when updating. */
- mInUpdate.getAndSet(true);
+ /** Sets the time after querying the database as the current update time. */
+ final Long currentMillis = System.currentTimeMillis();
- /** Removes contacts that have been deleted. */
- removeDeletedContacts(db, getDeletedContactCursor(lastUpdateMillis));
- removePotentiallyCorruptedContacts(db, lastUpdateMillis);
+ if (DEBUG) {
+ stopWatch.lap("Queried the Contacts database");
+ }
- if (DEBUG) {
- stopWatch.lap("Finished deleting deleted entries");
- }
+ /** Removes contacts that have been deleted. */
+ removeDeletedContacts(db, getDeletedContactCursor(lastUpdateMillis));
+ removePotentiallyCorruptedContacts(db, lastUpdateMillis);
- /**
- * If the database did not exist before, jump through deletion as there is nothing to delete.
- */
- if (!lastUpdateMillis.equals("0")) {
- /**
- * Removes contacts that have been updated. Updated contact information will be inserted
- * later. Note that this has to use a separate result set from updatePhoneCursor, since it
- * is possible for a contact to be updated (e.g. phone number deleted), but have no results
- * show up in updatedPhoneCursor (since all of its phone numbers have been deleted).
- */
- final Cursor updatedContactCursor =
- mContext
- .getContentResolver()
- .query(
- UpdatedContactQuery.URI,
- UpdatedContactQuery.PROJECTION,
- UpdatedContactQuery.SELECT_UPDATED_CLAUSE,
- new String[] {lastUpdateMillis},
- null);
- if (updatedContactCursor == null) {
- LogUtil.e(
- "DialerDatabaseHelper.updateSmartDialDatabase",
- "smartDial query received null for cursor");
- return;
- }
- try {
- removeUpdatedContacts(db, updatedContactCursor);
- } finally {
- updatedContactCursor.close();
- }
- if (DEBUG) {
- stopWatch.lap("Finished deleting entries belonging to updated contacts");
- }
- }
+ if (DEBUG) {
+ stopWatch.lap("Finished deleting deleted entries");
+ }
+ /**
+ * If the database did not exist before, jump through deletion as there is nothing to delete.
+ */
+ if (!lastUpdateMillis.equals("0")) {
/**
- * Queries the contact database to get all phone numbers that have been updated since the last
- * update time.
+ * Removes contacts that have been updated. Updated contact information will be inserted
+ * later. Note that this has to use a separate result set from updatePhoneCursor, since it is
+ * possible for a contact to be updated (e.g. phone number deleted), but have no results show
+ * up in updatedPhoneCursor (since all of its phone numbers have been deleted).
*/
- final Cursor updatedPhoneCursor =
+ final Cursor updatedContactCursor =
mContext
.getContentResolver()
.query(
- PhoneQuery.URI,
- PhoneQuery.PROJECTION,
- PhoneQuery.SELECTION,
+ UpdatedContactQuery.URI,
+ UpdatedContactQuery.PROJECTION,
+ UpdatedContactQuery.SELECT_UPDATED_CLAUSE,
new String[] {lastUpdateMillis},
null);
- if (updatedPhoneCursor == null) {
+ if (updatedContactCursor == null) {
LogUtil.e(
"DialerDatabaseHelper.updateSmartDialDatabase",
"smartDial query received null for cursor");
return;
}
-
try {
- /** Inserts recently updated phone numbers to the smartdial database. */
- insertUpdatedContactsAndNumberPrefix(db, updatedPhoneCursor, currentMillis);
- if (DEBUG) {
- stopWatch.lap("Finished building the smart dial table");
- }
+ removeUpdatedContacts(db, updatedContactCursor);
} finally {
- updatedPhoneCursor.close();
+ updatedContactCursor.close();
}
-
- /**
- * Gets a list of distinct contacts which have been updated, and adds the name prefixes of
- * these contacts to the prefix table.
- */
- final Cursor nameCursor =
- db.rawQuery(
- "SELECT DISTINCT "
- + SmartDialDbColumns.DISPLAY_NAME_PRIMARY
- + ", "
- + SmartDialDbColumns.CONTACT_ID
- + " FROM "
- + Tables.SMARTDIAL_TABLE
- + " WHERE "
- + SmartDialDbColumns.LAST_SMARTDIAL_UPDATE_TIME
- + " = "
- + Long.toString(currentMillis),
- new String[] {});
- if (nameCursor != null) {
- try {
- if (DEBUG) {
- stopWatch.lap("Queried the smart dial table for contact names");
- }
-
- /** Inserts prefixes of names into the prefix table. */
- insertNamePrefixes(db, nameCursor);
- if (DEBUG) {
- stopWatch.lap("Finished building the name prefix table");
- }
- } finally {
- nameCursor.close();
- }
+ if (DEBUG) {
+ stopWatch.lap("Finished deleting entries belonging to updated contacts");
}
+ }
- /** Creates index on contact_id for fast JOIN operation. */
- db.execSQL(
- "CREATE INDEX IF NOT EXISTS smartdial_contact_id_index ON "
- + Tables.SMARTDIAL_TABLE
- + " ("
- + SmartDialDbColumns.CONTACT_ID
- + ");");
- /** Creates index on last_smartdial_update_time for fast SELECT operation. */
- db.execSQL(
- "CREATE INDEX IF NOT EXISTS smartdial_last_update_index ON "
- + Tables.SMARTDIAL_TABLE
- + " ("
- + SmartDialDbColumns.LAST_SMARTDIAL_UPDATE_TIME
- + ");");
- /** Creates index on sorting fields for fast sort operation. */
- db.execSQL(
- "CREATE INDEX IF NOT EXISTS smartdial_sort_index ON "
- + Tables.SMARTDIAL_TABLE
- + " ("
- + SmartDialDbColumns.STARRED
- + ", "
- + SmartDialDbColumns.IS_SUPER_PRIMARY
- + ", "
- + SmartDialDbColumns.LAST_TIME_USED
- + ", "
- + SmartDialDbColumns.TIMES_USED
- + ", "
- + SmartDialDbColumns.IN_VISIBLE_GROUP
- + ", "
- + SmartDialDbColumns.DISPLAY_NAME_PRIMARY
- + ", "
- + SmartDialDbColumns.CONTACT_ID
- + ", "
- + SmartDialDbColumns.IS_PRIMARY
- + ");");
- /** Creates index on prefix for fast SELECT operation. */
- db.execSQL(
- "CREATE INDEX IF NOT EXISTS nameprefix_index ON "
- + Tables.PREFIX_TABLE
- + " ("
- + PrefixColumns.PREFIX
- + ");");
- /** Creates index on contact_id for fast JOIN operation. */
- db.execSQL(
- "CREATE INDEX IF NOT EXISTS nameprefix_contact_id_index ON "
- + Tables.PREFIX_TABLE
- + " ("
- + PrefixColumns.CONTACT_ID
- + ");");
+ /**
+ * Queries the contact database to get all phone numbers that have been updated since the last
+ * update time.
+ */
+ final Cursor updatedPhoneCursor =
+ mContext
+ .getContentResolver()
+ .query(
+ PhoneQuery.URI,
+ PhoneQuery.PROJECTION,
+ PhoneQuery.SELECTION,
+ new String[] {lastUpdateMillis},
+ null);
+ if (updatedPhoneCursor == null) {
+ LogUtil.e(
+ "DialerDatabaseHelper.updateSmartDialDatabase",
+ "smartDial query received null for cursor");
+ return;
+ }
+ try {
+ /** Inserts recently updated phone numbers to the smartdial database. */
+ insertUpdatedContactsAndNumberPrefix(db, updatedPhoneCursor, currentMillis);
if (DEBUG) {
- stopWatch.lap(TAG + "Finished recreating index");
+ stopWatch.lap("Finished building the smart dial table");
}
+ } finally {
+ updatedPhoneCursor.close();
+ }
- /** Updates the database index statistics. */
- db.execSQL("ANALYZE " + Tables.SMARTDIAL_TABLE);
- db.execSQL("ANALYZE " + Tables.PREFIX_TABLE);
- db.execSQL("ANALYZE smartdial_contact_id_index");
- db.execSQL("ANALYZE smartdial_last_update_index");
- db.execSQL("ANALYZE nameprefix_index");
- db.execSQL("ANALYZE nameprefix_contact_id_index");
- if (DEBUG) {
- stopWatch.stopAndLog(TAG + "Finished updating index stats", 0);
- }
+ /**
+ * Gets a list of distinct contacts which have been updated, and adds the name prefixes of these
+ * contacts to the prefix table.
+ */
+ final Cursor nameCursor =
+ db.rawQuery(
+ "SELECT DISTINCT "
+ + SmartDialDbColumns.DISPLAY_NAME_PRIMARY
+ + ", "
+ + SmartDialDbColumns.CONTACT_ID
+ + " FROM "
+ + Tables.SMARTDIAL_TABLE
+ + " WHERE "
+ + SmartDialDbColumns.LAST_SMARTDIAL_UPDATE_TIME
+ + " = "
+ + currentMillis,
+ new String[] {});
+ if (nameCursor != null) {
+ try {
+ if (DEBUG) {
+ stopWatch.lap("Queried the smart dial table for contact names");
+ }
- mInUpdate.getAndSet(false);
+ /** Inserts prefixes of names into the prefix table. */
+ insertNamePrefixes(db, nameCursor);
+ if (DEBUG) {
+ stopWatch.lap("Finished building the name prefix table");
+ }
+ } finally {
+ nameCursor.close();
+ }
+ }
- final SharedPreferences.Editor editor = databaseLastUpdateSharedPref.edit();
- editor.putLong(LAST_UPDATED_MILLIS, currentMillis);
- editor.apply();
+ /** Creates index on contact_id for fast JOIN operation. */
+ db.execSQL(
+ "CREATE INDEX IF NOT EXISTS smartdial_contact_id_index ON "
+ + Tables.SMARTDIAL_TABLE
+ + " ("
+ + SmartDialDbColumns.CONTACT_ID
+ + ");");
+ /** Creates index on last_smartdial_update_time for fast SELECT operation. */
+ db.execSQL(
+ "CREATE INDEX IF NOT EXISTS smartdial_last_update_index ON "
+ + Tables.SMARTDIAL_TABLE
+ + " ("
+ + SmartDialDbColumns.LAST_SMARTDIAL_UPDATE_TIME
+ + ");");
+ /** Creates index on sorting fields for fast sort operation. */
+ db.execSQL(
+ "CREATE INDEX IF NOT EXISTS smartdial_sort_index ON "
+ + Tables.SMARTDIAL_TABLE
+ + " ("
+ + SmartDialDbColumns.STARRED
+ + ", "
+ + SmartDialDbColumns.IS_SUPER_PRIMARY
+ + ", "
+ + SmartDialDbColumns.LAST_TIME_USED
+ + ", "
+ + SmartDialDbColumns.TIMES_USED
+ + ", "
+ + SmartDialDbColumns.IN_VISIBLE_GROUP
+ + ", "
+ + SmartDialDbColumns.DISPLAY_NAME_PRIMARY
+ + ", "
+ + SmartDialDbColumns.CONTACT_ID
+ + ", "
+ + SmartDialDbColumns.IS_PRIMARY
+ + ");");
+ /** Creates index on prefix for fast SELECT operation. */
+ db.execSQL(
+ "CREATE INDEX IF NOT EXISTS nameprefix_index ON "
+ + Tables.PREFIX_TABLE
+ + " ("
+ + PrefixColumns.PREFIX
+ + ");");
+ /** Creates index on contact_id for fast JOIN operation. */
+ db.execSQL(
+ "CREATE INDEX IF NOT EXISTS nameprefix_contact_id_index ON "
+ + Tables.PREFIX_TABLE
+ + " ("
+ + PrefixColumns.CONTACT_ID
+ + ");");
- LogUtil.i("DialerDatabaseHelper.updateSmartDialDatabase", "broadcasting smart dial update");
+ if (DEBUG) {
+ stopWatch.lap(TAG + "Finished recreating index");
+ }
- // Notify content observers that smart dial database has been updated.
- Intent intent = new Intent(ACTION_SMART_DIAL_UPDATED);
- intent.setPackage(mContext.getPackageName());
- mContext.sendBroadcast(intent);
+ /** Updates the database index statistics. */
+ db.execSQL("ANALYZE " + Tables.SMARTDIAL_TABLE);
+ db.execSQL("ANALYZE " + Tables.PREFIX_TABLE);
+ db.execSQL("ANALYZE smartdial_contact_id_index");
+ db.execSQL("ANALYZE smartdial_last_update_index");
+ db.execSQL("ANALYZE nameprefix_index");
+ db.execSQL("ANALYZE nameprefix_contact_id_index");
+ if (DEBUG) {
+ stopWatch.stopAndLog(TAG + "Finished updating index stats", 0);
}
+
+ final SharedPreferences.Editor editor = databaseLastUpdateSharedPref.edit();
+ editor.putLong(LAST_UPDATED_MILLIS, currentMillis);
+ editor.apply();
+
+ LogUtil.i("DialerDatabaseHelper.updateSmartDialDatabase", "broadcasting smart dial update");
+
+ // Notify content observers that smart dial database has been updated.
+ Intent intent = new Intent(ACTION_SMART_DIAL_UPDATED);
+ intent.setPackage(mContext.getPackageName());
+ mContext.sendBroadcast(intent);
}
/**
@@ -817,12 +809,9 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
* @param query The prefix of a contact's dialpad index.
* @return A list of top candidate contacts that will be suggested to user to match their input.
*/
- public ArrayList<ContactNumber> getLooseMatches(String query, SmartDialNameMatcher nameMatcher) {
- final boolean inUpdate = mInUpdate.get();
- if (inUpdate) {
- return new ArrayList<>();
- }
-
+ @WorkerThread
+ public synchronized ArrayList<ContactNumber> getLooseMatches(
+ String query, SmartDialNameMatcher nameMatcher) {
final SQLiteDatabase db = getReadableDatabase();
/** Uses SQL query wildcard '%' to represent prefix matching. */
diff --git a/java/com/android/dialer/callcomposer/proto/call_composer_contact.proto b/java/com/android/dialer/dialercontact/dialer_contact.proto
index 99766aac5..ee364c6e0 100644
--- a/java/com/android/dialer/callcomposer/proto/call_composer_contact.proto
+++ b/java/com/android/dialer/dialercontact/dialer_contact.proto
@@ -1,12 +1,12 @@
syntax = "proto2";
-option java_package = "com.android.dialer.callcomposer";
+option java_package = "com.android.dialer.dialercontact";
option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;
package com.android.dialer.callcomposer;
-message CallComposerContact {
+message DialerContact {
optional fixed64 photo_id = 1;
optional string photo_uri = 2;
optional string contact_uri = 3;
diff --git a/java/com/android/dialer/dialpadview/res/values/dimens.xml b/java/com/android/dialer/dialpadview/res/values/dimens.xml
index 210c81697..727736497 100644
--- a/java/com/android/dialer/dialpadview/res/values/dimens.xml
+++ b/java/com/android/dialer/dialpadview/res/values/dimens.xml
@@ -16,7 +16,7 @@
<resources>
<!-- Text dimensions for dialpad keys -->
- <dimen name="dialpad_key_numbers_default_size">36sp</dimen>
+ <dimen name="dialpad_key_numbers_default_size">36dp</dimen>
<dimen name="dialpad_key_letters_size">12sp</dimen>
<dimen name="dialpad_key_pound_size">23sp</dimen>
<dimen name="dialpad_key_star_size">36sp</dimen>
diff --git a/java/com/android/dialer/interactions/PhoneNumberInteraction.java b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
index 52f9d208f..ef468a9f3 100644
--- a/java/com/android/dialer/interactions/PhoneNumberInteraction.java
+++ b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
@@ -54,11 +54,14 @@ import com.android.contacts.common.Collapser;
import com.android.contacts.common.Collapser.Collapsible;
import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.callintent.CallIntentParser;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.TransactionSafeActivity;
import java.lang.annotation.Retention;
@@ -543,6 +546,12 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> {
final PhoneItem phoneItem = mPhoneList.get(which);
final CheckBox checkBox = (CheckBox) alertDialog.findViewById(R.id.setPrimary);
if (checkBox.isChecked()) {
+ if (mCallSpecificAppData.getCallInitiationType() == CallInitiationType.Type.SPEED_DIAL) {
+ Logger.get(getContext())
+ .logInteraction(
+ InteractionEvent.Type.SPEED_DIAL_SET_DEFAULT_NUMBER_FOR_AMBIGUOUS_CONTACT);
+ }
+
// Request to mark the data as primary in the background.
final Intent serviceIntent =
ContactUpdateService.createSetSuperPrimaryIntent(activity, phoneItem.id);
diff --git a/java/com/android/dialer/location/CountryDetector.java b/java/com/android/dialer/location/CountryDetector.java
index a90febf2b..c4bed14d0 100644
--- a/java/com/android/dialer/location/CountryDetector.java
+++ b/java/com/android/dialer/location/CountryDetector.java
@@ -33,8 +33,8 @@ import android.telephony.TelephonyManager;
import android.text.TextUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutors;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.common.concurrent.DialerExecutorComponent;
import com.android.dialer.util.PermissionsUtil;
import java.util.List;
import java.util.Locale;
@@ -216,7 +216,9 @@ public class CountryDetector {
private static void processLocationUpdate(
Context appContext, Geocoder geocoder, Location location) {
- DialerExecutors.createNonUiTaskBuilder(new GeocodeCountryWorker(geocoder))
+ DialerExecutorComponent.get(appContext)
+ .dialerExecutorFactory()
+ .createNonUiTaskBuilder(new GeocodeCountryWorker(geocoder))
.onSuccess(
country -> {
if (country == null) {
diff --git a/java/com/android/dialer/logging/LoggingBindings.java b/java/com/android/dialer/logging/LoggingBindings.java
index 526cb2088..4a98d9e7d 100644
--- a/java/com/android/dialer/logging/LoggingBindings.java
+++ b/java/com/android/dialer/logging/LoggingBindings.java
@@ -14,8 +14,8 @@
package com.android.dialer.logging;
-
import android.app.Activity;
+import android.widget.QuickContactBadge;
/** Allows the container application to gather analytics. */
public interface LoggingBindings {
@@ -62,6 +62,22 @@ public interface LoggingBindings {
*/
void logScreenView(com.android.dialer.logging.ScreenEvent.Type screenEvent, Activity activity);
+ /** Logs the composition of contact tiles in the speed dial tab. */
+ void logSpeedDialContactComposition(
+ int counter,
+ int starredContactsCount,
+ int pinnedContactsCount,
+ int multipleNumbersContactsCount,
+ int contactsWithPhotoCount,
+ int contactsWithNameCount,
+ int duoReachableContactCount);
+
/** Logs a hit event to the analytics server. */
void sendHitEventAnalytics(String category, String action, String label, long value);
+
+ /** Logs where a quick contact badge is clicked */
+ void logQuickContactOnTouch(
+ QuickContactBadge quickContact,
+ InteractionEvent.Type interactionEvent,
+ boolean shouldPerformClick);
}
diff --git a/java/com/android/dialer/logging/LoggingBindingsStub.java b/java/com/android/dialer/logging/LoggingBindingsStub.java
index f7ca6ecb0..dd3b8ac61 100644
--- a/java/com/android/dialer/logging/LoggingBindingsStub.java
+++ b/java/com/android/dialer/logging/LoggingBindingsStub.java
@@ -15,6 +15,7 @@
package com.android.dialer.logging;
import android.app.Activity;
+import android.widget.QuickContactBadge;
/** Default implementation for logging bindings. */
public class LoggingBindingsStub implements LoggingBindings {
@@ -36,5 +37,21 @@ public class LoggingBindingsStub implements LoggingBindings {
public void logScreenView(ScreenEvent.Type screenEvent, Activity activity) {}
@Override
+ public void logSpeedDialContactComposition(
+ int counter,
+ int starredContactsCount,
+ int pinnedContactsCount,
+ int multipleNumbersContactsCount,
+ int contactsWithPhotoCount,
+ int contactsWithNameCount,
+ int duoReachableContactsCount) {}
+
+ @Override
public void sendHitEventAnalytics(String category, String action, String label, long value) {}
+
+ @Override
+ public void logQuickContactOnTouch(
+ QuickContactBadge quickContact,
+ InteractionEvent.Type interactionEvent,
+ boolean shouldPerformClick) {}
}
diff --git a/java/com/android/dialer/logging/contact_lookup_result.proto b/java/com/android/dialer/logging/contact_lookup_result.proto
index 835d7d7dc..c9624aff1 100644
--- a/java/com/android/dialer/logging/contact_lookup_result.proto
+++ b/java/com/android/dialer/logging/contact_lookup_result.proto
@@ -5,6 +5,7 @@ option java_package = "com.android.dialer.logging";
option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;
+
message ContactLookupResult {
// The different results of a contact lookup done using a phone number.
enum Type {
diff --git a/java/com/android/dialer/logging/contact_source.proto b/java/com/android/dialer/logging/contact_source.proto
index 470cf8bd7..ffd32de0e 100644
--- a/java/com/android/dialer/logging/contact_source.proto
+++ b/java/com/android/dialer/logging/contact_source.proto
@@ -5,6 +5,7 @@ option java_package = "com.android.dialer.logging";
option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;
+
message ContactSource {
// Applies only to reports made from call history. If we have contact
// information for the phone number, this field indicates its source.
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
index 541614623..1d8c828ff 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -5,11 +5,12 @@ option java_package = "com.android.dialer.logging";
option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;
+
message DialerImpression {
// Event enums to be used for Impression Logging in Dialer.
// It's perfectly acceptable for this enum to be large
// Values should be from 1000 to 100000.
- // Next Tag:1191
+ // Next Tag:1196
enum Type {
UNKNOWN_AOSP_EVENT_TYPE = 1000;
@@ -386,5 +387,21 @@ message DialerImpression {
VVM_STATUS_CHECK_REACTIVATION = 1189;
VVM_ARCHIVE_AUTO_DELETE_FAILED_DUE_TO_FAILED_QUOTA_CHECK = 1190;
+
+ // User pressed the speaker phone button on the return-to-call bubble
+ BUBBLE_TURN_ON_SPEAKERPHONE = 1191;
+ // User pressed the speaker phone button again on the return-to-call bubble
+ BUBBLE_TURN_ON_WIRED_OR_EARPIECE = 1192;
+ // User muted the call from the return-to-call bubble
+ BUBBLE_MUTE_CALL = 1193;
+ // User unmuted the call from the return-to-call bubble
+ BUBBLE_UNMUTE_CALL = 1194;
+ // User ended the call from the return-to-call bubble
+ BUBBLE_END_CALL = 1195;
+
+ LIGHTBRINGER_VIDEO_REQUESTED_FROM_SEARCH = 1196;
+ LIGHTBRINGER_VIDEO_REQUESTED_FROM_CALL_LOG = 1197;
+ IMS_VIDEO_REQUESTED_FROM_SEARCH = 1198;
+ IMS_VIDEO_REQUESTED_FROM_CALL_LOG = 1199;
}
}
diff --git a/java/com/android/dialer/logging/interaction_event.proto b/java/com/android/dialer/logging/interaction_event.proto
index b9af1b763..89cf46fc9 100644
--- a/java/com/android/dialer/logging/interaction_event.proto
+++ b/java/com/android/dialer/logging/interaction_event.proto
@@ -5,7 +5,9 @@ option java_package = "com.android.dialer.logging";
option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;
+
message InteractionEvent {
+ // Next Tag: 38
enum Type {
UNKNOWN = 0;
@@ -41,5 +43,23 @@ message InteractionEvent {
// The user unblocked a number then undid the unblock
UNDO_UNBLOCK_NUMBER = 24;
+
+ // Actions in speed dial
+ SPEED_DIAL_PIN_CONTACT = 25;
+ SPEED_DIAL_REMOVE_CONTACT = 26;
+ SPEED_DIAL_OPEN_CONTACT_CARD = 27;
+ SPEED_DIAL_CLICK_CONTACT_WITH_AMBIGUOUS_NUMBER = 28;
+
+ SPEED_DIAL_SET_DEFAULT_NUMBER_FOR_AMBIGUOUS_CONTACT = 29;
+
+ // Open quick contact from where
+ OPEN_QUICK_CONTACT_FROM_CALL_LOG = 30;
+ OPEN_QUICK_CONTACT_FROM_CALL_DETAILS = 31;
+ OPEN_QUICK_CONTACT_FROM_ALL_CONTACTS_GENERAL = 32;
+ OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_BADGE = 33;
+ OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_ITEM = 34;
+ OPEN_QUICK_CONTACT_FROM_SEARCH = 35;
+ OPEN_QUICK_CONTACT_FROM_VOICEMAIL = 36;
+ OPEN_QUICK_CONTACT_FROM_CALL_HISTORY = 37;
}
}
diff --git a/java/com/android/dialer/logging/reporting_location.proto b/java/com/android/dialer/logging/reporting_location.proto
index 72869489c..d436564df 100644
--- a/java/com/android/dialer/logging/reporting_location.proto
+++ b/java/com/android/dialer/logging/reporting_location.proto
@@ -5,6 +5,7 @@ option java_package = "com.android.dialer.logging";
option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;
+
message ReportingLocation {
// Spam reporting location
enum Type {
diff --git a/java/com/android/dialer/logging/screen_event.proto b/java/com/android/dialer/logging/screen_event.proto
index 2430bfd5a..ca624774d 100644
--- a/java/com/android/dialer/logging/screen_event.proto
+++ b/java/com/android/dialer/logging/screen_event.proto
@@ -5,6 +5,7 @@ option java_package = "com.android.dialer.logging";
option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;
+
message ScreenEvent {
enum Type {
diff --git a/java/com/android/dialer/multimedia/MultimediaData.java b/java/com/android/dialer/multimedia/MultimediaData.java
index 22bb7641c..dee0cff0b 100644
--- a/java/com/android/dialer/multimedia/MultimediaData.java
+++ b/java/com/android/dialer/multimedia/MultimediaData.java
@@ -20,6 +20,7 @@ import android.location.Location;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.text.TextUtils;
import com.android.dialer.common.LogUtil;
import com.google.auto.value.AutoValue;
@@ -63,6 +64,11 @@ public abstract class MultimediaData {
/** Returns {@code true} if this data is marked as important. */
public abstract boolean isImportant();
+ /** Returns true if this has image, text or location data. */
+ public boolean hasData() {
+ return hasImageData() || !TextUtils.isEmpty(getText()) || getLocation() != null;
+ }
+
/** Returns the string form of this MultimediaData with no PII. */
@Override
public String toString() {
diff --git a/java/com/android/dialer/oem/CequintCallerIdManager.java b/java/com/android/dialer/oem/CequintCallerIdManager.java
index 095ee4e66..806d553eb 100644
--- a/java/com/android/dialer/oem/CequintCallerIdManager.java
+++ b/java/com/android/dialer/oem/CequintCallerIdManager.java
@@ -18,7 +18,6 @@ package com.android.dialer.oem;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.pm.PackageManager;
-import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build.VERSION_CODES;
@@ -31,7 +30,6 @@ import android.text.TextUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.util.PermissionsUtil;
import java.util.concurrent.ConcurrentHashMap;
/**
@@ -73,17 +71,12 @@ public class CequintCallerIdManager {
private static final String IMAGE = "cid_pLogo";
private static final String DISPLAY_NAME = "cid_pDisplayName";
- // TODO: Revisit it and maybe remove it if it's not necessary.
- private static final ConcurrentHashMap<String, CequintCallerIdContact> callLogCache =
- new ConcurrentHashMap<>();
- private static final ConcurrentHashMap<String, CequintCallerIdContact> incallIncomingCallCache =
- new ConcurrentHashMap<>();
- private static final ConcurrentHashMap<String, CequintCallerIdContact> incallOutgoingCallCache =
- new ConcurrentHashMap<>();
- private static boolean hasRegisteredContentObserver;
private static boolean hasAlreadyCheckedCequintCallerIdPackage;
private static boolean isCequintCallerIdEnabled;
+ // TODO: Revisit it and maybe remove it if it's not necessary.
+ private final ConcurrentHashMap<String, CequintCallerIdContact> callLogCache;
+
/** Cequint caller id contact information. */
public static class CequintCallerIdContact {
public final String name;
@@ -117,27 +110,8 @@ public class CequintCallerIdManager {
return isCequintCallerIdEnabled;
}
- @WorkerThread
- @Nullable
- public static CequintCallerIdContact getCequintCallerIdContact(Context context, String number) {
- Assert.isWorkerThread();
- LogUtil.d(
- "CequintCallerIdManager.getCequintCallerIdContact",
- "number: %s",
- LogUtil.sanitizePhoneNumber(number));
- if (callLogCache.containsKey(number)) {
- return callLogCache.get(number);
- }
- CequintCallerIdContact cequintCallerIdContact =
- lookup(
- context,
- CONTENT_URI,
- PhoneNumberUtils.stripSeparators(number),
- new String[] {"system"});
- if (cequintCallerIdContact != null) {
- callLogCache.put(number, cequintCallerIdContact);
- }
- return cequintCallerIdContact;
+ public static CequintCallerIdManager createInstanceForCallLog() {
+ return new CequintCallerIdManager();
}
@WorkerThread
@@ -151,12 +125,6 @@ public class CequintCallerIdManager {
LogUtil.sanitizePhoneNumber(number),
LogUtil.sanitizePii(cnapName),
isIncoming);
- registerContentObserver(context);
- if (isIncoming && incallIncomingCallCache.containsKey(number)) {
- return incallIncomingCallCache.get(number);
- } else if (!isIncoming && incallOutgoingCallCache.containsKey(number)) {
- return incallOutgoingCallCache.get(number);
- }
int flag = 0;
if (isIncoming) {
flag |= CALLER_ID_LOOKUP_INCOMING_CALL;
@@ -165,14 +133,28 @@ public class CequintCallerIdManager {
flag |= CALLER_ID_LOOKUP_USER_PROVIDED_CID;
}
String[] flags = {cnapName, String.valueOf(flag)};
+ return lookup(context, CONTENT_URI_FOR_INCALL, number, flags);
+ }
+
+ @WorkerThread
+ @Nullable
+ public CequintCallerIdContact getCequintCallerIdContact(Context context, String number) {
+ Assert.isWorkerThread();
+ LogUtil.d(
+ "CequintCallerIdManager.getCequintCallerIdContact",
+ "number: %s",
+ LogUtil.sanitizePhoneNumber(number));
+ if (callLogCache.containsKey(number)) {
+ return callLogCache.get(number);
+ }
CequintCallerIdContact cequintCallerIdContact =
- lookup(context, CONTENT_URI_FOR_INCALL, number, flags);
+ lookup(
+ context,
+ CONTENT_URI,
+ PhoneNumberUtils.stripSeparators(number),
+ new String[] {"system"});
if (cequintCallerIdContact != null) {
- if (isIncoming) {
- incallIncomingCallCache.put(number, cequintCallerIdContact);
- } else {
- incallOutgoingCallCache.put(number, cequintCallerIdContact);
- }
+ callLogCache.put(number, cequintCallerIdContact);
}
return cequintCallerIdContact;
}
@@ -285,33 +267,7 @@ public class CequintCallerIdManager {
return geoDescription;
}
- private static synchronized void registerContentObserver(Context context) {
- if (!PermissionsUtil.hasCequintPermissions(context)) {
- LogUtil.i("CequintCallerIdManager.registerContentObserver", "no cequint permissions");
- return;
- }
-
- if (hasRegisteredContentObserver) {
- return;
- }
- ContentObserver contentObserver =
- new ContentObserver(null) {
- @Override
- public void onChange(boolean selfChange) {
- invalidateCache();
- }
- };
-
- context
- .getContentResolver()
- .registerContentObserver(CONTENT_URI_FOR_INCALL, true, contentObserver);
- hasRegisteredContentObserver = true;
- }
-
- private static void invalidateCache() {
- incallIncomingCallCache.clear();
- incallOutgoingCallCache.clear();
+ private CequintCallerIdManager() {
+ callLogCache = new ConcurrentHashMap<>();
}
-
- private CequintCallerIdManager() {}
}
diff --git a/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java b/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java
index 9cf145b7a..79abff08e 100644
--- a/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java
+++ b/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java
@@ -67,9 +67,7 @@ public class MotorolaHiddenMenuKeySequence {
}
private MotorolaHiddenMenuKeySequence(Context context) {
- featureHiddenMenuEnabled =
- MotorolaUtils.isSpnMatched(context)
- && context.getResources().getBoolean(R.bool.motorola_feature_hidden_menu);
+ featureHiddenMenuEnabled = MotorolaUtils.isSupportingHiddenMenu(context);
// In case we do have a SPN from resource we need to match from service; otherwise we are
// free to go
if (featureHiddenMenuEnabled) {
diff --git a/java/com/android/dialer/oem/MotorolaUtils.java b/java/com/android/dialer/oem/MotorolaUtils.java
index db2b8909a..2c91e60ab 100644
--- a/java/com/android/dialer/oem/MotorolaUtils.java
+++ b/java/com/android/dialer/oem/MotorolaUtils.java
@@ -19,7 +19,10 @@ import android.content.Context;
import android.content.res.Resources;
import android.telephony.TelephonyManager;
import com.android.dialer.common.ConfigProviderBindings;
+import com.android.dialer.common.LogUtil;
import com.android.dialer.common.PackageUtils;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
/** Util class for Motorola OEM devices. */
public class MotorolaUtils {
@@ -39,6 +42,8 @@ public class MotorolaUtils {
// This is used to check if a Motorola device supports WiFi call feature, by checking if a certain
// package is enabled.
private static final String WIFI_CALL_PACKAGE_NAME = "com.motorola.sprintwfc";
+ // Thi is used to check if a Motorola device supports hidden menu feature.
+ private static final String HIDDEN_MENU_FEATURE = "com.motorola.software.sprint.hidden_menu";
// Feature flag indicates it's a HD call, currently this is only used by Motorola system build.
// TODO(b/35359461): Use reference to android.provider.CallLog once it's in new SDK.
@@ -64,6 +69,10 @@ public class MotorolaUtils {
}
}
+ static boolean isSupportingHiddenMenu(Context context) {
+ return context.getPackageManager().hasSystemFeature(HIDDEN_MENU_FEATURE);
+ }
+
public static boolean shouldBlinkHdIconWhenConnectingCall(Context context) {
return ConfigProviderBindings.get(context)
.getBoolean(CONFIG_HD_CODEC_BLINKING_ICON_WHEN_CONNECTING_CALL_ENABLED, true)
@@ -102,6 +111,22 @@ public class MotorolaUtils {
return MotorolaHiddenMenuKeySequence.handleCharSequence(context, input);
}
+ public static boolean isWifiCallingAvailable(Context context) {
+ if (!isSupportingSprintWifiCall(context)) {
+ return false;
+ }
+ TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+ try {
+ Method method = TelephonyManager.class.getMethod("isWifiCallingAvailable");
+ boolean isWifiCallingAvailable = (boolean) method.invoke(telephonyManager);
+ LogUtil.d("MotorolaUtils.isWifiCallingAvailable", "%b", isWifiCallingAvailable);
+ return isWifiCallingAvailable;
+ } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
+ LogUtil.e("MotorolaUtils.isWifiCallingAvailable", "", e);
+ }
+ return false;
+ }
+
private static boolean isSupportingSprintHdCodec(Context context) {
return isSpnMatched(context)
&& context.getResources().getBoolean(R.bool.motorola_sprint_hd_codec)
diff --git a/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml
index 7f63bee75..ac3397520 100644
--- a/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml
+++ b/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml
@@ -1,6 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
<resources>
<bool name="motorola_sprint_hd_codec">true</bool>
- <bool name="motorola_feature_hidden_menu">true</bool>
<string name="motorola_enabled_spn">Sprint</string>
</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml
index 39b72cdd1..c5cb0d1f7 100644
--- a/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml
+++ b/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml
@@ -1,5 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
<resources>
<bool name="motorola_sprint_hd_codec">true</bool>
- <bool name="motorola_feature_hidden_menu">true</bool>
</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml
index 39b72cdd1..c5cb0d1f7 100644
--- a/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml
+++ b/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml
@@ -1,5 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
<resources>
<bool name="motorola_sprint_hd_codec">true</bool>
- <bool name="motorola_feature_hidden_menu">true</bool>
</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml
index 39b72cdd1..c5cb0d1f7 100644
--- a/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml
+++ b/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml
@@ -1,5 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
<resources>
<bool name="motorola_sprint_hd_codec">true</bool>
- <bool name="motorola_feature_hidden_menu">true</bool>
</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml
index 39b72cdd1..c5cb0d1f7 100644
--- a/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml
+++ b/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml
@@ -1,5 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
<resources>
<bool name="motorola_sprint_hd_codec">true</bool>
- <bool name="motorola_feature_hidden_menu">true</bool>
</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml
index 39b72cdd1..c5cb0d1f7 100644
--- a/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml
+++ b/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml
@@ -1,5 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
<resources>
<bool name="motorola_sprint_hd_codec">true</bool>
- <bool name="motorola_feature_hidden_menu">true</bool>
</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/oem/res/values/motorola_config.xml b/java/com/android/dialer/oem/res/values/motorola_config.xml
index f875d573d..46e7a16b6 100644
--- a/java/com/android/dialer/oem/res/values/motorola_config.xml
+++ b/java/com/android/dialer/oem/res/values/motorola_config.xml
@@ -1,12 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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>
<!-- Flag to control if HD codec is supported by Sprint. -->
<bool name="motorola_sprint_hd_codec">false</bool>
<!-- Hidden menu configuration for Motorola. -->
- <!-- Flag to control if the Hidden Menu sequence will be supported by Sprint. -->
- <bool name="motorola_feature_hidden_menu">false</bool>
-
<!-- This defines the specific key seuquence that will be catched in the SpecialCharSequenceMgr
such as, ##OMADM# -->
<string-array name="motorola_hidden_menu_key_sequence">
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfo.java b/java/com/android/dialer/phonenumbercache/ContactInfo.java
index 5546553f9..aef7374e4 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfo.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfo.java
@@ -17,7 +17,7 @@
package com.android.dialer.phonenumbercache;
import android.net.Uri;
-import android.support.annotation.Nullable;
+import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.android.contacts.common.ContactsUtils.UserType;
import com.android.contacts.common.util.UriUtils;
@@ -59,7 +59,7 @@ public class ContactInfo {
public boolean isBadData;
public String objectId;
public @UserType long userType;
- public @Nullable ContactSource.Type sourceType = ContactSource.Type.UNKNOWN_SOURCE_TYPE;
+ public @NonNull ContactSource.Type sourceType = ContactSource.Type.UNKNOWN_SOURCE_TYPE;
/**
* True if local contact exists. This is only used for Cequint Caller ID so it won't overwrite
* photo if local contact exists.
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
index bd4ba9764..c9e940ef4 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
@@ -601,13 +601,17 @@ public class ContactInfoHelper {
* will be updated if available.
*/
@WorkerThread
- public void updateFromCequintCallerId(ContactInfo info, String number) {
+ public void updateFromCequintCallerId(
+ @Nullable CequintCallerIdManager cequintCallerIdManager, ContactInfo info, String number) {
Assert.isWorkerThread();
if (!CequintCallerIdManager.isCequintCallerIdEnabled(mContext)) {
return;
}
+ if (cequintCallerIdManager == null) {
+ return;
+ }
CequintCallerIdContact cequintCallerIdContact =
- CequintCallerIdManager.getCequintCallerIdContact(mContext, number);
+ cequintCallerIdManager.getCequintCallerIdContact(mContext, number);
if (cequintCallerIdContact == null) {
return;
}
diff --git a/java/com/android/dialer/postcall/AndroidManifest.xml b/java/com/android/dialer/postcall/AndroidManifest.xml
index 79ca5d5eb..22c77dd93 100644
--- a/java/com/android/dialer/postcall/AndroidManifest.xml
+++ b/java/com/android/dialer/postcall/AndroidManifest.xml
@@ -21,7 +21,7 @@
<activity
android:name="com.android.dialer.postcall.PostCallActivity"
android:exported="false"
- android:theme="@style/Theme.AppCompat.NoActionBar"
+ android:theme="@style/DialerThemeBase.NoActionBar"
android:windowSoftInputMode="adjustResize"
android:screenOrientation="portrait"/>
</application>
diff --git a/java/com/android/dialer/postcall/PostCall.java b/java/com/android/dialer/postcall/PostCall.java
index 586b47395..7eb83b133 100644
--- a/java/com/android/dialer/postcall/PostCall.java
+++ b/java/com/android/dialer/postcall/PostCall.java
@@ -26,8 +26,6 @@ import android.support.design.widget.Snackbar;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
-import com.android.dialer.buildtype.BuildType;
-import com.android.dialer.common.Assert;
import com.android.dialer.common.ConfigProvider;
import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
@@ -203,19 +201,7 @@ public class PostCall {
}
private static boolean isEnabled(Context context) {
- @BuildType.Type int type = BuildType.get();
- switch (type) {
- case BuildType.BUGFOOD:
- case BuildType.DOGFOOD:
- case BuildType.FISHFOOD:
- case BuildType.TEST:
- return ConfigProviderBindings.get(context).getBoolean("enable_post_call", true);
- case BuildType.RELEASE:
- return ConfigProviderBindings.get(context).getBoolean("enable_post_call_prod", true);
- default:
- Assert.fail();
- return false;
- }
+ return ConfigProviderBindings.get(context).getBoolean("enable_post_call_prod", true);
}
private static boolean isSimReady(Context context) {
diff --git a/java/com/android/dialer/protos/ProtoParsers.java b/java/com/android/dialer/protos/ProtoParsers.java
index b77c0699b..5a60799bc 100644
--- a/java/com/android/dialer/protos/ProtoParsers.java
+++ b/java/com/android/dialer/protos/ProtoParsers.java
@@ -18,13 +18,10 @@ package com.android.dialer.protos;
import android.content.Intent;
import android.os.Bundle;
-import android.os.Parcel;
-import android.os.Parcelable;
+import android.support.annotation.NonNull;
import com.android.dialer.common.Assert;
-import com.google.protobuf.CodedOutputStream;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.MessageLite;
-import java.io.IOException;
/** Useful methods for using Protocol Buffers with Android. */
public final class ProtoParsers {
@@ -35,11 +32,8 @@ public final class ProtoParsers {
@SuppressWarnings("unchecked") // We want to eventually optimize away parser classes, so cast
public static <T extends MessageLite> T get(Bundle bundle, String key, T defaultInstance)
throws InvalidProtocolBufferException {
- // Class loaders are unique to each Class instance, so we need to specify how to decode
- // the information again, even though we set the class loaders when serializing the data.
- bundle.setClassLoader(ProtoParsers.class.getClassLoader());
- InternalDontUse parcelable = bundle.getParcelable(key);
- return (T) parcelable.getMessageUnsafe(defaultInstance.getDefaultInstanceForType());
+ byte[] bytes = bundle.getByteArray(key);
+ return (T) mergeFrom(bytes, defaultInstance.getDefaultInstanceForType());
}
/**
@@ -51,7 +45,7 @@ public final class ProtoParsers {
try {
return get(bundle, key, defaultInstance);
} catch (InvalidProtocolBufferException e) {
- throw new RuntimeException(e);
+ throw Assert.createIllegalStateFailException(e.toString());
}
}
@@ -68,121 +62,28 @@ public final class ProtoParsers {
* Stores a proto in a Bundle, for later retrieval by {@link #get(Bundle, String, MessageLite)} or
* {@link #getFromInstanceState(Bundle, String, MessageLite)}.
*/
- public static void put(Bundle bundle, String key, MessageLite message) {
- bundle.putParcelable(key, new InternalDontUse<>(null, message));
+ public static void put(
+ @NonNull Bundle bundle, @NonNull String key, @NonNull MessageLite message) {
+ Assert.checkState(message != null);
+ bundle.putByteArray(key, message.toByteArray());
}
/**
* Stores a proto in an Intent, for later retrieval by {@link #get(Bundle, String, MessageLite)}.
* Needs separate method because Intent has similar to but different API than Bundle.
*/
- public static void put(Intent intent, String key, MessageLite message) {
- intent.putExtra(key, new InternalDontUse<>(null, message));
- }
-
- /** Returns a {@linkplain Parcelable} representation of this protobuf message. */
- public static <T extends MessageLite> ParcelableProto<T> asParcelable(T message) {
- return new InternalDontUse<>(null, message);
- }
-
- /**
- * A protobuf message that can be stored in a {@link Parcel}.
- *
- * <p><b>Note:</b> This <code>Parcelable</code> can only be used in single app. Attempting to send
- * it to another app through an <code>Intent</code> will result in an exception due to Proguard
- * obfusation when the target application attempts to load the <code>ParcelableProto</code> class.
- */
- public interface ParcelableProto<T extends MessageLite> extends Parcelable {
- /**
- * @throws IllegalStateException if the parceled data does not correspond to the defaultInstance
- * type.
- */
- T getMessage(T defaultInstance);
- }
-
- /** Public because of Parcelable requirements. Do not use. */
- public static final class InternalDontUse<T extends MessageLite> implements ParcelableProto<T> {
- /* One of these two fields is always populated - since the bytes field never escapes this
- * object, there is no risk of concurrent modification by multiple threads, and volatile
- * is sufficient to be thread-safe. */
- private volatile byte[] bytes;
- private volatile T message;
-
- /**
- * Ideally, we would have type safety here. However, a static field {@link Creator} is required
- * by {@link Parcelable}. Static fields are inherently not type safe, since only 1 exists per
- * class (rather than 1 per type).
- */
- public static final Parcelable.Creator<InternalDontUse<?>> CREATOR =
- new Creator<InternalDontUse<?>>() {
- @Override
- public InternalDontUse<?> createFromParcel(Parcel parcel) {
- int serializedSize = parcel.readInt();
- byte[] array = new byte[serializedSize];
- parcel.readByteArray(array);
- return new InternalDontUse<>(array, null);
- }
-
- @Override
- public InternalDontUse<?>[] newArray(int i) {
- return new InternalDontUse[i];
- }
- };
-
- private InternalDontUse(byte[] bytes, T message) {
- Assert.checkArgument(bytes != null || message != null, "Must have a message or bytes");
- this.bytes = bytes;
- this.message = message;
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel parcel, int i) {
- if (bytes == null) {
- final byte[] flatArray = new byte[message.getSerializedSize()];
- try {
- message.writeTo(CodedOutputStream.newInstance(flatArray));
- bytes = flatArray;
- } catch (IOException impossible) {
- throw new AssertionError(impossible);
- }
- }
- parcel.writeInt(bytes.length);
- parcel.writeByteArray(bytes);
- }
-
- @Override
- public T getMessage(T defaultInstance) {
- try {
- // The proto should never be invalid if it came from our application, so if it is, throw.
- return getMessageUnsafe(defaultInstance);
- } catch (InvalidProtocolBufferException e) {
- throw new IllegalStateException(e);
- }
- }
-
- @SuppressWarnings("unchecked") // We're being deserialized, so there's no real type safety
- T getMessageUnsafe(T defaultInstance) throws InvalidProtocolBufferException {
- // There's a risk that we'll double-parse the bytes, but that's OK, because it'll end up
- // as the same immutable object anyway.
- if (message == null) {
- message = (T) defaultInstance.toBuilder().mergeFrom(bytes).build();
- }
- return message;
- }
+ public static void put(@NonNull Intent intent, @NonNull String key, MessageLite message) {
+ Assert.checkState(message != null);
+ intent.putExtra(key, message.toByteArray());
}
/** Parses a proto, throwing parser errors as runtime exceptions. */
@SuppressWarnings("unchecked") // We want to eventually optimize away parser classes
- public static <T extends MessageLite> T mergeFrom(byte[] bytes, T defaultInstance) {
+ private static <T extends MessageLite> T mergeFrom(byte[] bytes, T defaultInstance) {
try {
return (T) defaultInstance.toBuilder().mergeFrom(bytes).build();
} catch (InvalidProtocolBufferException e) {
- throw new RuntimeException(e);
+ throw Assert.createIllegalStateFailException(e.toString());
}
}
}
diff --git a/java/com/android/dialer/searchfragment/AndroidManifest.xml b/java/com/android/dialer/searchfragment/AndroidManifest.xml
new file mode 100644
index 000000000..88ce67c13
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/AndroidManifest.xml
@@ -0,0 +1,16 @@
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<manifest package="com.android.dialer.searchfragment"/> \ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/NewSearchFragment.java b/java/com/android/dialer/searchfragment/NewSearchFragment.java
new file mode 100644
index 000000000..e7283d0ad
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/NewSearchFragment.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2017 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.searchfragment;
+
+import android.app.Fragment;
+import android.app.LoaderManager.LoaderCallbacks;
+import android.content.Loader;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+/** Fragment used for searching contacts. */
+public final class NewSearchFragment extends Fragment implements LoaderCallbacks<Cursor> {
+
+ private RecyclerView recyclerView;
+ private SearchAdapter adapter;
+ private String query;
+
+ @Nullable
+ @Override
+ public View onCreateView(
+ LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle bundle) {
+ getLoaderManager().initLoader(0, null, this);
+ View view = inflater.inflate(R.layout.fragment_search, parent, false);
+ recyclerView = view.findViewById(R.id.recycler_view);
+ recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+
+ getLoaderManager().initLoader(0, null, this);
+ return view;
+ }
+
+ @Override
+ public Loader<Cursor> onCreateLoader(int id, Bundle bundle) {
+ // TODO add more loaders
+ return new SearchContactsCursorLoader(getContext());
+ }
+
+ @Override
+ public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
+ if (adapter == null) {
+ adapter = new SearchAdapter(getContext());
+ }
+ if (loader instanceof SearchContactsCursorLoader) {
+ adapter.setContactsCursor(new SearchContactCursor(cursor, query));
+ }
+ recyclerView.setAdapter(adapter);
+ }
+
+ @Override
+ public void onLoaderReset(Loader<Cursor> loader) {
+ if (adapter != null) {
+ adapter.clear();
+ adapter = null;
+ }
+ recyclerView.setAdapter(null);
+ }
+
+ public void setQuery(String query) {
+ this.query = query;
+ if (adapter != null) {
+ adapter.setQuery(query);
+ }
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/QueryUtil.java b/java/com/android/dialer/searchfragment/QueryUtil.java
new file mode 100644
index 000000000..a3f44ab83
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/QueryUtil.java
@@ -0,0 +1,269 @@
+/*
+ * Copyright (C) 2017 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.searchfragment;
+
+import android.graphics.Typeface;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.telephony.PhoneNumberUtils;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.text.TextUtils;
+import android.text.style.StyleSpan;
+import java.util.regex.Pattern;
+
+/** Contains utility methods for comparing and filtering strings with search queries. */
+final class QueryUtil {
+
+ /** Matches strings with "-", "(", ")", 2-9 of at least length one. */
+ static final Pattern T9_PATTERN = Pattern.compile("[\\-()2-9]+");
+
+ /**
+ * Compares a name and query and returns a {@link CharSequence} with bolded characters.
+ *
+ * <p>Some example:
+ *
+ * <ul>
+ * <li>"query" would bold "John [query] Smith"
+ * <li>"222" would bold "[AAA] Mom"
+ * <li>"222" would bold "[A]llen [A]lex [A]aron"
+ * </ul>
+ *
+ * @param query containing any characters
+ * @param name of a contact/string that query will compare to
+ * @return name with query bolded if query can be found in the name.
+ */
+ static CharSequence getNameWithQueryBolded(@Nullable String query, @NonNull String name) {
+ if (TextUtils.isEmpty(query)) {
+ return name;
+ }
+
+ int index = -1;
+ int numberOfBoldedCharacters = 0;
+
+ if (nameMatchesT9Query(query, name)) {
+ // Bold the characters that match the t9 query
+ index = indexOfQueryNonDigitsIgnored(query, getT9Representation(name));
+ if (index == -1) {
+ return getNameWithInitialsBolded(query, name);
+ }
+ numberOfBoldedCharacters = query.length();
+
+ for (int i = 0; i < query.length(); i++) {
+ char c = query.charAt(i);
+ if (!Character.isDigit(c)) {
+ numberOfBoldedCharacters--;
+ }
+ }
+
+ for (int i = 0; i < index + numberOfBoldedCharacters; i++) {
+ if (!Character.isLetterOrDigit(name.charAt(i))) {
+ if (i < index) {
+ index++;
+ } else {
+ numberOfBoldedCharacters++;
+ }
+ }
+ }
+ }
+
+ if (index == -1) {
+ // Bold the query as an exact match in the name
+ index = name.toLowerCase().indexOf(query);
+ numberOfBoldedCharacters = query.length();
+ }
+
+ return index == -1 ? name : getBoldedString(name, index, numberOfBoldedCharacters);
+ }
+
+ private static CharSequence getNameWithInitialsBolded(String query, String name) {
+ SpannableString boldedInitials = new SpannableString(name);
+ name = name.toLowerCase();
+ int initialsBolded = 0;
+ int nameIndex = -1;
+
+ while (++nameIndex < name.length() && initialsBolded < query.length()) {
+ if ((nameIndex == 0 || name.charAt(nameIndex - 1) == ' ')
+ && getDigit(name.charAt(nameIndex)) == query.charAt(initialsBolded)) {
+ boldedInitials.setSpan(
+ new StyleSpan(Typeface.BOLD),
+ nameIndex,
+ nameIndex + 1,
+ Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ initialsBolded++;
+ }
+ }
+ return boldedInitials;
+ }
+
+ /**
+ * Compares a number and a query and returns a {@link CharSequence} with bolded characters.
+ *
+ * <ul>
+ * <li>"123" would bold "(650)34[1-23]24"
+ * <li>"123" would bold "+1([123])111-2222
+ * </ul>
+ *
+ * @param query containing only numbers and phone number related characters "(", ")", "-", "+"
+ * @param number phone number of a contact that the query will compare to.
+ * @return number with query bolded if query can be found in the number.
+ */
+ static CharSequence getNumberWithQueryBolded(@Nullable String query, @NonNull String number) {
+ if (TextUtils.isEmpty(query) || !numberMatchesNumberQuery(query, number)) {
+ return number;
+ }
+
+ int index = indexOfQueryNonDigitsIgnored(query, number);
+ int boldedCharacters = query.length();
+
+ for (char c : query.toCharArray()) {
+ if (!Character.isDigit(c)) {
+ boldedCharacters--;
+ }
+ }
+
+ for (int i = 0; i < index + boldedCharacters; i++) {
+ if (!Character.isDigit(number.charAt(i))) {
+ if (i <= index) {
+ index++;
+ } else {
+ boldedCharacters++;
+ }
+ }
+ }
+ return getBoldedString(number, index, boldedCharacters);
+ }
+
+ private static SpannableString getBoldedString(String s, int index, int numBolded) {
+ SpannableString span = new SpannableString(s);
+ span.setSpan(
+ new StyleSpan(Typeface.BOLD), index, index + numBolded, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+ return span;
+ }
+
+ /**
+ * @return true if the query is of T9 format and the name's T9 representation belongs to the
+ * query; false otherwise.
+ */
+ static boolean nameMatchesT9Query(String query, String name) {
+ if (!T9_PATTERN.matcher(query).matches()) {
+ return false;
+ }
+
+ // Substring
+ if (indexOfQueryNonDigitsIgnored(query, getT9Representation(name)) != -1) {
+ return true;
+ }
+
+ // Check matches initials
+ // TODO investigate faster implementation
+ query = digitsOnly(query);
+ int queryIndex = 0;
+
+ String[] names = name.toLowerCase().split("\\s");
+ for (int i = 0; i < names.length && queryIndex < query.length(); i++) {
+ if (TextUtils.isEmpty(names[i])) {
+ continue;
+ }
+
+ if (getDigit(names[i].charAt(0)) == query.charAt(queryIndex)) {
+ queryIndex++;
+ }
+ }
+
+ return queryIndex == query.length();
+ }
+
+ /** @return true if the number belongs to the query. */
+ static boolean numberMatchesNumberQuery(String query, String number) {
+ return PhoneNumberUtils.isGlobalPhoneNumber(query)
+ && indexOfQueryNonDigitsIgnored(query, number) != -1;
+ }
+
+ /**
+ * Checks if query is contained in number while ignoring all characters in both that are not
+ * digits (i.e. {@link Character#isDigit(char)} returns false).
+ *
+ * @return index where query is found with all non-digits removed, -1 if it's not found.
+ */
+ private static int indexOfQueryNonDigitsIgnored(@NonNull String query, @NonNull String number) {
+ return digitsOnly(number).indexOf(digitsOnly(query));
+ }
+
+ // Returns string with letters replaced with their T9 representation.
+ private static String getT9Representation(String s) {
+ StringBuilder builder = new StringBuilder(s.length());
+ for (char c : s.toLowerCase().toCharArray()) {
+ builder.append(getDigit(c));
+ }
+ return builder.toString();
+ }
+
+ /** @return String s with only digits recognized by Character#isDigit() remaining */
+ static String digitsOnly(String s) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (Character.isDigit(c)) {
+ sb.append(c);
+ }
+ }
+ return sb.toString();
+ }
+
+ // Returns the T9 representation of a lower case character, otherwise returns the character.
+ private static char getDigit(char c) {
+ switch (c) {
+ case 'a':
+ case 'b':
+ case 'c':
+ return '2';
+ case 'd':
+ case 'e':
+ case 'f':
+ return '3';
+ case 'g':
+ case 'h':
+ case 'i':
+ return '4';
+ case 'j':
+ case 'k':
+ case 'l':
+ return '5';
+ case 'm':
+ case 'n':
+ case 'o':
+ return '6';
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ return '7';
+ case 't':
+ case 'u':
+ case 'v':
+ return '8';
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ return '9';
+ default:
+ return c;
+ }
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/README.md b/java/com/android/dialer/searchfragment/README.md
new file mode 100644
index 000000000..b3b9135e5
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/README.md
@@ -0,0 +1,62 @@
+# Dialer Search Ui
+
+searchfragment/ contains all code relevant to loading, rendering and filtering
+search results in both dialpad search and regular search.
+
+## Loading
+
+### On Device Contacts
+
+On device contacts loading happens in SearchContactsCursorLoader. It is used in
+conjunction with NewSearchFragment and Loader Callbacks to return a cursor from
+cp2 containing all of the relevant info needed to rendering.
+
+### Business Search
+
+// TODO(calderwoodra)
+
+### Google Directory Search
+
+// TODO(calderwoodra)
+
+## Rendering
+
+NewSearchFragment, SearchAdapter, SearchContactViewHolder and
+SearchCursorManager are used to render contact information. The fragment's
+recyclerview, adapter and viewholder work as expected like a normal recyclerview
+paradigm.
+
+The are three things to note about rendering:
+
+* There are three data sources rendered: On device contacts, business search
+ results and google directory results.
+* SearchContactsCursorLoader returns its cursor from cp2 and we filter/wrap it
+ with SearchContactCursor to render useful results (see below).
+* SearchCursorManager is used to coalesce all three data sources to help with
+ determining row count, row type and returning the correct data source for
+ each position.
+
+## Filtering
+
+On device contacts are filtered using SearchContactCursor. We wrap the cursor
+returned from SearchContactsCursorLoader in NewSearchFragment#onLoadFinished in
+order to abstract away the filtering logic from the recyclerview adapter and
+viewholders.
+
+SearchContactCursor applies filtering in SearchContactCursor#filter to remove
+duplicate phone numbers returned from cp2 and phone numbers that do not match
+the given search query.
+
+Filtering methods used are:
+
+* T9/dialpad search methods
+ * Initial match (957 matches [W]illiam [J]ohn [S]mith)
+ * Number + name match (1800946 matches [1800-Win]-A-Prize)
+* Numeric/dialpad search methods
+ * Simple number match (510333 matches [510-333]-7596)
+ * Country-code agnostic matching for E164 normalized numbers (9177 matches
+ +65[9177]6930)
+ * Country-code agnostic matching (510333 matches 1-[510-333]-7596)
+ * Area-code agnostic matching (333 matches 510-[333]-7596)
+* Name/keyboard search methods:
+ * Simple name match (564 matches [Joh]n)
diff --git a/java/com/android/dialer/searchfragment/SearchAdapter.java b/java/com/android/dialer/searchfragment/SearchAdapter.java
new file mode 100644
index 000000000..8f5241557
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/SearchAdapter.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2017 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.searchfragment;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.RecyclerView.ViewHolder;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+import com.android.dialer.common.Assert;
+import com.android.dialer.searchfragment.SearchCursorManager.RowType;
+
+/** RecyclerView adapter for {@link NewSearchFragment}. */
+class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
+
+ private final SearchCursorManager searchCursorManager;
+ private final Context context;
+
+ private String query;
+
+ SearchAdapter(Context context) {
+ searchCursorManager = new SearchCursorManager();
+ this.context = context;
+ }
+
+ // TODO: fill in the rest of the view holders.
+ @Override
+ public ViewHolder onCreateViewHolder(ViewGroup root, int position) {
+ @RowType int rowType = searchCursorManager.getRowType(position);
+ switch (rowType) {
+ case RowType.CONTACT_ROW:
+ return new SearchContactViewHolder(
+ LayoutInflater.from(context).inflate(R.layout.search_contact_row, root, false));
+ case RowType.DIRECTORY_HEADER:
+ case RowType.DIRECTORY_ROW:
+ case RowType.INVALID:
+ case RowType.NEARBY_PLACES_HEADER:
+ case RowType.NEARBY_PLACES_ROW:
+ return null;
+ default:
+ throw Assert.createIllegalStateFailException("Invalid RowType: " + rowType);
+ }
+ }
+
+ @Override
+ public void onBindViewHolder(ViewHolder holder, int position) {
+ Cursor cursor = searchCursorManager.getCursor(position);
+ ((SearchContactViewHolder) holder).bind(cursor, query);
+ }
+
+ void setContactsCursor(Cursor cursor) {
+ searchCursorManager.setContactsCursor(cursor);
+ }
+
+ void clear() {
+ searchCursorManager.clear();
+ }
+
+ @Override
+ public int getItemCount() {
+ return searchCursorManager.getCount();
+ }
+
+ public void setQuery(String query) {
+ this.query = query;
+ searchCursorManager.setQuery(query);
+ notifyDataSetChanged();
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/SearchContactCursor.java b/java/com/android/dialer/searchfragment/SearchContactCursor.java
new file mode 100644
index 000000000..5006e1a60
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/SearchContactCursor.java
@@ -0,0 +1,390 @@
+/*
+ * Copyright (C) 2017 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.searchfragment;
+
+import android.content.ContentResolver;
+import android.database.CharArrayBuffer;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.database.DataSetObserver;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.annotation.IntDef;
+import android.support.annotation.Nullable;
+import android.text.TextUtils;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Wrapper for a cursor returned by {@link SearchContactsCursorLoader}.
+ *
+ * <p>This cursor removes duplicate phone numbers associated with the same contact and can filter
+ * contacts based on a query by calling {@link #filter(String)}.
+ */
+final class SearchContactCursor implements Cursor {
+
+ private final Cursor cursor;
+ // List of cursor ids that are valid for displaying after filtering.
+ private final List<Integer> queryFilteredPositions = new ArrayList<>();
+
+ private int currentPosition = 0;
+
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({
+ Qualification.NUMBERS_ARE_NOT_DUPLICATES,
+ Qualification.NEW_NUMBER_IS_MORE_QUALIFIED,
+ Qualification.CURRENT_MORE_QUALIFIED
+ })
+ private @interface Qualification {
+ /** Numbers are not duplicates (i.e. neither is more qualified than the other). */
+ int NUMBERS_ARE_NOT_DUPLICATES = 0;
+ /** Number are duplicates and new number is more qualified than the existing number. */
+ int NEW_NUMBER_IS_MORE_QUALIFIED = 1;
+ /** Numbers are duplicates but current/existing number is more qualified than new number. */
+ int CURRENT_MORE_QUALIFIED = 2;
+ }
+
+ /**
+ * @param cursor with projection {@link SearchContactsCursorLoader#PHONE_PROJECTION}.
+ * @param query to filter cursor results.
+ */
+ SearchContactCursor(Cursor cursor, @Nullable String query) {
+ // TODO investigate copying this into a MatrixCursor and holding in memory
+ this.cursor = cursor;
+ filter(query);
+ }
+
+ /**
+ * Filters out contacts that do not match the query.
+ *
+ * <p>The query can have at least 1 of 3 forms:
+ *
+ * <ul>
+ * <li>A phone number
+ * <li>A T9 representation of a name (matches {@link QueryUtil#T9_PATTERN}).
+ * <li>A name
+ * </ul>
+ *
+ * <p>A contact is considered a match if:
+ *
+ * <ul>
+ * <li>Its phone number contains the phone number query
+ * <li>Its name represented in T9 contains the T9 query
+ * <li>Its name contains the query
+ * </ul>
+ */
+ void filter(@Nullable String query) {
+ if (query == null) {
+ query = "";
+ }
+ queryFilteredPositions.clear();
+
+ // On some devices, contacts have multiple rows with identical phone numbers. These numbers are
+ // considered duplicates. Since the order might not be guaranteed, we compare all of the numbers
+ // and hold onto the most qualified one as the one we want to display to the user.
+ // See #getQualification for details on how qualification is determined.
+ int previousMostQualifiedPosition = 0;
+ String previousName = "";
+ String previousMostQualifiedNumber = "";
+
+ query = query.toLowerCase();
+ cursor.moveToPosition(-1);
+
+ while (cursor.moveToNext()) {
+ int position = cursor.getPosition();
+ String currentNumber = cursor.getString(SearchContactsCursorLoader.PHONE_NUMBER);
+ String currentName = cursor.getString(SearchContactsCursorLoader.PHONE_DISPLAY_NAME);
+
+ if (!previousName.equals(currentName)) {
+ previousName = currentName;
+ previousMostQualifiedNumber = currentNumber;
+ previousMostQualifiedPosition = position;
+ } else {
+ // Since the contact name is the same, check if this number is a duplicate
+ switch (getQualification(currentNumber, previousMostQualifiedNumber)) {
+ case Qualification.CURRENT_MORE_QUALIFIED:
+ // Number is a less qualified duplicate, ignore it.
+ continue;
+ case Qualification.NEW_NUMBER_IS_MORE_QUALIFIED:
+ // If number wasn't filtered out before, remove it and add it's more qualified version.
+ if (queryFilteredPositions.contains(previousMostQualifiedPosition)) {
+ queryFilteredPositions.remove(previousMostQualifiedPosition);
+ queryFilteredPositions.add(position);
+ }
+ previousMostQualifiedNumber = currentNumber;
+ previousMostQualifiedPosition = position;
+ continue;
+ case Qualification.NUMBERS_ARE_NOT_DUPLICATES:
+ default:
+ previousMostQualifiedNumber = currentNumber;
+ previousMostQualifiedPosition = position;
+ }
+ }
+
+ if (TextUtils.isEmpty(query)
+ || QueryUtil.nameMatchesT9Query(query, previousName)
+ || QueryUtil.numberMatchesNumberQuery(query, previousMostQualifiedNumber)
+ || previousName.contains(query)) {
+ queryFilteredPositions.add(previousMostQualifiedPosition);
+ }
+ }
+ currentPosition = 0;
+ cursor.moveToFirst();
+ }
+
+ /**
+ * @param number that may or may not be more qualified than the existing most qualified number
+ * @param mostQualifiedNumber currently most qualified number associated with same contact
+ * @return {@link Qualification} where the more qualified number is the number with the most
+ * digits. If the digits are the same, the number with the most formatting is more qualified.
+ */
+ private @Qualification int getQualification(String number, String mostQualifiedNumber) {
+ // Ignore formatting
+ String numberDigits = QueryUtil.digitsOnly(number);
+ String qualifiedNumberDigits = QueryUtil.digitsOnly(mostQualifiedNumber);
+
+ // If the numbers are identical, return version with more formatting
+ if (qualifiedNumberDigits.equals(numberDigits)) {
+ if (mostQualifiedNumber.length() >= number.length()) {
+ return Qualification.CURRENT_MORE_QUALIFIED;
+ } else {
+ return Qualification.NEW_NUMBER_IS_MORE_QUALIFIED;
+ }
+ }
+
+ // If one number is a suffix of another, then return the longer one.
+ // If they are equal, then return the current most qualified number.
+ if (qualifiedNumberDigits.endsWith(numberDigits)) {
+ return Qualification.CURRENT_MORE_QUALIFIED;
+ }
+ if (numberDigits.endsWith(qualifiedNumberDigits)) {
+ return Qualification.NEW_NUMBER_IS_MORE_QUALIFIED;
+ }
+ return Qualification.NUMBERS_ARE_NOT_DUPLICATES;
+ }
+
+ @Override
+ public boolean moveToPosition(int position) {
+ currentPosition = position;
+ return currentPosition < getCount()
+ && cursor.moveToPosition(queryFilteredPositions.get(currentPosition));
+ }
+
+ @Override
+ public boolean move(int offset) {
+ currentPosition += offset;
+ return moveToPosition(currentPosition);
+ }
+
+ @Override
+ public int getCount() {
+ return queryFilteredPositions.size();
+ }
+
+ @Override
+ public boolean isFirst() {
+ return currentPosition == 0;
+ }
+
+ @Override
+ public boolean isLast() {
+ return currentPosition == getCount() - 1;
+ }
+
+ @Override
+ public int getPosition() {
+ return currentPosition;
+ }
+
+ @Override
+ public boolean moveToFirst() {
+ return moveToPosition(0);
+ }
+
+ @Override
+ public boolean moveToLast() {
+ return moveToPosition(getCount() - 1);
+ }
+
+ @Override
+ public boolean moveToNext() {
+ return moveToPosition(++currentPosition);
+ }
+
+ @Override
+ public boolean moveToPrevious() {
+ return moveToPosition(--currentPosition);
+ }
+
+ // Methods below simply call the corresponding method in cursor.
+ @Override
+ public boolean isBeforeFirst() {
+ return cursor.isBeforeFirst();
+ }
+
+ @Override
+ public boolean isAfterLast() {
+ return cursor.isAfterLast();
+ }
+
+ @Override
+ public int getColumnIndex(String columnName) {
+ return cursor.getColumnIndex(columnName);
+ }
+
+ @Override
+ public int getColumnIndexOrThrow(String columnName) {
+ return cursor.getColumnIndexOrThrow(columnName);
+ }
+
+ @Override
+ public String getColumnName(int columnIndex) {
+ return cursor.getColumnName(columnIndex);
+ }
+
+ @Override
+ public String[] getColumnNames() {
+ return cursor.getColumnNames();
+ }
+
+ @Override
+ public int getColumnCount() {
+ return cursor.getColumnCount();
+ }
+
+ @Override
+ public byte[] getBlob(int columnIndex) {
+ return cursor.getBlob(columnIndex);
+ }
+
+ @Override
+ public String getString(int columnIndex) {
+ return cursor.getString(columnIndex);
+ }
+
+ @Override
+ public void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer) {
+ cursor.copyStringToBuffer(columnIndex, buffer);
+ }
+
+ @Override
+ public short getShort(int columnIndex) {
+ return cursor.getShort(columnIndex);
+ }
+
+ @Override
+ public int getInt(int columnIndex) {
+ return cursor.getInt(columnIndex);
+ }
+
+ @Override
+ public long getLong(int columnIndex) {
+ return cursor.getLong(columnIndex);
+ }
+
+ @Override
+ public float getFloat(int columnIndex) {
+ return cursor.getFloat(columnIndex);
+ }
+
+ @Override
+ public double getDouble(int columnIndex) {
+ return cursor.getDouble(columnIndex);
+ }
+
+ @Override
+ public int getType(int columnIndex) {
+ return cursor.getType(columnIndex);
+ }
+
+ @Override
+ public boolean isNull(int columnIndex) {
+ return cursor.isNull(columnIndex);
+ }
+
+ @Override
+ public void deactivate() {
+ cursor.deactivate();
+ }
+
+ @Override
+ public boolean requery() {
+ return cursor.requery();
+ }
+
+ @Override
+ public void close() {
+ cursor.close();
+ }
+
+ @Override
+ public boolean isClosed() {
+ return cursor.isClosed();
+ }
+
+ @Override
+ public void registerContentObserver(ContentObserver observer) {
+ cursor.registerContentObserver(observer);
+ }
+
+ @Override
+ public void unregisterContentObserver(ContentObserver observer) {
+ cursor.unregisterContentObserver(observer);
+ }
+
+ @Override
+ public void registerDataSetObserver(DataSetObserver observer) {
+ cursor.registerDataSetObserver(observer);
+ }
+
+ @Override
+ public void unregisterDataSetObserver(DataSetObserver observer) {
+ cursor.unregisterDataSetObserver(observer);
+ }
+
+ @Override
+ public void setNotificationUri(ContentResolver cr, Uri uri) {
+ cursor.setNotificationUri(cr, uri);
+ }
+
+ @Override
+ public Uri getNotificationUri() {
+ return cursor.getNotificationUri();
+ }
+
+ @Override
+ public boolean getWantsAllOnMoveCalls() {
+ return cursor.getWantsAllOnMoveCalls();
+ }
+
+ @Override
+ public void setExtras(Bundle extras) {
+ cursor.setExtras(extras);
+ }
+
+ @Override
+ public Bundle getExtras() {
+ return cursor.getExtras();
+ }
+
+ @Override
+ public Bundle respond(Bundle extras) {
+ return cursor.respond(extras);
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/SearchContactViewHolder.java b/java/com/android/dialer/searchfragment/SearchContactViewHolder.java
new file mode 100644
index 000000000..4ac6af33e
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/SearchContactViewHolder.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2017 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.searchfragment;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Contacts;
+import android.support.annotation.IntDef;
+import android.support.v7.widget.RecyclerView.ViewHolder;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.ImageView;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.lettertiles.LetterTileDrawable;
+import com.android.dialer.callintent.CallInitiationType.Type;
+import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.common.Assert;
+import com.android.dialer.telecom.TelecomUtil;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/** ViewHolder for a contact row in {@link NewSearchFragment}. */
+final class SearchContactViewHolder extends ViewHolder implements OnClickListener {
+
+ /** IntDef for the different types of actions that can be shown. */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({
+ SearchContactViewHolder.CallToAction.NONE,
+ SearchContactViewHolder.CallToAction.VIDEO_CALL,
+ SearchContactViewHolder.CallToAction.SHARE_AND_CALL
+ })
+ @interface CallToAction {
+ int NONE = 0;
+ int VIDEO_CALL = 1;
+ int SHARE_AND_CALL = 2;
+ }
+
+ private final QuickContactBadge photo;
+ private final TextView nameOrNumberView;
+ private final TextView numberView;
+ private final ImageView callToActionView;
+ private final Context context;
+
+ private String number;
+ private @CallToAction int currentAction;
+
+ SearchContactViewHolder(View view) {
+ super(view);
+ view.setOnClickListener(this);
+ photo = view.findViewById(R.id.photo);
+ nameOrNumberView = view.findViewById(R.id.primary);
+ numberView = view.findViewById(R.id.secondary);
+ callToActionView = view.findViewById(R.id.call_to_action);
+ context = view.getContext();
+ }
+
+ /**
+ * Binds the ViewHolder with a cursor from {@link SearchContactsCursorLoader} with the data found
+ * at the cursors set position.
+ */
+ void bind(Cursor cursor, String query) {
+ number = cursor.getString(SearchContactsCursorLoader.PHONE_NUMBER);
+ String name = cursor.getString(SearchContactsCursorLoader.PHONE_DISPLAY_NAME);
+ String label = getLabel(context.getResources(), cursor);
+ String secondaryInfo =
+ TextUtils.isEmpty(label)
+ ? number
+ : context.getString(R.string.call_subject_type_and_number, label, number);
+
+ nameOrNumberView.setText(QueryUtil.getNameWithQueryBolded(query, name));
+ numberView.setText(QueryUtil.getNumberWithQueryBolded(query, secondaryInfo));
+ setCallToAction(cursor);
+
+ if (shouldShowPhoto(cursor, name)) {
+ nameOrNumberView.setVisibility(View.VISIBLE);
+ photo.setVisibility(View.VISIBLE);
+ photo.setContentDescription(context.getString(R.string.description_quick_contact_for, name));
+ String photoUri = cursor.getString(SearchContactsCursorLoader.PHONE_PHOTO_URI);
+ ContactPhotoManager.getInstance(context)
+ .loadDialerThumbnailOrPhoto(
+ photo,
+ getContactUri(cursor),
+ cursor.getLong(SearchContactsCursorLoader.PHONE_PHOTO_ID),
+ photoUri == null ? null : Uri.parse(photoUri),
+ name,
+ LetterTileDrawable.TYPE_DEFAULT);
+ } else {
+ nameOrNumberView.setVisibility(View.GONE);
+ photo.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ private boolean shouldShowPhoto(Cursor cursor, String currentName) {
+ int currentPosition = cursor.getPosition();
+ if (currentPosition == 0) {
+ return true;
+ } else {
+ cursor.moveToPosition(currentPosition - 1);
+ String previousName = cursor.getString(SearchContactsCursorLoader.PHONE_DISPLAY_NAME);
+ cursor.moveToPosition(currentPosition);
+ return !currentName.equals(previousName);
+ }
+ }
+
+ private static Uri getContactUri(Cursor cursor) {
+ long contactId = cursor.getLong(SearchContactsCursorLoader.PHONE_ID);
+ String lookupKey = cursor.getString(SearchContactsCursorLoader.PHONE_LOOKUP_KEY);
+ return Contacts.getLookupUri(contactId, lookupKey);
+ }
+
+ // TODO: handle CNAP and cequint types.
+ // TODO: unify this into a utility method with CallLogAdapter#getNumberType
+ private static String getLabel(Resources resources, Cursor cursor) {
+ int numberType = cursor.getInt(SearchContactsCursorLoader.PHONE_TYPE);
+ String numberLabel = cursor.getString(SearchContactsCursorLoader.PHONE_LABEL);
+
+ // Returns empty label instead of "custom" if the custom label is empty.
+ if (numberType == Phone.TYPE_CUSTOM && TextUtils.isEmpty(numberLabel)) {
+ return "";
+ }
+ return (String) Phone.getTypeLabel(resources, numberType, numberLabel);
+ }
+
+ private void setCallToAction(Cursor cursor) {
+ currentAction = getCallToAction(cursor);
+ switch (currentAction) {
+ case CallToAction.NONE:
+ callToActionView.setVisibility(View.GONE);
+ callToActionView.setOnClickListener(null);
+ break;
+ case CallToAction.SHARE_AND_CALL:
+ callToActionView.setVisibility(View.VISIBLE);
+ callToActionView.setImageDrawable(context.getDrawable(R.drawable.ic_phone_attach));
+ callToActionView.setOnClickListener(this);
+ break;
+ case CallToAction.VIDEO_CALL:
+ callToActionView.setVisibility(View.VISIBLE);
+ callToActionView.setImageDrawable(
+ context.getDrawable(R.drawable.quantum_ic_videocam_white_24));
+ callToActionView.setOnClickListener(this);
+ break;
+ default:
+ throw Assert.createIllegalStateFailException(
+ "Invalid Call to action type: " + currentAction);
+ }
+ }
+
+ private static @CallToAction int getCallToAction(Cursor cursor) {
+ int carrierPresence = cursor.getInt(SearchContactsCursorLoader.PHONE_CARRIER_PRESENCE);
+ if ((carrierPresence & Phone.CARRIER_PRESENCE_VT_CAPABLE) == 1) {
+ return CallToAction.VIDEO_CALL;
+ }
+
+ // TODO: enriched calling
+ return CallToAction.NONE;
+ }
+
+ @Override
+ public void onClick(View view) {
+ if (view == callToActionView) {
+ switch (currentAction) {
+ case CallToAction.SHARE_AND_CALL:
+ callToActionView.setVisibility(View.VISIBLE);
+ callToActionView.setImageDrawable(context.getDrawable(R.drawable.ic_phone_attach));
+ // TODO: open call composer.
+ break;
+ case CallToAction.VIDEO_CALL:
+ callToActionView.setVisibility(View.VISIBLE);
+ callToActionView.setImageDrawable(
+ context.getDrawable(R.drawable.quantum_ic_videocam_white_24));
+ // TODO: place a video call
+ break;
+ case CallToAction.NONE:
+ default:
+ throw Assert.createIllegalStateFailException(
+ "Invalid Call to action type: " + currentAction);
+ }
+ } else {
+ // TODO: set the correct call initiation type.
+ TelecomUtil.placeCall(context, new CallIntentBuilder(number, Type.REGULAR_SEARCH).build());
+ }
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/SearchContactsCursorLoader.java
new file mode 100644
index 000000000..309dfffd9
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/SearchContactsCursorLoader.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2017 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.searchfragment;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+
+/** Cursor Loader for {@link NewSearchFragment}. */
+final class SearchContactsCursorLoader extends CursorLoader {
+
+ public static final int PHONE_ID = 0;
+ public static final int PHONE_TYPE = 1;
+ public static final int PHONE_LABEL = 2;
+ public static final int PHONE_NUMBER = 3;
+ public static final int PHONE_DISPLAY_NAME = 4;
+ public static final int PHONE_PHOTO_ID = 5;
+ public static final int PHONE_PHOTO_URI = 6;
+ public static final int PHONE_LOOKUP_KEY = 7;
+ public static final int PHONE_CARRIER_PRESENCE = 8;
+
+ @SuppressWarnings("unused")
+ public static final int PHONE_SOFT_KEY = 9;
+
+ static final String[] PHONE_PROJECTION =
+ new String[] {
+ Phone._ID, // 0
+ Phone.TYPE, // 1
+ Phone.LABEL, // 2
+ Phone.NUMBER, // 3
+ Phone.DISPLAY_NAME_PRIMARY, // 4
+ Phone.PHOTO_ID, // 5
+ Phone.PHOTO_THUMBNAIL_URI, // 6
+ Phone.LOOKUP_KEY, // 7
+ Phone.CARRIER_PRESENCE, // 8
+ Phone.SORT_KEY_PRIMARY // 9
+ };
+
+ SearchContactsCursorLoader(Context context) {
+ super(
+ context, Phone.CONTENT_URI, PHONE_PROJECTION, null, null, Phone.SORT_KEY_PRIMARY + " ASC");
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/SearchCursorManager.java b/java/com/android/dialer/searchfragment/SearchCursorManager.java
new file mode 100644
index 000000000..64c4fc170
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/SearchCursorManager.java
@@ -0,0 +1,229 @@
+/*
+ * Copyright (C) 2017 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.searchfragment;
+
+import android.database.Cursor;
+import android.support.annotation.IntDef;
+import com.android.dialer.common.Assert;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Manages all of the cursors needed for {@link SearchAdapter}.
+ *
+ * <p>This class accepts three cursors:
+ *
+ * <ul>
+ * <li>A contacts cursor {@link #setContactsCursor(Cursor)}
+ * <li>A google search results cursor {@link #setNearbyPlacesCursor(Cursor)}
+ * <li>A work directory cursor {@link #setCorpDirectoryCursor(Cursor)}
+ * </ul>
+ *
+ * <p>The key purpose of this class is to compose three aforementioned cursors together to function
+ * as one cursor. The key methods needed to utilize this class as a cursor are:
+ *
+ * <ul>
+ * <li>{@link #getCursor(int)}
+ * <li>{@link #getCount()}
+ * <li>{@link #getRowType(int)}
+ * </ul>
+ */
+final class SearchCursorManager {
+
+ /** IntDef for the different types of rows that can be shown when searching. */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({
+ SearchCursorManager.RowType.INVALID,
+ SearchCursorManager.RowType.CONTACT_ROW,
+ SearchCursorManager.RowType.NEARBY_PLACES_HEADER,
+ SearchCursorManager.RowType.NEARBY_PLACES_ROW,
+ SearchCursorManager.RowType.DIRECTORY_HEADER,
+ SearchCursorManager.RowType.DIRECTORY_ROW
+ })
+ @interface RowType {
+ int INVALID = 0;
+ /** A row containing contact information for contacts stored locally on device. */
+ int CONTACT_ROW = 1;
+ /** Header to mark the end of contact rows and start of nearby places rows. */
+ int NEARBY_PLACES_HEADER = 2;
+ /** A row containing nearby places information/search results. */
+ int NEARBY_PLACES_ROW = 3;
+ /** Header to mark the end of the previous row set and start of directory rows. */
+ int DIRECTORY_HEADER = 4;
+ /** A row containing contact information for contacts stored externally in corp directories. */
+ int DIRECTORY_ROW = 5;
+ }
+
+ private Cursor contactsCursor = null;
+ private Cursor nearbyPlacesCursor = null;
+ private Cursor corpDirectoryCursor = null;
+
+ void setContactsCursor(Cursor cursor) {
+ if (cursor != null && cursor.getCount() > 0) {
+ contactsCursor = cursor;
+ } else {
+ contactsCursor = null;
+ }
+ }
+
+ void setNearbyPlacesCursor(Cursor cursor) {
+ if (cursor != null && cursor.getCount() > 0) {
+ nearbyPlacesCursor = cursor;
+ } else {
+ nearbyPlacesCursor = null;
+ }
+ }
+
+ void setCorpDirectoryCursor(Cursor cursor) {
+ if (cursor != null && cursor.getCount() > 0) {
+ corpDirectoryCursor = cursor;
+ } else {
+ corpDirectoryCursor = null;
+ }
+ }
+
+ void setQuery(String query) {
+ if (contactsCursor != null) {
+ ((SearchContactCursor) contactsCursor).filter(query);
+ }
+ }
+
+ /** @return the sum of counts of all cursors, including headers. */
+ int getCount() {
+ int count = 0;
+ if (contactsCursor != null) {
+ count += contactsCursor.getCount();
+ }
+
+ if (nearbyPlacesCursor != null) {
+ count++; // header
+ count += nearbyPlacesCursor.getCount();
+ }
+
+ if (corpDirectoryCursor != null) {
+ count++; // header
+ count += corpDirectoryCursor.getCount();
+ }
+
+ return count;
+ }
+
+ @RowType
+ int getRowType(int position) {
+ if (contactsCursor != null) {
+ position -= contactsCursor.getCount();
+
+ if (position < 0) {
+ return SearchCursorManager.RowType.CONTACT_ROW;
+ }
+ }
+
+ if (nearbyPlacesCursor != null) {
+ if (position == 0) {
+ return SearchCursorManager.RowType.NEARBY_PLACES_HEADER;
+ } else {
+ position--; // header
+ }
+
+ position -= nearbyPlacesCursor.getCount();
+
+ if (position < 0) {
+ return SearchCursorManager.RowType.NEARBY_PLACES_ROW;
+ }
+ }
+
+ if (corpDirectoryCursor != null) {
+ if (position == 0) {
+ return SearchCursorManager.RowType.DIRECTORY_HEADER;
+ } else {
+ position--; // header
+ }
+
+ position -= corpDirectoryCursor.getCount();
+
+ if (position < 0) {
+ return SearchCursorManager.RowType.DIRECTORY_ROW;
+ }
+ }
+
+ throw Assert.createIllegalStateFailException("No valid row type.");
+ }
+
+ /**
+ * Gets cursor corresponding to position in coelesced list of search cursors. Callers should
+ * ensure that {@link #getRowType(int)} doesn't correspond to header position, otherwise an
+ * exception will be thrown.
+ *
+ * @param position in coalecsed list of search cursors
+ * @return Cursor moved to position specific to passed in position.
+ */
+ Cursor getCursor(int position) {
+ if (contactsCursor != null) {
+ int count = contactsCursor.getCount();
+
+ if (position - count < 0) {
+ contactsCursor.moveToPosition(position);
+ return contactsCursor;
+ }
+ position -= count;
+ }
+
+ if (nearbyPlacesCursor != null) {
+ Assert.checkArgument(position != 0, "No valid cursor, position is nearby places header.");
+ position--; // header
+ int count = nearbyPlacesCursor.getCount();
+
+ if (position - count < 0) {
+ nearbyPlacesCursor.moveToPosition(position);
+ return nearbyPlacesCursor;
+ }
+ position -= count;
+ }
+
+ if (corpDirectoryCursor != null) {
+ Assert.checkArgument(position != 0, "No valid cursor, position is directory search header.");
+ position--; // header
+ int count = corpDirectoryCursor.getCount();
+
+ if (position - count < 0) {
+ corpDirectoryCursor.moveToPosition(position);
+ return corpDirectoryCursor;
+ }
+ position -= count;
+ }
+
+ throw Assert.createIllegalStateFailException("No valid cursor.");
+ }
+
+ /** removes all cursors. */
+ void clear() {
+ if (contactsCursor != null) {
+ contactsCursor.close();
+ contactsCursor = null;
+ }
+
+ if (nearbyPlacesCursor != null) {
+ nearbyPlacesCursor.close();
+ nearbyPlacesCursor = null;
+ }
+
+ if (corpDirectoryCursor != null) {
+ corpDirectoryCursor.close();
+ corpDirectoryCursor = null;
+ }
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/res/layout/fragment_search.xml b/java/com/android/dialer/searchfragment/res/layout/fragment_search.xml
new file mode 100644
index 000000000..06f234889
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/res/layout/fragment_search.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<android.support.v7.widget.RecyclerView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/recycler_view"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"/>
diff --git a/java/com/android/dialer/searchfragment/res/layout/search_contact_row.xml b/java/com/android/dialer/searchfragment/res/layout/search_contact_row.xml
new file mode 100644
index 000000000..efeca0e9d
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/res/layout/search_contact_row.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<RelativeLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/search_row_height"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:background="?android:attr/selectableItemBackground">
+
+ <QuickContactBadge
+ android:id="@+id/photo"
+ android:layout_width="@dimen/search_row_height"
+ android:layout_height="@dimen/search_row_height"
+ android:padding="@dimen/search_photo_padding"
+ android:clickable="false"/>
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_toEndOf="@+id/photo"
+ android:layout_toStartOf="@+id/call_to_action"
+ android:layout_centerVertical="true">
+
+ <TextView
+ android:id="@+id/primary"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingStart="@dimen/search_text_padding_start"
+ android:gravity="center_vertical|start"
+ android:textSize="@dimen/new_search_text_size"
+ android:textColor="@color/dialer_primary_text_color"
+ android:maxLines="1"
+ android:ellipsize="end"
+ android:fontFamily="sans-serif"/>
+
+ <TextView
+ android:id="@+id/secondary"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingStart="@dimen/search_text_padding_start"
+ android:gravity="center_vertical|start"
+ android:textSize="@dimen/new_search_text_size"
+ android:textColor="@color/dialer_primary_text_color"
+ android:maxLines="1"
+ android:ellipsize="end"
+ android:fontFamily="sans-serif"/>
+ </LinearLayout>
+
+ <ImageView
+ android:id="@+id/call_to_action"
+ android:layout_width="@dimen/search_row_height"
+ android:layout_height="@dimen/search_row_height"
+ android:layout_alignParentEnd="true"
+ android:padding="@dimen/call_to_action_padding"
+ android:tint="@color/secondary_text_color"
+ android:visibility="gone"
+ android:scaleType="center"/>
+</RelativeLayout> \ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/res/values/dimens.xml b/java/com/android/dialer/searchfragment/res/values/dimens.xml
new file mode 100644
index 000000000..d5459ddb3
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/res/values/dimens.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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>
+ <dimen name="search_row_height">56dp</dimen>
+ <dimen name="search_photo_padding">8dp</dimen>
+ <dimen name="call_to_action_padding">8dp</dimen>
+ <dimen name="search_text_padding_start">16dp</dimen>
+ <dimen name="new_search_text_size">16sp</dimen>
+</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/shortcuts/AndroidManifest.xml b/java/com/android/dialer/shortcuts/AndroidManifest.xml
index 71320517d..15f77944e 100644
--- a/java/com/android/dialer/shortcuts/AndroidManifest.xml
+++ b/java/com/android/dialer/shortcuts/AndroidManifest.xml
@@ -20,7 +20,7 @@
android:minSdkVersion="23"
android:targetSdkVersion="26"/>
- <application>
+ <application android:theme="@style/Theme.AppCompat">
<service
android:exported="false"
diff --git a/java/com/android/dialer/telecom/TelecomUtil.java b/java/com/android/dialer/telecom/TelecomUtil.java
index 87ddda58b..82b43835f 100644
--- a/java/com/android/dialer/telecom/TelecomUtil.java
+++ b/java/com/android/dialer/telecom/TelecomUtil.java
@@ -38,12 +38,17 @@ import java.util.List;
* perform the required check and return the fallback default if the permission is missing,
* otherwise return the value from TelecomManager.
*/
-public class TelecomUtil {
+public abstract class TelecomUtil {
private static final String TAG = "TelecomUtil";
private static boolean sWarningLogged = false;
- private static Boolean isDefaultDialerForTesting;
- private static Boolean hasPermissionForTesting;
+
+ private static TelecomUtilImpl instance = new TelecomUtilImpl();
+
+ @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+ public static void setInstanceForTesting(TelecomUtilImpl instanceForTesting) {
+ instance = instanceForTesting;
+ }
public static void showInCallScreen(Context context, boolean showDialpad) {
if (hasReadPhoneStatePermission(context)) {
@@ -125,10 +130,7 @@ public class TelecomUtil {
}
public static boolean isInCall(Context context) {
- if (hasReadPhoneStatePermission(context)) {
- return getTelecomManager(context).isInCall();
- }
- return false;
+ return instance.isInCall(context);
}
public static boolean isVoicemailNumber(
@@ -189,43 +191,47 @@ public class TelecomUtil {
}
private static boolean hasPermission(Context context, String permission) {
- if (hasPermissionForTesting != null) {
- return hasPermissionForTesting;
- }
- return ContextCompat.checkSelfPermission(context, permission)
- == PackageManager.PERMISSION_GRANTED;
- }
-
- public static boolean isDefaultDialer(Context context) {
- if (isDefaultDialerForTesting != null) {
- return isDefaultDialerForTesting;
- }
- final boolean result =
- TextUtils.equals(
- context.getPackageName(), getTelecomManager(context).getDefaultDialerPackage());
- if (result) {
- sWarningLogged = false;
- } else {
- if (!sWarningLogged) {
- // Log only once to prevent spam.
- LogUtil.w(TAG, "Dialer is not currently set to be default dialer");
- sWarningLogged = true;
- }
- }
- return result;
+ return instance.hasPermission(context, permission);
}
private static TelecomManager getTelecomManager(Context context) {
return (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
}
- @VisibleForTesting(otherwise = VisibleForTesting.NONE)
- public static void setIsDefaultDialerForTesting(Boolean defaultDialer) {
- isDefaultDialerForTesting = defaultDialer;
+ public static boolean isDefaultDialer(Context context) {
+ return instance.isDefaultDialer(context);
}
- @VisibleForTesting(otherwise = VisibleForTesting.NONE)
- public static void setHasPermissionForTesting(Boolean hasPermission) {
- hasPermissionForTesting = hasPermission;
+ /** Contains an implementation for {@link TelecomUtil} methods */
+ @VisibleForTesting()
+ public static class TelecomUtilImpl {
+
+ public boolean isInCall(Context context) {
+ if (hasReadPhoneStatePermission(context)) {
+ return getTelecomManager(context).isInCall();
+ }
+ return false;
+ }
+
+ public boolean hasPermission(Context context, String permission) {
+ return ContextCompat.checkSelfPermission(context, permission)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+
+ public boolean isDefaultDialer(Context context) {
+ final boolean result =
+ TextUtils.equals(
+ context.getPackageName(), getTelecomManager(context).getDefaultDialerPackage());
+ if (result) {
+ sWarningLogged = false;
+ } else {
+ if (!sWarningLogged) {
+ // Log only once to prevent spam.
+ LogUtil.w(TAG, "Dialer is not currently set to be default dialer");
+ sWarningLogged = true;
+ }
+ }
+ return result;
+ }
}
}
diff --git a/java/com/android/dialer/theme/res/values-af/strings.xml b/java/com/android/dialer/theme/res/values-af/strings.xml
index f263a8186..17e6ceac4 100644
--- a/java/com/android/dialer/theme/res/values-af/strings.xml
+++ b/java/com/android/dialer/theme/res/values-af/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefoonhokkie"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Foon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratoestemming is geaktiveer"</string>
+ <string name="video_call" msgid="8914878391104612532">"Video-oproep"</string>
<string name="call" msgid="3699617769606114168">"Bel"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-am/strings.xml b/java/com/android/dialer/theme/res/values-am/strings.xml
index 4f3624428..5b0b2fd1f 100644
--- a/java/com/android/dialer/theme/res/values-am/strings.xml
+++ b/java/com/android/dialer/theme/res/values-am/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"የሕዝብ ስልክ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ስልክ"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"የካሜራ ፈቃድ ነቅቷል"</string>
+ <string name="video_call" msgid="8914878391104612532">"የቪዲዮ ጥሪ"</string>
<string name="call" msgid="3699617769606114168">"ደውል"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ar/strings.xml b/java/com/android/dialer/theme/res/values-ar/strings.xml
index 951bde2c0..ea3468e61 100644
--- a/java/com/android/dialer/theme/res/values-ar/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ar/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"هاتف يعمل بالعملة"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"الهاتف"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"تم تمكين إذن الكاميرا"</string>
+ <string name="video_call" msgid="8914878391104612532">"مكالمة فيديو"</string>
<string name="call" msgid="3699617769606114168">"اتصال"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-az/strings.xml b/java/com/android/dialer/theme/res/values-az/strings.xml
index 08eaf337b..91ead1b68 100644
--- a/java/com/android/dialer/theme/res/values-az/strings.xml
+++ b/java/com/android/dialer/theme/res/values-az/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Taksofon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kamera icazəsi aktiv edildi"</string>
+ <string name="video_call" msgid="8914878391104612532">"Video zəng"</string>
<string name="call" msgid="3699617769606114168">"Zəng edin"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
index 01cdb4722..a1e59654f 100644
--- a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonska govornica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Omogućena je dozvola za kameru"</string>
+ <string name="video_call" msgid="8914878391104612532">"Uputi video poziv"</string>
<string name="call" msgid="3699617769606114168">"Pozovi"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-be/strings.xml b/java/com/android/dialer/theme/res/values-be/strings.xml
index 49be019bf..881aa7f20 100644
--- a/java/com/android/dialer/theme/res/values-be/strings.xml
+++ b/java/com/android/dialer/theme/res/values-be/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Таксафон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Тэлефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Уключаны дазвол на выкарыстанне камеры"</string>
+ <string name="video_call" msgid="8914878391104612532">"Відэавыклік"</string>
<string name="call" msgid="3699617769606114168">"Выклікаць"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-bg/strings.xml b/java/com/android/dialer/theme/res/values-bg/strings.xml
index 87af9f0fd..debc23803 100644
--- a/java/com/android/dialer/theme/res/values-bg/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bg/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Обществен телефон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Активирано бе разрешението за камерата"</string>
+ <string name="video_call" msgid="8914878391104612532">"Видеообаждане"</string>
<string name="call" msgid="3699617769606114168">"Обаждане"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-bn/strings.xml b/java/com/android/dialer/theme/res/values-bn/strings.xml
index ab1c65b5d..806ee8e02 100644
--- a/java/com/android/dialer/theme/res/values-bn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bn/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"পে ফোন"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ফোন"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ক্যামেরার অনুমতি সক্ষম করা হয়েছে"</string>
+ <string name="video_call" msgid="8914878391104612532">"ভিডিও কল"</string>
<string name="call" msgid="3699617769606114168">"কল করুন"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-bs/strings.xml b/java/com/android/dialer/theme/res/values-bs/strings.xml
index 01cdb4722..bed71a230 100644
--- a/java/com/android/dialer/theme/res/values-bs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bs/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonska govornica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Dozvola za kameru je omogućena"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videopoziv"</string>
<string name="call" msgid="3699617769606114168">"Pozovi"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ca/strings.xml b/java/com/android/dialer/theme/res/values-ca/strings.xml
index 1e21a1f76..5140ca574 100644
--- a/java/com/android/dialer/theme/res/values-ca/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ca/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telèfon públic"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telèfon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"S\'ha activat el permís d\'accés a la càmera"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videotrucada"</string>
<string name="call" msgid="3699617769606114168">"Truca"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-cs/strings.xml b/java/com/android/dialer/theme/res/values-cs/strings.xml
index ca7bad9bb..a951fe7a8 100644
--- a/java/com/android/dialer/theme/res/values-cs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-cs/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonní automat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Byl povolen přístup k fotoaparátu"</string>
+ <string name="video_call" msgid="8914878391104612532">"Zahájit videohovor"</string>
<string name="call" msgid="3699617769606114168">"Volat"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-da/strings.xml b/java/com/android/dialer/theme/res/values-da/strings.xml
index c606b281e..54f185041 100644
--- a/java/com/android/dialer/theme/res/values-da/strings.xml
+++ b/java/com/android/dialer/theme/res/values-da/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Mønttelefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Opkald"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratilladelse er aktiveret"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videoopkald"</string>
<string name="call" msgid="3699617769606114168">"Ring op"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-de/strings.xml b/java/com/android/dialer/theme/res/values-de/strings.xml
index d214287c2..0c97581cb 100644
--- a/java/com/android/dialer/theme/res/values-de/strings.xml
+++ b/java/com/android/dialer/theme/res/values-de/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Münztelefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Berechtigung für Kamera aktiviert"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videoanruf"</string>
<string name="call" msgid="3699617769606114168">"Anrufen"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-el/strings.xml b/java/com/android/dialer/theme/res/values-el/strings.xml
index abe1d3f18..1c34a69c7 100644
--- a/java/com/android/dialer/theme/res/values-el/strings.xml
+++ b/java/com/android/dialer/theme/res/values-el/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Τηλέφωνο με χρέωση"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Τηλέφωνο"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Το δικαίωμα χρήσης της κάμερας έχει ενεργοποιηθεί"</string>
+ <string name="video_call" msgid="8914878391104612532">"Βιντεοκλήση"</string>
<string name="call" msgid="3699617769606114168">"Κλήση"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
index b086b4ca5..136d7df33 100644
--- a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Camera permission enabled"</string>
+ <string name="video_call" msgid="8914878391104612532">"Video call"</string>
<string name="call" msgid="3699617769606114168">"Call"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
index b086b4ca5..136d7df33 100644
--- a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Camera permission enabled"</string>
+ <string name="video_call" msgid="8914878391104612532">"Video call"</string>
<string name="call" msgid="3699617769606114168">"Call"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
index b086b4ca5..136d7df33 100644
--- a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Camera permission enabled"</string>
+ <string name="video_call" msgid="8914878391104612532">"Video call"</string>
<string name="call" msgid="3699617769606114168">"Call"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
index aee2d0a9d..90837b76a 100644
--- a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Se activó el permiso de la cámara"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videollamada"</string>
<string name="call" msgid="3699617769606114168">"Llamar"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-es/strings.xml b/java/com/android/dialer/theme/res/values-es/strings.xml
index 343ac2158..c2d3ee3d4 100644
--- a/java/com/android/dialer/theme/res/values-es/strings.xml
+++ b/java/com/android/dialer/theme/res/values-es/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Se ha habilitado el acceso a la cámara"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videollamada"</string>
<string name="call" msgid="3699617769606114168">"Llamar"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-et/strings.xml b/java/com/android/dialer/theme/res/values-et/strings.xml
index 5b1e6c044..269fa6403 100644
--- a/java/com/android/dialer/theme/res/values-et/strings.xml
+++ b/java/com/android/dialer/theme/res/values-et/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefoniautomaat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kaameraluba on antud"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videokõne"</string>
<string name="call" msgid="3699617769606114168">"Helista"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-eu/strings.xml b/java/com/android/dialer/theme/res/values-eu/strings.xml
index dbb4f703c..14345f05f 100644
--- a/java/com/android/dialer/theme/res/values-eu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-eu/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefono publikoa"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefonoa"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kamera atzitzeko baimena eman da"</string>
+ <string name="video_call" msgid="8914878391104612532">"Bideo-deia"</string>
<string name="call" msgid="3699617769606114168">"Deitu"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-fa/strings.xml b/java/com/android/dialer/theme/res/values-fa/strings.xml
index 99bed5f22..f751f3404 100644
--- a/java/com/android/dialer/theme/res/values-fa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fa/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="ID">%d</xliff:g> <xliff:g id="UNKNOWN">%s</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"تلفن عمومی"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"تلفن"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"مجوز دوربین فعال شد"</string>
+ <string name="video_call" msgid="8914878391104612532">"تماس ویدیویی"</string>
<string name="call" msgid="3699617769606114168">"تماس"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-fi/strings.xml b/java/com/android/dialer/theme/res/values-fi/strings.xml
index a180be565..0c09d7f43 100644
--- a/java/com/android/dialer/theme/res/values-fi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fi/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Maksupuhelin"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Puhelin"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameran käyttöoikeus myönnettiin"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videopuhelu"</string>
<string name="call" msgid="3699617769606114168">"Soita"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
index 18a70bbe8..7d901ca39 100644
--- a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Cabine téléphonique"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Téléphone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Autorisation d\'accès à l\'appareil photo activée"</string>
+ <string name="video_call" msgid="8914878391104612532">"Appel vidéo"</string>
<string name="call" msgid="3699617769606114168">"Appeler"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-fr/strings.xml b/java/com/android/dialer/theme/res/values-fr/strings.xml
index 18a70bbe8..1c30ef1e7 100644
--- a/java/com/android/dialer/theme/res/values-fr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fr/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Cabine téléphonique"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Téléphone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Autorisation d\'accès à l\'appareil photo accordée"</string>
+ <string name="video_call" msgid="8914878391104612532">"Appel vidéo"</string>
<string name="call" msgid="3699617769606114168">"Appeler"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-gl/strings.xml b/java/com/android/dialer/theme/res/values-gl/strings.xml
index fbbad6c07..083d395ad 100644
--- a/java/com/android/dialer/theme/res/values-gl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gl/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Activouse o permiso de acceso á cámara"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
<string name="call" msgid="3699617769606114168">"Chamar"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-gu/strings.xml b/java/com/android/dialer/theme/res/values-gu/strings.xml
index 9b38dcd3f..4baba6971 100644
--- a/java/com/android/dialer/theme/res/values-gu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gu/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"પેફોન"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ફોન"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"કૅમેરાની પરવાનગી સક્ષમ કરી"</string>
+ <string name="video_call" msgid="8914878391104612532">"વિડિઓ કૉલ"</string>
<string name="call" msgid="3699617769606114168">"કૉલ કરો"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-hi/strings.xml b/java/com/android/dialer/theme/res/values-hi/strings.xml
index ee360b404..758be5d22 100644
--- a/java/com/android/dialer/theme/res/values-hi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hi/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"पे-फ़ोन"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"फ़ोन"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"कैमरे की अनुमति सक्षम की गई"</string>
+ <string name="video_call" msgid="8914878391104612532">"वीडियो कॉल"</string>
<string name="call" msgid="3699617769606114168">"कॉल करें"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-hr/strings.xml b/java/com/android/dialer/theme/res/values-hr/strings.xml
index 92e19567d..89a5aeec2 100644
--- a/java/com/android/dialer/theme/res/values-hr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hr/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Javna telefonska govornica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Omogućen je pristup kameri"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videopoziv"</string>
<string name="call" msgid="3699617769606114168">"Pozovi"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-hu/strings.xml b/java/com/android/dialer/theme/res/values-hu/strings.xml
index dfcc876e4..30051d430 100644
--- a/java/com/android/dialer/theme/res/values-hu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hu/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Nyilvános telefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameraengedély megadva"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videohívás"</string>
<string name="call" msgid="3699617769606114168">"Hívás"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-hy/strings.xml b/java/com/android/dialer/theme/res/values-hy/strings.xml
index 3b4e862b3..6577dab16 100644
--- a/java/com/android/dialer/theme/res/values-hy/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hy/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Բջջային տերմինալ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Հեռախոս"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Տեսախցիկից օգտվելու թույլտվությունը տրամադրված է"</string>
+ <string name="video_call" msgid="8914878391104612532">"Տեսազանգ"</string>
<string name="call" msgid="3699617769606114168">"Զանգել"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-in/strings.xml b/java/com/android/dialer/theme/res/values-in/strings.xml
index eda15a299..d2d72b832 100644
--- a/java/com/android/dialer/theme/res/values-in/strings.xml
+++ b/java/com/android/dialer/theme/res/values-in/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telepon Umum"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telepon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Izin kamera diaktifkan"</string>
+ <string name="video_call" msgid="8914878391104612532">"Video call"</string>
<string name="call" msgid="3699617769606114168">"Telepon"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-is/strings.xml b/java/com/android/dialer/theme/res/values-is/strings.xml
index cda7fc8fe..ff3faf836 100644
--- a/java/com/android/dialer/theme/res/values-is/strings.xml
+++ b/java/com/android/dialer/theme/res/values-is/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Símasjálfsali"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Sími"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Myndavélarheimild virk"</string>
+ <string name="video_call" msgid="8914878391104612532">"Hringja myndsímtal"</string>
<string name="call" msgid="3699617769606114168">"Hringja"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-it/strings.xml b/java/com/android/dialer/theme/res/values-it/strings.xml
index fa2caa6bb..4b26288ac 100644
--- a/java/com/android/dialer/theme/res/values-it/strings.xml
+++ b/java/com/android/dialer/theme/res/values-it/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Cabina telefonica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefono"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Autorizzazioni della fotocamera attivate"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videochiamata"</string>
<string name="call" msgid="3699617769606114168">"Chiama"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-iw/strings.xml b/java/com/android/dialer/theme/res/values-iw/strings.xml
index 18d87eaf7..09abf2ed1 100644
--- a/java/com/android/dialer/theme/res/values-iw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-iw/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"טלפון ציבורי"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"טלפון"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"הרשאת הגישה למצלמה הופעלה"</string>
+ <string name="video_call" msgid="8914878391104612532">"שיחת וידאו"</string>
<string name="call" msgid="3699617769606114168">"התקשר"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ja/strings.xml b/java/com/android/dialer/theme/res/values-ja/strings.xml
index 39215598c..551d67983 100644
--- a/java/com/android/dialer/theme/res/values-ja/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ja/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g>(<xliff:g id="ID">%d</xliff:g>)"</string>
<string name="payphone" msgid="7106361320283710387">"公衆電話"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"カメラへのアクセスを自動で許可しました"</string>
+ <string name="video_call" msgid="8914878391104612532">"ビデオハングアウト"</string>
<string name="call" msgid="3699617769606114168">"発信"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ka/strings.xml b/java/com/android/dialer/theme/res/values-ka/strings.xml
index 18e7cb34d..ab225954e 100644
--- a/java/com/android/dialer/theme/res/values-ka/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ka/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"გადახდის ტელეფონი"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ტელეფონი"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"კამერაზე წვდომის ნებართვა ჩართულია"</string>
+ <string name="video_call" msgid="8914878391104612532">"ვიდეოზარი"</string>
<string name="call" msgid="3699617769606114168">"დარეკვა"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-kk/strings.xml b/java/com/android/dialer/theme/res/values-kk/strings.xml
index f9c62d32e..d3a1b7bb9 100644
--- a/java/com/android/dialer/theme/res/values-kk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kk/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Автомат-телефон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Камера рұқсаты қосылды"</string>
+ <string name="video_call" msgid="8914878391104612532">"Бейне қоңырау"</string>
<string name="call" msgid="3699617769606114168">"Қоңырау шалу"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-km/strings.xml b/java/com/android/dialer/theme/res/values-km/strings.xml
index 7e375cf99..900f1d690 100644
--- a/java/com/android/dialer/theme/res/values-km/strings.xml
+++ b/java/com/android/dialer/theme/res/values-km/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"ទូរស័ព្ទសាធារណៈ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ទូរស័ព្ទ"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"បានបើក​ការអនុញ្ញាត​កាមេរ៉ា"</string>
+ <string name="video_call" msgid="8914878391104612532">"ការ​ហៅវីដេអូ"</string>
<string name="call" msgid="3699617769606114168">"ហៅ​ទូរសព្ទ"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-kn/strings.xml b/java/com/android/dialer/theme/res/values-kn/strings.xml
index 718fea0d4..ab9f816db 100644
--- a/java/com/android/dialer/theme/res/values-kn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kn/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"ಪೇಫೋನ್"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ಫೋನ್"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ಕ್ಯಾಮರಾ ಅನುಮತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="video_call" msgid="8914878391104612532">"ವೀಡಿಯೊ ಕರೆ"</string>
<string name="call" msgid="3699617769606114168">"ಕರೆಮಾಡಿ"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ko/strings.xml b/java/com/android/dialer/theme/res/values-ko/strings.xml
index 29f608c6e..b5ac55695 100644
--- a/java/com/android/dialer/theme/res/values-ko/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ko/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"공중전화"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"휴대전화"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"카메라 권한 사용 가능"</string>
+ <string name="video_call" msgid="8914878391104612532">"화상 통화"</string>
<string name="call" msgid="3699617769606114168">"전화"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ky/strings.xml b/java/com/android/dialer/theme/res/values-ky/strings.xml
index 905b8c5ff..0a9bec294 100644
--- a/java/com/android/dialer/theme/res/values-ky/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ky/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Таксофон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Камеранын уруксаты иштетилди"</string>
+ <string name="video_call" msgid="8914878391104612532">"Видео чалуу"</string>
<string name="call" msgid="3699617769606114168">"Чалуу"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-lo/strings.xml b/java/com/android/dialer/theme/res/values-lo/strings.xml
index 6826a753f..d33d43e5b 100644
--- a/java/com/android/dialer/theme/res/values-lo/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lo/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"ຕູ້​ໂທ​ລະ​ສັບ​ສາ​ທາ​ລະ​ນະ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ໂທລະສັບ"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ເປີດໃຊ້ສິດອະນຸຍາດກ້ອງຖ່າຍຮູບແລ້ວ"</string>
+ <string name="video_call" msgid="8914878391104612532">"ໂທວິດີໂອ"</string>
<string name="call" msgid="3699617769606114168">"ໂທ"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-lt/strings.xml b/java/com/android/dialer/theme/res/values-lt/strings.xml
index 43469a1fd..fdf31e227 100644
--- a/java/com/android/dialer/theme/res/values-lt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lt/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="ID">%d</xliff:g> <xliff:g id="UNKNOWN">%s</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Taksofonas"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefonas"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Fotoaparato leidimas įgalintas"</string>
+ <string name="video_call" msgid="8914878391104612532">"Vaizdo skambutis"</string>
<string name="call" msgid="3699617769606114168">"Skambinti"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-lv/strings.xml b/java/com/android/dialer/theme/res/values-lv/strings.xml
index f9a6deca8..031c5bdea 100644
--- a/java/com/android/dialer/theme/res/values-lv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lv/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Maksas tālrunis"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Tālrunis"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameras atļauja iespējota"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videozvans"</string>
<string name="call" msgid="3699617769606114168">"Zvanīt"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-mk/strings.xml b/java/com/android/dialer/theme/res/values-mk/strings.xml
index 1328edbb2..d89d12e90 100644
--- a/java/com/android/dialer/theme/res/values-mk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mk/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Говорница"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Дозволата за камера е овозможена"</string>
+ <string name="video_call" msgid="8914878391104612532">"Воспоставете видеоповик"</string>
<string name="call" msgid="3699617769606114168">"Повикајте"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ml/strings.xml b/java/com/android/dialer/theme/res/values-ml/strings.xml
index 03f9533ff..f02ceeb06 100644
--- a/java/com/android/dialer/theme/res/values-ml/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ml/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"പണം നൽകി ഉപയോഗിക്കുന്ന ഫോൺ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ഫോണ്‍"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ക്യാമറ അനുമതി നൽകി"</string>
+ <string name="video_call" msgid="8914878391104612532">"വീഡിയോ കോള്‍"</string>
<string name="call" msgid="3699617769606114168">"വിളിക്കുക"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-mn/strings.xml b/java/com/android/dialer/theme/res/values-mn/strings.xml
index c47f08324..7a07e5d4d 100644
--- a/java/com/android/dialer/theme/res/values-mn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mn/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Утас"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Камерын зөвшөөрөл идэвхжсэн"</string>
+ <string name="video_call" msgid="8914878391104612532">"Видео дуудлага"</string>
<string name="call" msgid="3699617769606114168">"Залгах"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-mr/strings.xml b/java/com/android/dialer/theme/res/values-mr/strings.xml
index 41a9c96e0..eeb9afa1e 100644
--- a/java/com/android/dialer/theme/res/values-mr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mr/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"सार्वजनिक फोन"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"फोन"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"कॅमेरा परवानगी सक्षम केली"</string>
+ <string name="video_call" msgid="8914878391104612532">"व्हिडिओ कॉल"</string>
<string name="call" msgid="3699617769606114168">"कॉल करा"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ms/strings.xml b/java/com/android/dialer/theme/res/values-ms/strings.xml
index b28fe26ac..2e424fdf7 100644
--- a/java/com/android/dialer/theme/res/values-ms/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ms/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefon Awam"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kebenaran kamera didayakan"</string>
+ <string name="video_call" msgid="8914878391104612532">"Panggilan video"</string>
<string name="call" msgid="3699617769606114168">"Panggil"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-my/strings.xml b/java/com/android/dialer/theme/res/values-my/strings.xml
index eb21b6ef2..97b871b30 100644
--- a/java/com/android/dialer/theme/res/values-my/strings.xml
+++ b/java/com/android/dialer/theme/res/values-my/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"ငွေပေးရသည့်ဖုန်း"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ဖုန်း"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ကင်မရာအသုံးပြုခွင့် ဖွင့်ထားပါသည်"</string>
+ <string name="video_call" msgid="8914878391104612532">"ဗီဒီယိုခေါ်ဆိုမှု"</string>
<string name="call" msgid="3699617769606114168">"ခေါ်ဆိုရန်"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-nb/strings.xml b/java/com/android/dialer/theme/res/values-nb/strings.xml
index dcd9b17ad..7587b7e30 100644
--- a/java/com/android/dialer/theme/res/values-nb/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nb/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonkiosk"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratillatelsen er aktivert"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videosamtale"</string>
<string name="call" msgid="3699617769606114168">"Ring"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ne/strings.xml b/java/com/android/dialer/theme/res/values-ne/strings.xml
index 383ac2c8d..af1ad5e24 100644
--- a/java/com/android/dialer/theme/res/values-ne/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ne/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"पेफोन"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"फोन"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"क्यामेरा सम्बन्धी अनुमतिहरूलाई सक्षम पारियो"</string>
+ <string name="video_call" msgid="8914878391104612532">"भिडियो कल"</string>
<string name="call" msgid="3699617769606114168">"कल गर्नुहोस्"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-nl/strings.xml b/java/com/android/dialer/theme/res/values-nl/strings.xml
index 96357081d..ab51c97ae 100644
--- a/java/com/android/dialer/theme/res/values-nl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nl/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefooncel"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefoon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Camerarechten ingeschakeld"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videogesprek"</string>
<string name="call" msgid="3699617769606114168">"Bellen"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-no/strings.xml b/java/com/android/dialer/theme/res/values-no/strings.xml
index dcd9b17ad..7587b7e30 100644
--- a/java/com/android/dialer/theme/res/values-no/strings.xml
+++ b/java/com/android/dialer/theme/res/values-no/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonkiosk"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratillatelsen er aktivert"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videosamtale"</string>
<string name="call" msgid="3699617769606114168">"Ring"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-pa/strings.xml b/java/com/android/dialer/theme/res/values-pa/strings.xml
index dc23b7a69..8784bcae1 100644
--- a/java/com/android/dialer/theme/res/values-pa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pa/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"ਪੇਫੋਨ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ਫੋਨ"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ਕੈਮਰਾ ਇਜਾਜ਼ਤ ਨੂੰ ਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ"</string>
+ <string name="video_call" msgid="8914878391104612532">"ਵੀਡੀਓ ਕਾਲ"</string>
<string name="call" msgid="3699617769606114168">"ਕਾਲ ਕਰੋ"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-pl/strings.xml b/java/com/android/dialer/theme/res/values-pl/strings.xml
index 1ebaad2cc..246261e97 100644
--- a/java/com/android/dialer/theme/res/values-pl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pl/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Automat telefoniczny"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Uprawnienia do korzystania z aparatu zostały włączone"</string>
+ <string name="video_call" msgid="8914878391104612532">"Rozmowa wideo"</string>
<string name="call" msgid="3699617769606114168">"Zadzwoń"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
index 6caf87cb8..c1356d9b3 100644
--- a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Permissão de câmera ativada"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
<string name="call" msgid="3699617769606114168">"Ligar"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
index ef7c7d6c6..2b46e44a1 100644
--- a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Autorização da câmara ativada"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
<string name="call" msgid="3699617769606114168">"Telefonar"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-pt/strings.xml b/java/com/android/dialer/theme/res/values-pt/strings.xml
index 6caf87cb8..c1356d9b3 100644
--- a/java/com/android/dialer/theme/res/values-pt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Permissão de câmera ativada"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
<string name="call" msgid="3699617769606114168">"Ligar"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ro/strings.xml b/java/com/android/dialer/theme/res/values-ro/strings.xml
index 4d0c09baf..8978e9240 100644
--- a/java/com/android/dialer/theme/res/values-ro/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ro/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefon public"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Permisiunea pentru cameră a fost activată."</string>
+ <string name="video_call" msgid="8914878391104612532">"Apel video"</string>
<string name="call" msgid="3699617769606114168">"Apelați"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ru/strings.xml b/java/com/android/dialer/theme/res/values-ru/strings.xml
index aeab13624..a155052be 100644
--- a/java/com/android/dialer/theme/res/values-ru/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ru/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Телефон-автомат"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Доступ к камере разрешен"</string>
+ <string name="video_call" msgid="8914878391104612532">"Видеовызов"</string>
<string name="call" msgid="3699617769606114168">"Позвонить"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-si/strings.xml b/java/com/android/dialer/theme/res/values-si/strings.xml
index ba3bb0577..424a11255 100644
--- a/java/com/android/dialer/theme/res/values-si/strings.xml
+++ b/java/com/android/dialer/theme/res/values-si/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"පේෆෝනය"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"දුරකථනය"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"කැමරා අවසර සබල කර ඇත"</string>
+ <string name="video_call" msgid="8914878391104612532">"වීඩියෝ ඇමතුම"</string>
<string name="call" msgid="3699617769606114168">"ඇමතුම"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sk/strings.xml b/java/com/android/dialer/theme/res/values-sk/strings.xml
index 6863463ae..411b85edc 100644
--- a/java/com/android/dialer/theme/res/values-sk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sk/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefónny automat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefón"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Povolenie pre fotoaparát je aktivované"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videohovor"</string>
<string name="call" msgid="3699617769606114168">"Volať"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sl/strings.xml b/java/com/android/dialer/theme/res/values-sl/strings.xml
index 1b1776abc..85a3e2b8e 100644
--- a/java/com/android/dialer/theme/res/values-sl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sl/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonska govorilnica"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Dovoljenje za dostop do fotoaparata je omogočeno"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videoklic"</string>
<string name="call" msgid="3699617769606114168">"Pokliči"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sq/strings.xml b/java/com/android/dialer/theme/res/values-sq/strings.xml
index 0d7084af6..5cbd587d3 100644
--- a/java/com/android/dialer/theme/res/values-sq/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sq/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefon me pagesë"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefoni"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Leja e kamerës është aktivizuar"</string>
+ <string name="video_call" msgid="8914878391104612532">"Telefonatë me video"</string>
<string name="call" msgid="3699617769606114168">"Telefono"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sr/strings.xml b/java/com/android/dialer/theme/res/values-sr/strings.xml
index a744e9530..310da735d 100644
--- a/java/com/android/dialer/theme/res/values-sr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sr/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Телефонска говорница"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Омогућена је дозвола за камеру"</string>
+ <string name="video_call" msgid="8914878391104612532">"Упути видео позив"</string>
<string name="call" msgid="3699617769606114168">"Позови"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sv/strings.xml b/java/com/android/dialer/theme/res/values-sv/strings.xml
index f409807ef..af8e5f7b1 100644
--- a/java/com/android/dialer/theme/res/values-sv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sv/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Telefonautomat"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kamerabehörighet har aktiverats"</string>
+ <string name="video_call" msgid="8914878391104612532">"Videosamtal"</string>
<string name="call" msgid="3699617769606114168">"Ring"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-sw/strings.xml b/java/com/android/dialer/theme/res/values-sw/strings.xml
index a2f98888d..31615febb 100644
--- a/java/com/android/dialer/theme/res/values-sw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sw/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Simu ya kulipia"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Simu"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Imewasha ruhusa ya kamera"</string>
+ <string name="video_call" msgid="8914878391104612532">"Simu ya video"</string>
<string name="call" msgid="3699617769606114168">"Piga simu"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ta/strings.xml b/java/com/android/dialer/theme/res/values-ta/strings.xml
index a4f55f5c7..ab15f0b0c 100644
--- a/java/com/android/dialer/theme/res/values-ta/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ta/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"கட்டணத் தொலைபேசி"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"மொபைல்"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"கேமராவிற்கான அனுமதி இயக்கப்பட்டது"</string>
+ <string name="video_call" msgid="8914878391104612532">"வீடியோ அழைப்பு"</string>
<string name="call" msgid="3699617769606114168">"அழை"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-te/strings.xml b/java/com/android/dialer/theme/res/values-te/strings.xml
index 59f00ca1f..4a6fca1fb 100644
--- a/java/com/android/dialer/theme/res/values-te/strings.xml
+++ b/java/com/android/dialer/theme/res/values-te/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"పే ఫోన్"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"ఫోన్"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"కెమెరా అనుమతిని ప్రారంభించాము"</string>
+ <string name="video_call" msgid="8914878391104612532">"వీడియో కాల్"</string>
<string name="call" msgid="3699617769606114168">"కాల్ చేయి"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-th/strings.xml b/java/com/android/dialer/theme/res/values-th/strings.xml
index 3870b4da6..51db053fa 100644
--- a/java/com/android/dialer/theme/res/values-th/strings.xml
+++ b/java/com/android/dialer/theme/res/values-th/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"โทรศัพท์สาธารณะ"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"โทรศัพท์"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"ให้สิทธิ์เข้าถึงกล้องถ่ายรูปแล้ว"</string>
+ <string name="video_call" msgid="8914878391104612532">"แฮงเอาท์วิดีโอ"</string>
<string name="call" msgid="3699617769606114168">"โทร"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-tl/strings.xml b/java/com/android/dialer/theme/res/values-tl/strings.xml
index 81692789f..97f69ec1c 100644
--- a/java/com/android/dialer/theme/res/values-tl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tl/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Payphone"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telepono"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Na-enable ang pahintulot sa camera"</string>
+ <string name="video_call" msgid="8914878391104612532">"Mag-video call"</string>
<string name="call" msgid="3699617769606114168">"Tawag"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-tr/strings.xml b/java/com/android/dialer/theme/res/values-tr/strings.xml
index c11cd1375..b38f0674d 100644
--- a/java/com/android/dialer/theme/res/values-tr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tr/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Ankesörlü telefon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kamera izni etkinleştirildi"</string>
+ <string name="video_call" msgid="8914878391104612532">"Görüntülü görüşme"</string>
<string name="call" msgid="3699617769606114168">"Telefon et"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-uk/strings.xml b/java/com/android/dialer/theme/res/values-uk/strings.xml
index c87fe89b7..f0702770a 100644
--- a/java/com/android/dialer/theme/res/values-uk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uk/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Таксофон"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Камері надано дозвіл"</string>
+ <string name="video_call" msgid="8914878391104612532">"Відеодзвінок"</string>
<string name="call" msgid="3699617769606114168">"Виклик"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-ur/strings.xml b/java/com/android/dialer/theme/res/values-ur/strings.xml
index abc0d6d6b..e9a4b44bb 100644
--- a/java/com/android/dialer/theme/res/values-ur/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ur/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"پے فون"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"فون"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"کیمرا کی اجازت فعال ہے"</string>
+ <string name="video_call" msgid="8914878391104612532">"ویڈیو کال"</string>
<string name="call" msgid="3699617769606114168">"کال کریں"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-uz/strings.xml b/java/com/android/dialer/theme/res/values-uz/strings.xml
index 2889f3f12..2bbaf2080 100644
--- a/java/com/android/dialer/theme/res/values-uz/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uz/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Taksofon"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Kameraga kirishga ruxsat berildi"</string>
+ <string name="video_call" msgid="8914878391104612532">"Video suhbat"</string>
<string name="call" msgid="3699617769606114168">"Chaqirish"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-vi/strings.xml b/java/com/android/dialer/theme/res/values-vi/strings.xml
index b014516be..fae318091 100644
--- a/java/com/android/dialer/theme/res/values-vi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-vi/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Điện thoại công cộng"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Điện thoại"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Đã bật quyền sử dụng máy ảnh"</string>
+ <string name="video_call" msgid="8914878391104612532">"Gọi điện video"</string>
<string name="call" msgid="3699617769606114168">"Gọi"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
index baff75258..2e6096296 100644
--- a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"公用电话"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"电话"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"已启用相机使用权限"</string>
+ <string name="video_call" msgid="8914878391104612532">"视频通话"</string>
<string name="call" msgid="3699617769606114168">"拨打电话"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
index 8b26663d1..7b08024ac 100644
--- a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"公共電話"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"已啟用相機權限"</string>
+ <string name="video_call" msgid="8914878391104612532">"視像通話"</string>
<string name="call" msgid="3699617769606114168">"通話"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
index 24a5c10d1..57d7fe2b1 100644
--- a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"公用電話"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"已啟用相機權限"</string>
+ <string name="video_call" msgid="8914878391104612532">"視訊通話"</string>
<string name="call" msgid="3699617769606114168">"撥號"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values-zu/strings.xml b/java/com/android/dialer/theme/res/values-zu/strings.xml
index 96cd79873..d0dd7288b 100644
--- a/java/com/android/dialer/theme/res/values-zu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zu/strings.xml
@@ -21,5 +21,7 @@
<string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
<string name="payphone" msgid="7106361320283710387">"Ucingo olufakwa imali"</string>
<string name="launcherActivityLabel" msgid="9034868428899993166">"Ifoni"</string>
+ <string name="camera_privacy_text" msgid="1318954032109938588">"Imvume yekhamera inikwe amandla"</string>
+ <string name="video_call" msgid="8914878391104612532">"Ikholi yevidiyo"</string>
<string name="call" msgid="3699617769606114168">"Shaya"</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values/strings.xml b/java/com/android/dialer/theme/res/values/strings.xml
index a14693f51..af61d3596 100644
--- a/java/com/android/dialer/theme/res/values/strings.xml
+++ b/java/com/android/dialer/theme/res/values/strings.xml
@@ -30,6 +30,12 @@
used in the Launcher icon. -->
<string name="launcherActivityLabel">Phone</string>
+ <!-- Text presented to the user explaining that we have enabled the camera permission automatically -->
+ <string name="camera_privacy_text">Camera permission enabled</string>
+
+ <!-- text on a button, Video call, as in to place a video call. -->
+ <string name="video_call">Video call</string>
+
<!-- Label shown on the 'positive' button for the dialog. Indicates that the call will proceed -->
<string name="call">Call</string>
</resources>
diff --git a/java/com/android/dialer/theme/res/values/themes.xml b/java/com/android/dialer/theme/res/values/themes.xml
index 0d0c45f90..124682692 100644
--- a/java/com/android/dialer/theme/res/values/themes.xml
+++ b/java/com/android/dialer/theme/res/values/themes.xml
@@ -1,4 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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>
<style name="DialerThemeBase" parent="@style/Theme.AppCompat.Light.DarkActionBar">
@@ -19,6 +34,20 @@
<item name="actionBarSize">@dimen/action_bar_height</item>
</style>
+ <!-- Should be kept in sync with the theme above (minus anything related to actionbars -->
+ <style name="DialerThemeBase.NoActionBar" parent="@style/Theme.AppCompat.Light.NoActionBar">
+ <item name="android:textColorPrimary">@color/dialer_primary_text_color</item>
+ <item name="android:textColorSecondary">@color/dialer_secondary_text_color</item>
+ <!-- This is used for title bar color in recents -->
+ <item name="android:colorPrimary">@color/titlebar_in_recents_background_color</item>
+ <item name="android:colorPrimaryDark">@color/dialer_theme_color_dark</item>
+ <item name="android:colorControlActivated">@color/dialer_theme_color</item>
+ <item name="android:colorButtonNormal">@color/dialer_theme_color</item>
+ <item name="android:colorAccent">@color/dialtacts_theme_color</item>
+ <item name="android:alertDialogTheme">@style/AlertDialogTheme</item>
+ <item name="android:textAppearanceButton">@style/DialerButtonTextStyle</item>
+ </style>
+
<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
@@ -26,4 +55,18 @@
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation</item>
</style>
+
+ <style name="PrimaryText">
+ <item name="android:textColor">#DE000000</item>
+ <item name="android:textSize">16sp</item>
+ <item name="android:ellipsize">end</item>
+ <item name="android:maxLines">1</item>
+ </style>
+
+ <style name="SecondaryText">
+ <item name="android:textColor">#8A000000</item>
+ <item name="android:textSize">14sp</item>
+ <item name="android:ellipsize">end</item>
+ <item name="android:maxLines">1</item>
+ </style>
</resources>
diff --git a/java/com/android/dialer/util/CallUtil.java b/java/com/android/dialer/util/CallUtil.java
index 81a4bb21e..b6ab3b30e 100644
--- a/java/com/android/dialer/util/CallUtil.java
+++ b/java/com/android/dialer/util/CallUtil.java
@@ -21,6 +21,7 @@ import android.net.Uri;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
+import com.android.dialer.common.LogUtil;
import com.android.dialer.compat.CompatUtils;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import java.util.List;
@@ -40,6 +41,9 @@ public class CallUtil {
*/
public static final int VIDEO_CALLING_PRESENCE = 2;
+ private static boolean hasInitializedIsVideoEnabledState;
+ private static boolean cachedIsVideoEnabledState;
+
/** Return Uri with an appropriate scheme, accepting both SIP and usual phone call numbers. */
public static Uri getCallUri(String number) {
if (PhoneNumberHelper.isUriNumber(number)) {
@@ -102,7 +106,23 @@ public class CallUtil {
* false} otherwise.
*/
public static boolean isVideoEnabled(Context context) {
- return (getVideoCallingAvailability(context) & VIDEO_CALLING_ENABLED) != 0;
+ boolean isVideoEnabled = (getVideoCallingAvailability(context) & VIDEO_CALLING_ENABLED) != 0;
+
+ // Log everytime the video enabled state changes.
+ if (!hasInitializedIsVideoEnabledState) {
+ LogUtil.i("CallUtil.isVideoEnabled", "isVideoEnabled: " + isVideoEnabled);
+ hasInitializedIsVideoEnabledState = true;
+ cachedIsVideoEnabledState = isVideoEnabled;
+ } else if (cachedIsVideoEnabledState != isVideoEnabled) {
+ LogUtil.i(
+ "CallUtil.isVideoEnabled",
+ "isVideoEnabled changed from %b to %b",
+ cachedIsVideoEnabledState,
+ isVideoEnabled);
+ cachedIsVideoEnabledState = isVideoEnabled;
+ }
+
+ return true;
}
/**
diff --git a/java/com/android/dialer/util/PermissionsUtil.java b/java/com/android/dialer/util/PermissionsUtil.java
index 466e86204..72a59eaef 100644
--- a/java/com/android/dialer/util/PermissionsUtil.java
+++ b/java/com/android/dialer/util/PermissionsUtil.java
@@ -72,15 +72,15 @@ public class PermissionsUtil {
return hasPermission(context, permission.WRITE_VOICEMAIL);
}
- public static boolean hasAddVoicemailPermissions(Context context) {
- return hasPermission(context, permission.ADD_VOICEMAIL);
- }
-
public static boolean hasPermission(Context context, String permission) {
return ContextCompat.checkSelfPermission(context, permission)
== PackageManager.PERMISSION_GRANTED;
}
+ public static boolean hasAddVoicemailPermissions(Context context) {
+ return hasPermission(context, permission.ADD_VOICEMAIL);
+ }
+
/**
* Checks {@link android.content.SharedPreferences} if a permission has been requested before.
*
diff --git a/java/com/android/dialer/widget/DialerToolbar.java b/java/com/android/dialer/widget/DialerToolbar.java
index 9e1058383..fe0e86110 100644
--- a/java/com/android/dialer/widget/DialerToolbar.java
+++ b/java/com/android/dialer/widget/DialerToolbar.java
@@ -41,6 +41,11 @@ public class DialerToolbar extends Toolbar {
setNavigationIcon(R.drawable.quantum_ic_close_white_24);
setNavigationContentDescription(R.string.toolbar_close);
setNavigationOnClickListener(v -> ((Activity) context).finish());
+ setPaddingRelative(
+ getPaddingStart(),
+ getPaddingTop(),
+ getResources().getDimensionPixelSize(R.dimen.toolbar_end_padding),
+ getPaddingBottom());
}
@Override
diff --git a/java/com/android/dialer/app/widget/EmptyContentView.java b/java/com/android/dialer/widget/EmptyContentView.java
index cfc8665a2..a76ab98d6 100644
--- a/java/com/android/dialer/app/widget/EmptyContentView.java
+++ b/java/com/android/dialer/widget/EmptyContentView.java
@@ -14,16 +14,16 @@
* limitations under the License.
*/
-package com.android.dialer.app.widget;
+package com.android.dialer.widget;
import android.content.Context;
+import android.support.annotation.StringRes;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
-import com.android.dialer.app.R;
public class EmptyContentView extends LinearLayout implements View.OnClickListener {
@@ -40,6 +40,8 @@ public class EmptyContentView extends LinearLayout implements View.OnClickListen
private TextView mActionView;
private OnEmptyViewActionButtonClickedListener mOnActionButtonClickedListener;
+ private @StringRes int actionLabel;
+
public EmptyContentView(Context context) {
this(context, null);
}
@@ -58,9 +60,9 @@ public class EmptyContentView extends LinearLayout implements View.OnClickListen
// Don't let touches fall through the empty view.
setClickable(true);
- mImageView = (ImageView) findViewById(R.id.emptyListViewImage);
- mDescriptionView = (TextView) findViewById(R.id.emptyListViewMessage);
- mActionView = (TextView) findViewById(R.id.emptyListViewAction);
+ mImageView = (ImageView) findViewById(R.id.empty_list_view_image);
+ mDescriptionView = (TextView) findViewById(R.id.empty_list_view_message);
+ mActionView = (TextView) findViewById(R.id.empty_list_view_action);
mActionView.setOnClickListener(this);
}
@@ -84,7 +86,8 @@ public class EmptyContentView extends LinearLayout implements View.OnClickListen
}
}
- public void setActionLabel(int resourceId) {
+ public void setActionLabel(@StringRes int resourceId) {
+ actionLabel = resourceId;
if (resourceId == NO_LABEL) {
mActionView.setText(null);
mActionView.setVisibility(View.GONE);
@@ -94,6 +97,10 @@ public class EmptyContentView extends LinearLayout implements View.OnClickListen
}
}
+ public @StringRes int getActionLabel() {
+ return actionLabel;
+ }
+
public boolean isShowingContent() {
return mImageView.getVisibility() == View.VISIBLE
|| mDescriptionView.getVisibility() == View.VISIBLE
@@ -117,5 +124,4 @@ public class EmptyContentView extends LinearLayout implements View.OnClickListen
(LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.empty_content_view, this);
}
-
}
diff --git a/java/com/android/dialer/widget/MessageFragment.java b/java/com/android/dialer/widget/MessageFragment.java
index b136f47eb..615ad3b77 100644
--- a/java/com/android/dialer/widget/MessageFragment.java
+++ b/java/com/android/dialer/widget/MessageFragment.java
@@ -23,6 +23,7 @@ import android.text.Editable;
import android.text.InputFilter;
import android.text.TextUtils;
import android.text.TextWatcher;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
@@ -31,11 +32,13 @@ import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+import android.widget.TextView.OnEditorActionListener;
import com.android.dialer.common.Assert;
import com.android.dialer.common.FragmentUtils;
/** Fragment used to compose call with message fragment. */
-public class MessageFragment extends Fragment implements OnClickListener, TextWatcher {
+public class MessageFragment extends Fragment
+ implements OnClickListener, TextWatcher, OnEditorActionListener {
private static final String CHAR_LIMIT_KEY = "char_limit";
private static final String SHOW_SEND_ICON_KEY = "show_send_icon";
private static final String MESSAGE_LIST_KEY = "message_list";
@@ -69,7 +72,7 @@ public class MessageFragment extends Fragment implements OnClickListener, TextWa
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_message, container, false);
- sendMessage = (ImageView) view.findViewById(R.id.send_message);
+ sendMessage = view.findViewById(R.id.send_message);
sendMessageContainer = view.findViewById(R.id.count_and_send_container);
if (getArguments().getBoolean(SHOW_SEND_ICON_KEY, false)) {
sendMessage.setVisibility(View.VISIBLE);
@@ -77,18 +80,19 @@ public class MessageFragment extends Fragment implements OnClickListener, TextWa
sendMessageContainer.setOnClickListener(this);
}
- customMessage = (EditText) view.findViewById(R.id.custom_message);
+ customMessage = view.findViewById(R.id.custom_message);
customMessage.addTextChangedListener(this);
+ customMessage.setOnEditorActionListener(this);
charLimit = getArguments().getInt(CHAR_LIMIT_KEY, NO_CHAR_LIMIT);
if (charLimit != NO_CHAR_LIMIT) {
- remainingChar = (TextView) view.findViewById(R.id.remaining_characters);
+ remainingChar = view.findViewById(R.id.remaining_characters);
remainingChar.setVisibility(View.VISIBLE);
- remainingChar = (TextView) view.findViewById(R.id.remaining_characters);
- remainingChar.setText("" + charLimit);
+ remainingChar = view.findViewById(R.id.remaining_characters);
+ remainingChar.setText(Integer.toString(charLimit));
customMessage.setFilters(new InputFilter[] {new InputFilter.LengthFilter(charLimit)});
}
- LinearLayout messageContainer = (LinearLayout) view.findViewById(R.id.message_container);
+ LinearLayout messageContainer = view.findViewById(R.id.message_container);
for (String message : getArguments().getStringArray(MESSAGE_LIST_KEY)) {
TextView textView = (TextView) inflater.inflate(R.layout.selectable_text_view, null);
textView.setOnClickListener(this);
@@ -123,11 +127,20 @@ public class MessageFragment extends Fragment implements OnClickListener, TextWa
@Override
public void afterTextChanged(Editable s) {
if (charLimit != NO_CHAR_LIMIT) {
- remainingChar.setText("" + (charLimit - s.length()));
+ remainingChar.setText(Integer.toString(charLimit - s.length()));
}
getListener().onMessageFragmentAfterTextChange(s.toString());
}
+ @Override
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if (getMessage() == null) {
+ return false;
+ }
+ getListener().onMessageFragmentSendMessage(getMessage());
+ return true;
+ }
+
private Listener getListener() {
return FragmentUtils.getParentUnsafe(this, Listener.class);
}
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/empty_contacts.png b/java/com/android/dialer/widget/res/drawable-hdpi/empty_contacts.png
index d3c0378f5..d3c0378f5 100644
--- a/java/com/android/dialer/app/res/drawable-hdpi/empty_contacts.png
+++ b/java/com/android/dialer/widget/res/drawable-hdpi/empty_contacts.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/empty_contacts.png b/java/com/android/dialer/widget/res/drawable-mdpi/empty_contacts.png
index 2ce7eae37..2ce7eae37 100644
--- a/java/com/android/dialer/app/res/drawable-mdpi/empty_contacts.png
+++ b/java/com/android/dialer/widget/res/drawable-mdpi/empty_contacts.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/empty_contacts.png b/java/com/android/dialer/widget/res/drawable-xhdpi/empty_contacts.png
index 65b1de333..65b1de333 100644
--- a/java/com/android/dialer/app/res/drawable-xhdpi/empty_contacts.png
+++ b/java/com/android/dialer/widget/res/drawable-xhdpi/empty_contacts.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/empty_contacts.png b/java/com/android/dialer/widget/res/drawable-xxhdpi/empty_contacts.png
index 407d78c9c..407d78c9c 100644
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/empty_contacts.png
+++ b/java/com/android/dialer/widget/res/drawable-xxhdpi/empty_contacts.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/empty_contacts.png b/java/com/android/dialer/widget/res/drawable-xxxhdpi/empty_contacts.png
index 5893965e9..5893965e9 100644
--- a/java/com/android/dialer/app/res/drawable-xxxhdpi/empty_contacts.png
+++ b/java/com/android/dialer/widget/res/drawable-xxxhdpi/empty_contacts.png
Binary files differ
diff --git a/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml b/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml
index c4aac65fb..023b0ffe2 100644
--- a/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml
+++ b/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml
@@ -29,7 +29,9 @@
android:gravity="top"
android:textSize="@dimen/toolbar_title_text_size"
android:textColor="@color/background_dialer_white"
- android:fontFamily="sans-serif-medium"/>
+ android:fontFamily="sans-serif-medium"
+ android:maxLines="1"
+ android:ellipsize="end"/>
<TextView
android:id="@+id/subtitle"
@@ -37,6 +39,8 @@
android:layout_height="wrap_content"
android:textSize="@dimen/toolbar_subtitle_text_size"
android:textColor="@color/background_dialer_white"
- android:visibility="gone"/>
+ android:visibility="gone"
+ android:maxLines="1"
+ android:ellipsize="end"/>
</LinearLayout>
</merge> \ No newline at end of file
diff --git a/java/com/android/dialer/app/res/layout/empty_content_view.xml b/java/com/android/dialer/widget/res/layout/empty_content_view.xml
index 96a6a0262..177744385 100644
--- a/java/com/android/dialer/app/res/layout/empty_content_view.xml
+++ b/java/com/android/dialer/widget/res/layout/empty_content_view.xml
@@ -16,13 +16,13 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
- android:id="@+id/emptyListViewImage"
+ android:id="@+id/empty_list_view_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"/>
<TextView
- android:id="@+id/emptyListViewMessage"
+ android:id="@+id/empty_list_view_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
@@ -34,7 +34,7 @@
android:textSize="@dimen/empty_list_message_text_size"/>
<TextView
- android:id="@+id/emptyListViewAction"
+ android:id="@+id/empty_list_view_action"
style="@style/TextActionStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/java/com/android/dialer/widget/res/layout/fragment_message.xml b/java/com/android/dialer/widget/res/layout/fragment_message.xml
index e39e03aee..5b0bab536 100644
--- a/java/com/android/dialer/widget/res/layout/fragment_message.xml
+++ b/java/com/android/dialer/widget/res/layout/fragment_message.xml
@@ -48,7 +48,9 @@
android:textColorHint="@color/dialer_edit_text_hint_color"
android:background="@color/background_dialer_white"
android:textCursorDrawable="@drawable/searchedittext_custom_cursor"
- android:layout_toStartOf="@+id/count_and_send_container"/>
+ android:layout_toStartOf="@+id/count_and_send_container"
+ android:inputType="textShortMessage|textCapSentences"
+ android:imeOptions="actionSend"/>
<LinearLayout
android:id="@+id/count_and_send_container"
diff --git a/java/com/android/dialer/widget/res/values-af/strings.xml b/java/com/android/dialer/widget/res/values-af/strings.xml
index 7c5e83a93..122c84328 100644
--- a/java/com/android/dialer/widget/res/values-af/strings.xml
+++ b/java/com/android/dialer/widget/res/values-af/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Skryf \'n gepasmaakte boodskap"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Maak toe"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Jy het nog nie enige kontakte nie"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Voeg \'n kontak by"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Skakel aan"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Skakel die kontaktetoestemming aan om jou kontakte te sien."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Geen kontakte-program beskikbaar nie"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-am/strings.xml b/java/com/android/dialer/widget/res/values-am/strings.xml
index f11b46835..8a5353e18 100644
--- a/java/com/android/dialer/widget/res/values-am/strings.xml
+++ b/java/com/android/dialer/widget/res/values-am/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"ብጁ መልዕክት ይጻፉ"</string>
<string name="toolbar_close" msgid="1081308076149879833">"ዝጋ"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"ገና ምንም እውቂያዎች የሉዎትም"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"እውቂያ ያክሉ"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"አብራ"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"የእርስዎን እውቂያዎች ለማየት፣ የእውቂያዎች ፍቃዱን ያብሩ።"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"ምንም የእውቂያዎች መተግበሪያ አይገኝም"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ar/strings.xml b/java/com/android/dialer/widget/res/values-ar/strings.xml
index cb2e73378..7947903ce 100644
--- a/java/com/android/dialer/widget/res/values-ar/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ar/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"كتابة رسالة مخصصة"</string>
<string name="toolbar_close" msgid="1081308076149879833">"إغلاق"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"ليست لديك أية جهات اتصال حتى الآن"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"إضافة جهة اتصال"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"تشغيل"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"للاطلاع على جهات الاتصال، شغِّل إذن جهات الاتصال."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"لا يتوفر تطبيق لجهات الاتصال"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-az/strings.xml b/java/com/android/dialer/widget/res/values-az/strings.xml
index 3860a5846..7a1389a1a 100644
--- a/java/com/android/dialer/widget/res/values-az/strings.xml
+++ b/java/com/android/dialer/widget/res/values-az/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Fərdi mesaj yazın"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Bağlayın"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Hələ heç bir kontakt yoxdur"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Kontakt əlavə edin"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Aktiv edin"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Kontaktları görmək üçün Kontakt icazəsini aktiv edin."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Kontakt tətbiqi əlçatan deyil"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml
index daefd9020..46b29d27c 100644
--- a/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Napišite prilagođenu poruku"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Zatvorite"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Još uvek nemate nijedan kontakt"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Dodaj kontakt"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Uključi"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Da biste videli kontakte, uključite dozvolu za Kontakte."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nema dostupne aplikacije za kontakte"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-be/strings.xml b/java/com/android/dialer/widget/res/values-be/strings.xml
index 87861321f..38c8a80ca 100644
--- a/java/com/android/dialer/widget/res/values-be/strings.xml
+++ b/java/com/android/dialer/widget/res/values-be/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Напісаць карыстальніцкае паведамленне"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Закрыць"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"У вас пакуль няма ніякіх кантактаў"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Дадаць кантакт"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Уключыць"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Каб бачыць свае кантакты, уключыце дазвол для Кантактаў."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Праграмы для аперацый з кантактамі няма"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-bg/strings.xml b/java/com/android/dialer/widget/res/values-bg/strings.xml
index 35e980c5f..00ce56454 100644
--- a/java/com/android/dialer/widget/res/values-bg/strings.xml
+++ b/java/com/android/dialer/widget/res/values-bg/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Напишете свое съобщение"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Затваряне"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Още нямате контакти"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Добавяне на контакт"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Включване"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"За да видите контактите си, включете разрешението за Контакти."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Няма налично приложение за контакти"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-bn/strings.xml b/java/com/android/dialer/widget/res/values-bn/strings.xml
index 9e1707114..96b75db59 100644
--- a/java/com/android/dialer/widget/res/values-bn/strings.xml
+++ b/java/com/android/dialer/widget/res/values-bn/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"একটি কাস্টম বার্তা লিখুন"</string>
<string name="toolbar_close" msgid="1081308076149879833">"বন্ধ করুন"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"আপনার এখনও পর্যন্ত কোনো পরিচিতি নেই"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"একটি পরিচিতি যোগ করুন"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"চালু করুন"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"আপনার পরিচিতিগুলি দেখতে, পরিচিতিগুলির অনুমতি চালু করুন।"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"কোনো পরিচিতি অ্যাপ্লিকেশান উপলব্ধ নয়"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-bs/strings.xml b/java/com/android/dialer/widget/res/values-bs/strings.xml
index 0bc1a9c15..df24ee16b 100644
--- a/java/com/android/dialer/widget/res/values-bs/strings.xml
+++ b/java/com/android/dialer/widget/res/values-bs/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Napišite prilagođenu poruku"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Zatvori"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Još nemate nijedan kontakt"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Dodajte kontakt"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Uključi"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Da vidite kontakte, uključite dozvolu za Kontakte."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nije dostupna nijedna aplikacija za kontakte"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ca/strings.xml b/java/com/android/dialer/widget/res/values-ca/strings.xml
index 863930039..f7bbaa746 100644
--- a/java/com/android/dialer/widget/res/values-ca/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ca/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Escriu un miss. personalitzat"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Tanca"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Encara no tens cap contacte"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Afegeix un contacte"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Activa"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Activa el permís Contactes per veure els teus contactes."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"No hi ha cap contacte disponible"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-cs/strings.xml b/java/com/android/dialer/widget/res/values-cs/strings.xml
index 829aab8dd..19e5d17da 100644
--- a/java/com/android/dialer/widget/res/values-cs/strings.xml
+++ b/java/com/android/dialer/widget/res/values-cs/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Napište vlastní zprávu"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Zavřít"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Zatím nemáte žádné kontakty"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Přidat kontakt"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Povolit"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Pokud chcete zobrazit kontakty, povolte aplikaci přístup ke Kontaktům."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Není k dispozici žádná aplikace pro práci s kontakty"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-da/strings.xml b/java/com/android/dialer/widget/res/values-da/strings.xml
index 9381f36f5..67fb244c4 100644
--- a/java/com/android/dialer/widget/res/values-da/strings.xml
+++ b/java/com/android/dialer/widget/res/values-da/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Skriv en tilpasset besked"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Luk"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Du har endnu ikke nogen kontaktpersoner"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Tilføj en kontaktperson"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Slå til"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Slå tilladelsen Kontaktpersoner til for at se dine kontaktpersoner."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Der er ingen tilgængelig app til kontaktpersoner"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-de/strings.xml b/java/com/android/dialer/widget/res/values-de/strings.xml
index 949fe9e49..14146d65f 100644
--- a/java/com/android/dialer/widget/res/values-de/strings.xml
+++ b/java/com/android/dialer/widget/res/values-de/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Eigene Nachricht schreiben"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Schließen"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Du hast noch keine Kontakte"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Kontakt hinzufügen"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Aktivieren"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Aktiviere die Berechtigung \"Kontakte\", um deine Kontakte abzurufen."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Keine Kontakte-App verfügbar"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-el/strings.xml b/java/com/android/dialer/widget/res/values-el/strings.xml
index 21e049bf7..0db6b2694 100644
--- a/java/com/android/dialer/widget/res/values-el/strings.xml
+++ b/java/com/android/dialer/widget/res/values-el/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Γράψτε ένα προσαρμ. μήνυμα"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Κλείσιμο"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Δεν έχετε επαφές ακόμη"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Προσθήκη επαφής"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Ενεργοποίηση"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Για να δείτε τις επαφές σας, ενεργοποιήστε την άδεια πρόσβασης στις Επαφές."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Δεν υπάρχει διαθέσιμη εφαρμογή επαφών"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-en-rAU/strings.xml b/java/com/android/dialer/widget/res/values-en-rAU/strings.xml
index 7f22b46da..a87cd28ff 100644
--- a/java/com/android/dialer/widget/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/widget/res/values-en-rAU/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Write a custom message"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Close"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"You don\'t have any contacts yet"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Add a contact"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Turn on"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"To see your contacts, turn on the Contacts permission."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"No contacts app available"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-en-rGB/strings.xml b/java/com/android/dialer/widget/res/values-en-rGB/strings.xml
index 7f22b46da..a87cd28ff 100644
--- a/java/com/android/dialer/widget/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/widget/res/values-en-rGB/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Write a custom message"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Close"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"You don\'t have any contacts yet"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Add a contact"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Turn on"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"To see your contacts, turn on the Contacts permission."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"No contacts app available"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-en-rIN/strings.xml b/java/com/android/dialer/widget/res/values-en-rIN/strings.xml
index 7f22b46da..a87cd28ff 100644
--- a/java/com/android/dialer/widget/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/widget/res/values-en-rIN/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Write a custom message"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Close"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"You don\'t have any contacts yet"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Add a contact"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Turn on"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"To see your contacts, turn on the Contacts permission."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"No contacts app available"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-es-rUS/strings.xml b/java/com/android/dialer/widget/res/values-es-rUS/strings.xml
index c7fbdaa58..5ecc22b3d 100644
--- a/java/com/android/dialer/widget/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/widget/res/values-es-rUS/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Escribe tu propio mensaje"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Cerrar"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Aún no tienes contactos"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Agregar un contacto"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Activar"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Para ver los contactos, activa el permiso Contactos."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"No hay ninguna app de contactos disponible"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-es/strings.xml b/java/com/android/dialer/widget/res/values-es/strings.xml
index 507e8af0d..e561d06f7 100644
--- a/java/com/android/dialer/widget/res/values-es/strings.xml
+++ b/java/com/android/dialer/widget/res/values-es/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Mensaje personalizado"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Cerrar"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Aún no tienes contactos"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Añadir un contacto"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Activar"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Para ver tus contactos, activa el permiso de Contactos."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"No hay aplicaciones de contactos disponibles"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-et/strings.xml b/java/com/android/dialer/widget/res/values-et/strings.xml
index 71dab4276..054b42281 100644
--- a/java/com/android/dialer/widget/res/values-et/strings.xml
+++ b/java/com/android/dialer/widget/res/values-et/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Kirjutage kohandatud sõnum"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Sule"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Teil pole veel kontakte"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Kontakti lisamine"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Lülita sisse"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Kontaktide vaatamiseks lülitage sisse kontaktide luba."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Kontaktide rakendus pole saadaval"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-eu/strings.xml b/java/com/android/dialer/widget/res/values-eu/strings.xml
index b8e4085a0..7d191925e 100644
--- a/java/com/android/dialer/widget/res/values-eu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-eu/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Idatzi mezu bat"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Itxi"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Oraindik ez duzu kontakturik"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Gehitu kontaktu bat"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Aktibatu"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Kontaktuak ikusteko, aktibatu Kontaktuak atzitzeko baimena."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Ez dago kontaktu-aplikaziorik erabilgarri"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-fa/strings.xml b/java/com/android/dialer/widget/res/values-fa/strings.xml
index 0c3b1d4f5..5ed23131a 100644
--- a/java/com/android/dialer/widget/res/values-fa/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fa/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"پیام سفارشی بنویسید"</string>
<string name="toolbar_close" msgid="1081308076149879833">"بستن"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"هنوز هیچ مخاطبی ندارید"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"افزودن مخاطب"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"فعال‌سازی"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"برای دیدن مخاطبینتان، مجوز «مخاطبین» را روشن کنید."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"هیچ برنامه مخاطبی در دسترس نیست"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-fi/strings.xml b/java/com/android/dialer/widget/res/values-fi/strings.xml
index e0e971cd8..1a153072c 100644
--- a/java/com/android/dialer/widget/res/values-fi/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fi/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Kirjoita oma viesti"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Sulje"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Sinulla ei ole vielä yhteystietoja."</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Lisää yhteystieto."</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Ota käyttöön"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Jos haluat katsella yhteystietojasi, ota Yhteystiedot-käyttöoikeus käyttöön."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Yhteystietosovellusta ei ole käytettävissä."</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml b/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml
index 9776385b4..62e1f37fb 100644
--- a/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Rédiger message personnalisé"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Fermer"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Vous n\'avez pas encore de contacts"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Ajouter un contact"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Activer"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Pour consulter vos contacts, activez l\'autorisation Contacts."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Aucune application Contacts n\'est disponible"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-fr/strings.xml b/java/com/android/dialer/widget/res/values-fr/strings.xml
index fececd84a..85a32b875 100644
--- a/java/com/android/dialer/widget/res/values-fr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fr/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Écrire mon propre message"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Fermer"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Vous n\'avez pas encore de contacts."</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Ajouter un contact"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Activer"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Pour consulter vos contacts, activez l\'autorisation Contacts."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Aucune application de gestion des contacts n\'est disponible"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-gl/strings.xml b/java/com/android/dialer/widget/res/values-gl/strings.xml
index 6a756810b..8a9089fdb 100644
--- a/java/com/android/dialer/widget/res/values-gl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-gl/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Escribe unha mensaxe personalizada"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Pechar"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Aínda non tes ningún contacto"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Engadir un contacto"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Activar"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Para ver os teus contactos, activa o permiso de Contactos."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Non hai ningunha aplicación de contactos dispoñible"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-gu/strings.xml b/java/com/android/dialer/widget/res/values-gu/strings.xml
index c2f8cf0e1..794245d3d 100644
--- a/java/com/android/dialer/widget/res/values-gu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-gu/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"એક કસ્ટમ સંદેશ લખો"</string>
<string name="toolbar_close" msgid="1081308076149879833">"બંધ કરો"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"તમે હજી સુધી કોઇપણ સંપર્કો ધરાવતાં નથી"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"સંપર્ક ઉમેરો"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"ચાલુ કરો"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"તમારા સંપર્કો જોવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"કોઈ સંપર્કો ઍપ્લિકેશન ઉપલબ્ધ નથી"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-hi/strings.xml b/java/com/android/dialer/widget/res/values-hi/strings.xml
index 63c94e7f6..5cdb8bbfc 100644
--- a/java/com/android/dialer/widget/res/values-hi/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hi/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"कोई कस्टम संदेश लिखें"</string>
<string name="toolbar_close" msgid="1081308076149879833">"बंद करें"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"आपके पास अभी कोई भी संपर्क नहीं है"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"कोई संपर्क जोड़ें"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"चालू करें"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"अपने संपर्क देखने के लिए, संपर्क अनुमति चालू करें."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"कोई भी संपर्क ऐप उपलब्‍ध नहीं है"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-hr/strings.xml b/java/com/android/dialer/widget/res/values-hr/strings.xml
index 28a58d453..9ded4d4a7 100644
--- a/java/com/android/dialer/widget/res/values-hr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hr/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Napišite prilagođenu poruku"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Zatvaranje"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Još nemate nijedan kontakt"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Dodavanje kontakta"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Uključi"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Da biste vidjeli svoje kontakte, uključite dopuštenje za kontakte."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nije dostupna nijedna aplikacija za kontakte"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-hu/strings.xml b/java/com/android/dialer/widget/res/values-hu/strings.xml
index dcd2b36ea..92ae71de8 100644
--- a/java/com/android/dialer/widget/res/values-hu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hu/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Egyéni üzenet írása"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Bezárás"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Még nem rendelkezik egyetlen névjeggyel sem"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Névjegy hozzáadása"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Bekapcsolás"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"A névjegyek megtekintéséhez kapcsolja be a Névjegyek engedélyt."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nincs elérhető névjegykezelő alkalmazás"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-hy/strings.xml b/java/com/android/dialer/widget/res/values-hy/strings.xml
index 7b78bb23e..ffa7132c5 100644
--- a/java/com/android/dialer/widget/res/values-hy/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hy/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Գրել տեքստն ինքնուրույն"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Փակել"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Դեռ կոնտակտներ չունեք"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Ավելացնել կոնտակտ"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Միացնել"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Ձեր կոնտակտները տեսնելու համար միացրեք Կոնտակտների թույլտվությունը:"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Կոնտակտների հավելված չկա"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-in/strings.xml b/java/com/android/dialer/widget/res/values-in/strings.xml
index b4b65504b..69849ae02 100644
--- a/java/com/android/dialer/widget/res/values-in/strings.xml
+++ b/java/com/android/dialer/widget/res/values-in/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Tulis pesan khusus"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Tutup"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Anda belum memiliki kontak"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Tambahkan kontak"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Aktifkan"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Untuk melihat kontak, aktifkan izin Kontak."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Aplikasi kontak tidak tersedia"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-is/strings.xml b/java/com/android/dialer/widget/res/values-is/strings.xml
index fd844197e..98a172904 100644
--- a/java/com/android/dialer/widget/res/values-is/strings.xml
+++ b/java/com/android/dialer/widget/res/values-is/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Skrifa sérsniðin skilaboð"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Loka"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Þú ert ekki með neina tengiliði enn sem komið er"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Bæta tengilið við"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Kveikja"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Kveiktu á tengiliðaheimildinni til að sjá tengiliðina þína."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Ekkert tengiliðaforrit í boði"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-it/strings.xml b/java/com/android/dialer/widget/res/values-it/strings.xml
index 0af3fd2eb..1a6e6c135 100644
--- a/java/com/android/dialer/widget/res/values-it/strings.xml
+++ b/java/com/android/dialer/widget/res/values-it/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Scrivi un messaggio personalizzato"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Chiudi"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Nessun contatto disponibile"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Aggiungi un contatto"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Attiva"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Per accedere ai tuoi contatti, attiva l\'autorizzazione Contatti."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nessuna app di contatti disponibile"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-iw/strings.xml b/java/com/android/dialer/widget/res/values-iw/strings.xml
index a485888ae..f2a732a67 100644
--- a/java/com/android/dialer/widget/res/values-iw/strings.xml
+++ b/java/com/android/dialer/widget/res/values-iw/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"כתוב הודעה מותאמת אישית"</string>
<string name="toolbar_close" msgid="1081308076149879833">"סגירה"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"עדיין אין לך אנשי קשר"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"הוספה של איש קשר"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"הפעלה"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"עליך להפעיל את ההרשאה \'אנשי קשר\' כדי להציג את אנשי הקשר שלך."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"אין אף אפליקציה לניהול אנשי קשר"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ja/strings.xml b/java/com/android/dialer/widget/res/values-ja/strings.xml
index 9fd65a806..7994c6262 100644
--- a/java/com/android/dialer/widget/res/values-ja/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ja/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"カスタム メッセージを入力"</string>
<string name="toolbar_close" msgid="1081308076149879833">"閉じる"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"連絡先はまだありません"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"連絡先を追加"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"ON にする"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"連絡先を表示するには、連絡先へのアクセスを許可する設定を ON にしてください。"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"利用できる連絡先アプリがありません"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ka/strings.xml b/java/com/android/dialer/widget/res/values-ka/strings.xml
index 6dde04430..865a66b45 100644
--- a/java/com/android/dialer/widget/res/values-ka/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ka/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"დაწერეთ მორგებ. შეტყობინება"</string>
<string name="toolbar_close" msgid="1081308076149879833">"დახურვა"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"კონტაქტები ჯერ არ გაქვთ"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"კონტაქტის დამატება"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"ჩართვა"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"კონტაქტების სანახავად ჩართეთ კონტაქტების ნებართვა."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"კონტაქტების აპი მიუწვდომელია"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-kk/strings.xml b/java/com/android/dialer/widget/res/values-kk/strings.xml
index 334d915e2..08856aaec 100644
--- a/java/com/android/dialer/widget/res/values-kk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-kk/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Арнаулы хабар жазу"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Жабу"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Әлі ешқандай контактілер жоқ"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Контакт қосу"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Қосу"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Контактілерді көру үшін \"Контактілер\" рұқсатын қосыңыз."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Контактілер қолданбасы қолжетімді емес"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-km/strings.xml b/java/com/android/dialer/widget/res/values-km/strings.xml
index d0f5633e4..c09233253 100644
--- a/java/com/android/dialer/widget/res/values-km/strings.xml
+++ b/java/com/android/dialer/widget/res/values-km/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"សរសេរ​សារ​ផ្ទាល់ខ្លួន"</string>
<string name="toolbar_close" msgid="1081308076149879833">"បិទ"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"អ្នកមិនទាន់មានទំនាក់ទំនងនៅឡើយទេ"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"បញ្ចូល​ទំនាក់ទំនង"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"បើក"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"ដើម្បីមើលទំនាក់ទំនងរបស់អ្នក សូមបើកការ​អនុញ្ញាតកម្មវិធីទំនាក់ទំនង។"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"មិនមានកម្មវិធីទំនាក់ទំនងទេ"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-kn/strings.xml b/java/com/android/dialer/widget/res/values-kn/strings.xml
index 3535bfcb7..a502d087e 100644
--- a/java/com/android/dialer/widget/res/values-kn/strings.xml
+++ b/java/com/android/dialer/widget/res/values-kn/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"ಕಸ್ಟಮ್ ಸಂದೇಶವನ್ನು ಬರೆಯಿರಿ"</string>
<string name="toolbar_close" msgid="1081308076149879833">"ಮುಚ್ಚಿ"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"ನಿಮ್ಮ ಬಳಿ ಇನ್ನೂ ಯಾವುದೇ ಸಂಪರ್ಕಗಳಿಲ್ಲ"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"ಸಂಪರ್ಕ ಸೇರಿಸಿ"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"ಆನ್ ಮಾಡಿ"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"ಯಾವುದೇ ಸಂಪರ್ಕಗಳ ಅಪ್ಲಿಕೇಶನ್‌ ಲಭ್ಯವಿಲ್ಲ"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ko/strings.xml b/java/com/android/dialer/widget/res/values-ko/strings.xml
index 8c00cea8b..045dc54dc 100644
--- a/java/com/android/dialer/widget/res/values-ko/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ko/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"맞춤 메시지를 작성하세요."</string>
<string name="toolbar_close" msgid="1081308076149879833">"닫기"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"아직 연락처가 없습니다."</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"연락처 추가"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"사용"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"연락처를 보려면 연락처에 액세스할 권한을 부여하세요."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"사용할 수 있는 연락처 앱이 없습니다."</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ky/strings.xml b/java/com/android/dialer/widget/res/values-ky/strings.xml
index 46ea8514c..7ef10e707 100644
--- a/java/com/android/dialer/widget/res/values-ky/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ky/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Башка билдирүүнү жазыңыз"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Жабуу"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Азырынча эч байланышыңыз жок"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Байланыш кошуу"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Күйгүзүү"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Байланыштарыңызды көрүү үчүн, \"Байланыштар\" уруксатын күйгүзүңүз."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Жеткиликтүү байланыштар колдонмосу жок"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-lo/strings.xml b/java/com/android/dialer/widget/res/values-lo/strings.xml
index 0db64a78a..dc7ba44c1 100644
--- a/java/com/android/dialer/widget/res/values-lo/strings.xml
+++ b/java/com/android/dialer/widget/res/values-lo/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"ຂຽນຂໍ້ຄວາມດ້ວຍຕົນເອງ"</string>
<string name="toolbar_close" msgid="1081308076149879833">"ປິດ"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"ທ່ານຍັງບໍ່ມີລາຍຊື່ຜູ້ຕິດຕໍ່ເທື່ອ"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"ເພີ່ມລາຍຊື່"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"ເປີດໃຊ້"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"ເພື່ອເບິ່ງລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານ, ໃຫ້ເປີດການອະນຸຍາດລາຍຊື່ຜູ້ຕິດຕໍ່ກ່ອນ"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"ບໍ່ມີແອັບລາຍຊື່ຜູ້ຕິດຕໍ່ທີ່ສາມາດໃຊ້ໄດ້"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-lt/strings.xml b/java/com/android/dialer/widget/res/values-lt/strings.xml
index a10b91ef6..be12520f8 100644
--- a/java/com/android/dialer/widget/res/values-lt/strings.xml
+++ b/java/com/android/dialer/widget/res/values-lt/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Parašykite tinkintą praneš."</string>
<string name="toolbar_close" msgid="1081308076149879833">"Uždaryti"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Dar neturite jokių kontaktų"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Pridėkite kontaktą"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Įjungti"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Jei norite peržiūrėti kontaktus, įjunkite Kontaktų leidimą."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nepasiekiama jokia kontaktų programa"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-lv/strings.xml b/java/com/android/dialer/widget/res/values-lv/strings.xml
index 8ff079390..acefbaea4 100644
--- a/java/com/android/dialer/widget/res/values-lv/strings.xml
+++ b/java/com/android/dialer/widget/res/values-lv/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Rakstīt pielāgotu ziņojumu"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Aizvērt"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Jums vēl nav nevienas kontaktpersonas."</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Pievienot kontaktpersonu"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Ieslēgt"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Lai skatītu savas kontaktpersonas, ieslēdziet atļauju Kontaktpersonas."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nav pieejama neviena kontaktpersonu lietotne."</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-mk/strings.xml b/java/com/android/dialer/widget/res/values-mk/strings.xml
index aa9be3055..20b18e8d9 100644
--- a/java/com/android/dialer/widget/res/values-mk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-mk/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Напиши приспособена порака"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Затвори"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Сè уште немате контакти"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Додајте контакт"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Вклучи"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"За да ги видите контактите, вклучете ја дозволата за контакти."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Нема достапна апликација за контакти"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ml/strings.xml b/java/com/android/dialer/widget/res/values-ml/strings.xml
index b52ee401c..a97a7d862 100644
--- a/java/com/android/dialer/widget/res/values-ml/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ml/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"ഒരു ഇ‌ഷ്‌ടാനുസൃത സന്ദേശം രചിക്കൂ"</string>
<string name="toolbar_close" msgid="1081308076149879833">"അടയ്‌ക്കുക"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"നിങ്ങൾക്ക് ഇതുവരെയും കോൺടാക്റ്റുകൾ ഒന്നുമില്ല."</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"ഒരു കോണ്‍ടാക്റ്റ് ചേര്‍ക്കുക"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"ഓൺ ചെയ്യുക"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"നിങ്ങളുടെ കോൺടാക്റ്റുകൾ കാണുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"കോൺടാക്റ്റ് അപ്ലിക്കേഷനൊന്നും ലഭ്യമല്ല"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-mn/strings.xml b/java/com/android/dialer/widget/res/values-mn/strings.xml
index 6bdad8983..bbcfc7cf6 100644
--- a/java/com/android/dialer/widget/res/values-mn/strings.xml
+++ b/java/com/android/dialer/widget/res/values-mn/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Тусгай зурвас бичих"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Хаах"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Танд одоогоор харилцагч байхгүй байна"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Харилцагч нэмэх"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Асаах"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Харилцагчдаа харахын тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Ямар ч харилцагчдын апликейшн байхгүй байна"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-mr/strings.xml b/java/com/android/dialer/widget/res/values-mr/strings.xml
index 5661fa8b9..38d913a85 100644
--- a/java/com/android/dialer/widget/res/values-mr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-mr/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"एक सानुकूल संदेश लिहा"</string>
<string name="toolbar_close" msgid="1081308076149879833">"बंद करा"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"आपल्‍याकडे अद्याप कोणतेही संपर्क नाहीत"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"एक संपर्क जोडा"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"चालू करा"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"आपले संपर्क पाहण्‍यासाठी, संपर्क परवानगी चालू करा."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"कोणताही संपर्क अॅप उपलब्ध नाही"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ms/strings.xml b/java/com/android/dialer/widget/res/values-ms/strings.xml
index 8889ccc8d..bc67c6764 100644
--- a/java/com/android/dialer/widget/res/values-ms/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ms/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Tulis mesej tersuai"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Tutup"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Anda belum mempunyai sebarang kenalan"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Tambahkan kenalan"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Hidupkan"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Untuk melihat kenalan anda, hidupkan kebenaran Kenalan."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Tiada apl kenalan yang tersedia"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-my/strings.xml b/java/com/android/dialer/widget/res/values-my/strings.xml
index 9a69f29eb..c8e783bf4 100644
--- a/java/com/android/dialer/widget/res/values-my/strings.xml
+++ b/java/com/android/dialer/widget/res/values-my/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"စိတ်ကြိုက် မက်ဆေ့ဂျ်တစ်ခု ရေးပါ"</string>
<string name="toolbar_close" msgid="1081308076149879833">"ပိတ်ရန်"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"သင့်တွင် မည်သည့်အဆက်အသွယ်မျှ မရှိသေးပါ"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"အဆက်အသွယ်တစ်ယောက် ထည့်မည်"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"ဖွင့်ရန်"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"အဆက်အသွယ်များကိုကြည့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"အဆက်အသွယ်များ app မရှိပါ"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-nb/strings.xml b/java/com/android/dialer/widget/res/values-nb/strings.xml
index 100156bd1..822f07ed1 100644
--- a/java/com/android/dialer/widget/res/values-nb/strings.xml
+++ b/java/com/android/dialer/widget/res/values-nb/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Skriv egendefinert melding"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Lukk"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Du har ingen kontakter ennå"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Legg til en kontakt"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Slå på"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"For å se kontaktene dine må du slå på Kontakter-tillatelsen."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Ingen kontaktapper er tilgjengelige"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ne/strings.xml b/java/com/android/dialer/widget/res/values-ne/strings.xml
index abb8bb04b..ebb31d579 100644
--- a/java/com/android/dialer/widget/res/values-ne/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ne/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"आफू अनुकूल सन्देश लेख्‍ने"</string>
<string name="toolbar_close" msgid="1081308076149879833">"बन्द गर्नुहोस्"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"अहिलेसम्म तपाईंसँग कुनै सम्पर्कहरू छैनन्"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"कुनै सम्पर्क थप्नुहोस्"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"सक्रिय गर्नुहोस्"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"आफ्ना सम्पर्कहरू हेर्न सम्पर्क सम्बन्धी अनुमतिलाई सक्रिय गर्नुहोस्।"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"सम्पर्क सम्बन्धी कुनै अनुप्रयोग उपलब्ध छैन"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-nl/strings.xml b/java/com/android/dialer/widget/res/values-nl/strings.xml
index 556028893..cbc286ba3 100644
--- a/java/com/android/dialer/widget/res/values-nl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-nl/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Schrijf zelf een bericht"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Sluiten"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Je hebt nog geen contacten"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Een contact toevoegen"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Inschakelen"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Als je je contacten wilt bekijken, schakel je de machtiging voor Contacten in."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Geen app voor contacten beschikbaar"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-no/strings.xml b/java/com/android/dialer/widget/res/values-no/strings.xml
index 100156bd1..822f07ed1 100644
--- a/java/com/android/dialer/widget/res/values-no/strings.xml
+++ b/java/com/android/dialer/widget/res/values-no/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Skriv egendefinert melding"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Lukk"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Du har ingen kontakter ennå"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Legg til en kontakt"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Slå på"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"For å se kontaktene dine må du slå på Kontakter-tillatelsen."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Ingen kontaktapper er tilgjengelige"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-pa/strings.xml b/java/com/android/dialer/widget/res/values-pa/strings.xml
index 4c69c2c6e..06f191e50 100644
--- a/java/com/android/dialer/widget/res/values-pa/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pa/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"ਵਿਸ਼ੇਸ਼-ਵਿਉਂਤਬੱਧ ਸੰਦੇਸ਼ ਲਿਖੋ"</string>
<string name="toolbar_close" msgid="1081308076149879833">"ਬੰਦ ਕਰੋ"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"ਤੁਹਾਡੇ ਕੋਲ ਹਾਲੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਹਨ"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"ਕੋਈ ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"ਚਾਲੂ ਕਰੋ"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"ਆਪਣੇ ਸੰਪਰਕਾਂ ਨੂੰ ਵੇਖਣ ਲਈ, ਸੰਪਰਕ ਇਜਾਜ਼ਤ ਚਾਲੂ ਕਰੋ।"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"ਕੋਈ ਸੰਪਰਕ ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-pl/strings.xml b/java/com/android/dialer/widget/res/values-pl/strings.xml
index cec7a4045..5d62a07f1 100644
--- a/java/com/android/dialer/widget/res/values-pl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pl/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Wpisz wiadomość"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Zamknij"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Nie masz jeszcze żadnych kontaktów"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Dodaj kontakt"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Włącz"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Aby zobaczyć swoje kontakty, włącz uprawnienia Kontakty."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nie jest dostępna żadna aplikacja do obsługi kontaktów"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml b/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml
index b15bfac8d..0afc0f1d6 100644
--- a/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Escreva sua mensagem"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Fechar"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Você ainda não tem contatos"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Adicionar um contato"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Ativar"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Para ver seus contatos, ative a permissão para o app Contatos."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nenhum app de contatos disponível"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml b/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml
index ece2ef2c3..35f71a371 100644
--- a/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Escreva uma mensagem"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Fechar"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Ainda não tem nenhum contacto"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Adicionar um contacto"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Ativar"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Para ver os seus contactos, ative a autorização Contactos."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Não existe nenhuma aplicação de contactos disponível"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-pt/strings.xml b/java/com/android/dialer/widget/res/values-pt/strings.xml
index b15bfac8d..0afc0f1d6 100644
--- a/java/com/android/dialer/widget/res/values-pt/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pt/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Escreva sua mensagem"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Fechar"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Você ainda não tem contatos"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Adicionar um contato"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Ativar"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Para ver seus contatos, ative a permissão para o app Contatos."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nenhum app de contatos disponível"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ro/strings.xml b/java/com/android/dialer/widget/res/values-ro/strings.xml
index 753b920b4..6c51d23ac 100644
--- a/java/com/android/dialer/widget/res/values-ro/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ro/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Scrieți mesaj personalizat"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Închideți"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Nu aveți încă persoane de contact."</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Adăugați o persoană de contact"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Activați"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Pentru a vedea persoanele de contact, activați permisiunea pentru Agendă."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nu este disponibilă nicio aplicație pentru agendă"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ru/strings.xml b/java/com/android/dialer/widget/res/values-ru/strings.xml
index bdebd3ce4..c36874de5 100644
--- a/java/com/android/dialer/widget/res/values-ru/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ru/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Добавьте свой текст"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Закрыть"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Контактов нет"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Добавить контакт"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Предоставить разрешение"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Чтобы открыть список контактов, предоставьте приложению разрешение \"Контакты\"."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Нет приложения для работы с контактами"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-si/strings.xml b/java/com/android/dialer/widget/res/values-si/strings.xml
index 4988259d4..10eb7b5b5 100644
--- a/java/com/android/dialer/widget/res/values-si/strings.xml
+++ b/java/com/android/dialer/widget/res/values-si/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"අභිරුචි පණිවිඩයක් ලියන්න"</string>
<string name="toolbar_close" msgid="1081308076149879833">"වසන්න"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"ඔබට තවම කිසිදු සම්බන්ධතාවක් නැත"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"සම්බන්ධතාවක් එක් කරන්න"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"ක්‍රියාත්මක කරන්න"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"ඔබේ සම්බන්ධතා බැලීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"සබඳතා යෙදුම ලබා ගැනීමට නොහැකිය"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-sk/strings.xml b/java/com/android/dialer/widget/res/values-sk/strings.xml
index 5dc1bd505..56f7ceb97 100644
--- a/java/com/android/dialer/widget/res/values-sk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sk/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Napíšte vlastnú správu"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Zavrieť"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Zatiaľ nemáte žiadne kontakty"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Pridať kontakt"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Zapnúť"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Ak si chcete zobraziť kontakty, zapnite povolenie Kontakty."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nie je k dispozícii žiadna aplikácia na prácu s kontaktmi"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-sl/strings.xml b/java/com/android/dialer/widget/res/values-sl/strings.xml
index 0ba965b2e..52f029377 100644
--- a/java/com/android/dialer/widget/res/values-sl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sl/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Napišite sporočilo po meri"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Zapri"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Nimate še nobenega stika"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Dodaj stik"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Vklopi"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Če si želite ogledati stike, vklopite dovoljenje za stike."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Na voljo ni nobene aplikacije za stike"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-sq/strings.xml b/java/com/android/dialer/widget/res/values-sq/strings.xml
index 7f5e0f285..c7943dfd3 100644
--- a/java/com/android/dialer/widget/res/values-sq/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sq/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Shkruaj mesazh të person."</string>
<string name="toolbar_close" msgid="1081308076149879833">"Mbyll"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Nuk ke ende kontakte"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Shto një kontakt"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Aktivizo"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Për të parë kontaktet, aktivizo lejen e Kontakteve."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Nuk ka asnjë aplikacion për kontaktet"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-sr/strings.xml b/java/com/android/dialer/widget/res/values-sr/strings.xml
index 446c27363..00b9b4f6c 100644
--- a/java/com/android/dialer/widget/res/values-sr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sr/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Напишите прилагођену поруку"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Затворите"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Још увек немате ниједан контакт"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Додај контакт"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Укључи"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Да бисте видели контакте, укључите дозволу за Контакте."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Нема доступне апликације за контакте"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-sv/strings.xml b/java/com/android/dialer/widget/res/values-sv/strings.xml
index 7d2f44c45..359397026 100644
--- a/java/com/android/dialer/widget/res/values-sv/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sv/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Skriv anpassat meddelande"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Stäng"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Du har inga kontakter ännu"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Lägg till en kontakt"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Aktivera"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Du måste aktivera behörigheten Kontakter för att visa kontakterna."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Det finns inga appar för kontakter"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-sw/strings.xml b/java/com/android/dialer/widget/res/values-sw/strings.xml
index d2c2a9721..b0892108b 100644
--- a/java/com/android/dialer/widget/res/values-sw/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sw/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Andika ujumbe maalum"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Funga"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Bado huna anwani zozote"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Ongeza anwani"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Washa"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Ili uone anwani zako, washa ruhusa ya Anwani."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Hakuna programu ya anwani iliyopatikana"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ta/strings.xml b/java/com/android/dialer/widget/res/values-ta/strings.xml
index 4061c169f..83ca080e5 100644
--- a/java/com/android/dialer/widget/res/values-ta/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ta/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"தனிப்பயன் செய்தியை எழுதவும்"</string>
<string name="toolbar_close" msgid="1081308076149879833">"மூடு"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"இதுவரை தொடர்புகள் எதுவுமில்லை"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"தொடர்பைச் சேர்"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"இயக்கு"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"தொடர்புகளைப் பார்க்க, தொடர்புகள் அனுமதியை இயக்கவும்."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"தொடர்புகள் பயன்பாடு எதுவுமில்லை"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-te/strings.xml b/java/com/android/dialer/widget/res/values-te/strings.xml
index c2474b7ce..418cc3d0b 100644
--- a/java/com/android/dialer/widget/res/values-te/strings.xml
+++ b/java/com/android/dialer/widget/res/values-te/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"అనుకూల సందేశాన్ని వ్రాయండి"</string>
<string name="toolbar_close" msgid="1081308076149879833">"మూసివేయి"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"మీకు ఇప్పటికీ పరిచయాలేవీ లేవు"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"పరిచయాన్ని జోడించండి"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"ఆన్ చేయి"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"మీ పరిచయాలను చూడటానికి, పరిచయాల అనుమతిని ఆన్ చేయండి."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"పరిచయాల అనువర్తనం ఏదీ అందుబాటులో లేదు"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-th/strings.xml b/java/com/android/dialer/widget/res/values-th/strings.xml
index d450b4b13..c556d1c37 100644
--- a/java/com/android/dialer/widget/res/values-th/strings.xml
+++ b/java/com/android/dialer/widget/res/values-th/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"เขียนข้อความที่กำหนดเอง"</string>
<string name="toolbar_close" msgid="1081308076149879833">"ปิด"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"คุณยังไม่มีรายชื่อติดต่อ"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"เพิ่มรายชื่อติดต่อ"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"เปิด"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"หากต้องการดูรายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"ไม่มีแอปรายชื่อติดต่อที่พร้อมใช้งาน"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-tl/strings.xml b/java/com/android/dialer/widget/res/values-tl/strings.xml
index ee7c52f7b..be02d1989 100644
--- a/java/com/android/dialer/widget/res/values-tl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-tl/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Sumulat ng custom na mensahe"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Isara"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Wala ka pang sinumang contact"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Magdagdag ng contact"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"I-on"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Upang makita ang iyong mga contact, i-on ang pahintulot ng Mga Contact."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Walang available na app ng mga contact"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-tr/strings.xml b/java/com/android/dialer/widget/res/values-tr/strings.xml
index 64e2ea535..90d5db649 100644
--- a/java/com/android/dialer/widget/res/values-tr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-tr/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Özel bir mesaj yazın"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Kapat"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Henüz hiç kişiniz yok"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Kişi ekleyin"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Etkinleştir"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Kişilerinizi görmek için Kişiler iznini etkinleştirin."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Kullanılabilir kişi uygulaması yok"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-uk/strings.xml b/java/com/android/dialer/widget/res/values-uk/strings.xml
index f8d9bb871..cf5a7d1db 100644
--- a/java/com/android/dialer/widget/res/values-uk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-uk/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Ваше власне повідомлення"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Закрити"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Ще немає контактів"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Додати контакт"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Увімкнути"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Щоб переглянути контакти, увімкніть дозвіл \"Контакти\"."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Немає додатка з контактами"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-ur/strings.xml b/java/com/android/dialer/widget/res/values-ur/strings.xml
index 6edeb5c95..e5199afe4 100644
--- a/java/com/android/dialer/widget/res/values-ur/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ur/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"ایک حسب ضرورت پیغام لکھیں"</string>
<string name="toolbar_close" msgid="1081308076149879833">"بند کریں"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"آپ کے پاس ابھی تک کوئی رابطے نہیں ہیں"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"ایک رابطہ شامل کریں"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"آن کریں"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"اپنے رابطے دیکھنے کیلئے رابطوں کی اجازت آن کریں۔"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"رابطوں کی کوئی ایپ دستیاب نہیں ہے"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-uz/strings.xml b/java/com/android/dialer/widget/res/values-uz/strings.xml
index 434464aef..eb0e0adae 100644
--- a/java/com/android/dialer/widget/res/values-uz/strings.xml
+++ b/java/com/android/dialer/widget/res/values-uz/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Boshqa xabar yozing"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Yopish"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Kontaktlar yo‘q"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Kontakt qo‘shish"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Ruxsat berish"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Kontaktlar ro‘yxatini ko‘rish uchun ilovaga Kontaktlarga kirishga ruxsat bering."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Kontaktlarni ochadigan ilova yo‘q"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-vi/strings.xml b/java/com/android/dialer/widget/res/values-vi/strings.xml
index 1a30f7c96..62e94b82e 100644
--- a/java/com/android/dialer/widget/res/values-vi/strings.xml
+++ b/java/com/android/dialer/widget/res/values-vi/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Viết tin nhắn tùy chỉnh"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Đóng"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Bạn chưa có bất kỳ liên hệ nào"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Thêm liên hệ"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Bật"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Để xem danh bạ của bạn, bật quyền đối với Danh bạ."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Không có ứng dụng danh bạ"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml b/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml
index 799972393..063301ae0 100644
--- a/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"自行撰写信息"</string>
<string name="toolbar_close" msgid="1081308076149879833">"关闭"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"您还没有任何联系人"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"添加联系人"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"开启"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"要查看您的联系人,请开启“通讯录”权限。"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"没有可用的通讯录应用"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml b/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml
index b0bfcc8d9..e2e69b75b 100644
--- a/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"撰寫自訂訊息"</string>
<string name="toolbar_close" msgid="1081308076149879833">"關閉"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"您尚無任何聯絡人"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"新增聯絡人"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"開放"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"如要查看聯絡人,請開放「通訊錄」權限。"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"沒有可用的聯絡人應用程式"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml b/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml
index b0bfcc8d9..85768af8f 100644
--- a/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"撰寫自訂訊息"</string>
<string name="toolbar_close" msgid="1081308076149879833">"關閉"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"你還沒有任何聯絡人"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"新增聯絡人"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"開啟"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"如要查看你的聯絡人,請開啟「聯絡人」存取權限。"</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"沒有可用的聯絡人應用程式"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values-zu/strings.xml b/java/com/android/dialer/widget/res/values-zu/strings.xml
index 074aa5822..a3ba84a9a 100644
--- a/java/com/android/dialer/widget/res/values-zu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zu/strings.xml
@@ -3,4 +3,9 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="custom_message_hint" msgid="2179012696339457461">"Bhala umlayezo wangokwezifiso"</string>
<string name="toolbar_close" msgid="1081308076149879833">"Vala"</string>
+ <string name="all_contacts_empty" msgid="4260556610403994011">"Awunabo oxhumana nabo okwamanje"</string>
+ <string name="all_contacts_empty_add_contact_action" msgid="69234925354938480">"Engeza oxhumana naye"</string>
+ <string name="permission_single_turn_on" msgid="1306416016676232584">"Vula"</string>
+ <string name="permission_no_contacts" msgid="2388204904477299207">"Ukuze ubone oxhumana nabo, vula imvume yoxhumana nabo."</string>
+ <string name="add_contact_not_available" msgid="3083256438899321502">"Alukho uhlelo lokusebenza loxhumana nabo olutholakalayo"</string>
</resources>
diff --git a/java/com/android/dialer/widget/res/values/colors.xml b/java/com/android/dialer/widget/res/values/colors.xml
new file mode 100644
index 000000000..c974609ef
--- /dev/null
+++ b/java/com/android/dialer/widget/res/values/colors.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="empty_list_text_color">#b2b2b2</color>
+</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/widget/res/values/dimens.xml b/java/com/android/dialer/widget/res/values/dimens.xml
index 20393a842..537ad7bd7 100644
--- a/java/com/android/dialer/widget/res/values/dimens.xml
+++ b/java/com/android/dialer/widget/res/values/dimens.xml
@@ -26,4 +26,9 @@
<dimen name="toolbar_title_small_text_size">14sp</dimen>
<dimen name="toolbar_subtitle_text_size">12sp</dimen>
<dimen name="toolbar_elevation">4dp</dimen>
+ <dimen name="toolbar_end_padding">4dp</dimen>
+
+ <!-- Empty List -->
+ <dimen name="empty_list_message_top_padding">20dp</dimen>
+ <dimen name="empty_list_message_text_size">16sp</dimen>
</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/widget/res/values/strings.xml b/java/com/android/dialer/widget/res/values/strings.xml
index a5829bb0b..d6ea2e7cd 100644
--- a/java/com/android/dialer/widget/res/values/strings.xml
+++ b/java/com/android/dialer/widget/res/values/strings.xml
@@ -5,4 +5,19 @@
<!-- Accessibility string for close/navigation icon in DialerToolbar -->
<string name="toolbar_close">Close</string>
+
+ <!-- [CHAR LIMIT=NONE] Shown when there are no contacts in the all contacts list. -->
+ <string name="all_contacts_empty">You don\'t have any contacts yet</string>
+
+ <!-- [CHAR LIMIT=NONE] Shown as an action when the all contacts list is empty -->
+ <string name="all_contacts_empty_add_contact_action">Add a contact</string>
+
+ <!-- The label of the button used to turn on a single permission [CHAR LIMIT=30]-->
+ <string name="permission_single_turn_on">Turn on</string>
+
+ <!-- Shown as a prompt to turn on the contacts permission to show all contacts [CHAR LIMIT=NONE]-->
+ <string name="permission_no_contacts">To see your contacts, turn on the Contacts permission.</string>
+
+ <!-- Message displayed when there is no application available to handle the add contact menu option. [CHAR LIMIT=NONE] -->
+ <string name="add_contact_not_available">No contacts app available</string>
</resources> \ No newline at end of file