From 91ce7d2a476bd04fe525049a37a2f8b2824e9724 Mon Sep 17 00:00:00 2001 From: Eric Erfanian Date: Mon, 5 Jun 2017 13:35:02 -0700 Subject: [PATCH] Update AOSP Dialer source from internal google3 repository at cl/158012278. Test: make, treehugger This CL updates the AOSP Dialer source with all the changes that have gone into the private google3 repository. This includes all the changes from cl/152373142 (4/06/2017) to cl/158012278 (6/05/2017). This goal of these drops is to keep the AOSP source in sync with the internal google3 repository. Currently these sync are done by hand with very minor modifications to the internal source code. See the Android.mk file for list of modifications. Our current goal is to do frequent drops (daily if possible) and eventually switched to an automated process. Change-Id: I4d3f14b5140e2e51bead9497bc118a205b3ebe76 --- Android.mk | 89 ++- AndroidManifest.xml | 4 +- .../quantum_ic_bluetooth_audio_white_24.png | Bin 0 -> 438 bytes .../quantum_ic_check_circle_googblue_24.png | Bin 407 -> 0 bytes .../quantum_ic_forward_white_24.png | Bin 139 -> 0 bytes .../quantum_ic_headset_white_24.png | Bin 0 -> 350 bytes .../quantum_ic_mic_off_white_24.png | Bin 0 -> 428 bytes .../quantum_ic_network_wifi_white_24.png | Bin 427 -> 0 bytes .../quantum_ic_phone_in_talk_white_24.png | Bin 0 -> 483 bytes .../quantum_ic_phone_in_talk_white_36.png | Bin 0 -> 704 bytes .../quantum_ic_report_white_18.png | Bin 212 -> 0 bytes .../quantum_ic_bluetooth_audio_white_24.png | Bin 0 -> 297 bytes .../quantum_ic_check_circle_googblue_24.png | Bin 278 -> 0 bytes .../quantum_ic_forward_white_24.png | Bin 117 -> 0 bytes .../quantum_ic_headset_white_24.png | Bin 0 -> 238 bytes .../quantum_ic_mic_off_white_24.png | Bin 0 -> 288 bytes .../quantum_ic_network_wifi_white_24.png | Bin 299 -> 0 bytes .../quantum_ic_phone_in_talk_white_24.png | Bin 0 -> 325 bytes .../quantum_ic_phone_in_talk_white_36.png | Bin 0 -> 483 bytes .../quantum_ic_report_white_18.png | Bin 163 -> 0 bytes .../quantum_ic_bluetooth_audio_white_24.png | Bin 0 -> 515 bytes .../quantum_ic_check_circle_googblue_24.png | Bin 490 -> 0 bytes .../quantum_ic_forward_white_24.png | Bin 159 -> 0 bytes .../quantum_ic_headset_white_24.png | Bin 0 -> 433 bytes .../quantum_ic_mic_off_white_24.png | Bin 0 -> 484 bytes .../quantum_ic_network_wifi_white_24.png | Bin 538 -> 0 bytes .../quantum_ic_phone_in_talk_white_24.png | Bin 0 -> 601 bytes .../quantum_ic_phone_in_talk_white_36.png | Bin 0 -> 882 bytes .../quantum_ic_report_white_18.png | Bin 240 -> 0 bytes .../quantum_ic_bluetooth_audio_white_24.png | Bin 0 -> 778 bytes .../quantum_ic_check_circle_googblue_24.png | Bin 717 -> 0 bytes .../quantum_ic_forward_white_24.png | Bin 204 -> 0 bytes .../quantum_ic_headset_white_24.png | Bin 0 -> 610 bytes .../quantum_ic_mic_off_white_24.png | Bin 0 -> 713 bytes .../quantum_ic_network_wifi_white_24.png | Bin 786 -> 0 bytes .../quantum_ic_phone_in_talk_white_24.png | Bin 0 -> 882 bytes .../quantum_ic_phone_in_talk_white_36.png | Bin 0 -> 1342 bytes .../quantum_ic_report_white_18.png | Bin 312 -> 0 bytes .../quantum_ic_bluetooth_audio_white_24.png | Bin 0 -> 945 bytes .../quantum_ic_check_circle_googblue_24.png | Bin 1017 -> 0 bytes .../quantum_ic_forward_white_24.png | Bin 236 -> 0 bytes .../quantum_ic_headset_white_24.png | Bin 0 -> 838 bytes .../quantum_ic_mic_off_white_24.png | Bin 0 -> 902 bytes .../quantum_ic_network_wifi_white_24.png | Bin 1043 -> 0 bytes .../quantum_ic_phone_in_talk_white_24.png | Bin 0 -> 1162 bytes .../quantum_ic_phone_in_talk_white_36.png | Bin 0 -> 1729 bytes .../quantum_ic_report_white_18.png | Bin 340 -> 0 bytes .../quantum_ic_arrow_back_vd_theme_24.xml | 10 + .../drawable/quantum_ic_call_vd_theme_24.xml | 10 + .../drawable/quantum_ic_close_vd_theme_24.xml | 10 + .../quantum_ic_enterprise_vd_theme_24.xml | 2 +- .../drawable/quantum_ic_hd_vd_theme_24.xml | 2 +- .../quantum_ic_history_vd_theme_24.xml | 10 + .../quantum_ic_message_vd_theme_24.xml | 10 + .../quantum_ic_person_add_vd_theme_24.xml | 10 + .../quantum_ic_search_vd_theme_24.xml | 10 + .../quantum_ic_videocam_vd_theme_24.xml | 10 + .../contacts/common/ClipboardUtils.java | 2 - .../contacts/common/ContactPhotoManager.java | 31 +- .../common/ContactPhotoManagerImpl.java | 5 +- .../contacts/common/ContactStatusUtil.java | 2 - .../contacts/common/ContactsUtils.java | 185 +---- java/com/android/contacts/common/GeoUtil.java | 55 -- .../contacts/common/MoreContactUtils.java | 36 - .../common/compat/ContactsCompat.java | 16 - .../common/compat/PhoneAccountCompat.java | 55 +- .../common/compat/PhoneNumberUtilsCompat.java | 132 +--- .../common/compat/TelephonyManagerCompat.java | 71 +- .../compat/telecom/TelecomManagerCompat.java | 260 +------ .../common/dialog/CallSubjectDialog.java | 12 +- .../contacts/common/format/FormatUtils.java | 181 ----- .../common/format/TextHighlighter.java | 55 +- .../format/testing/SpannedTestUtils.java | 85 --- .../lettertiles/LetterTileDrawable.java | 28 + .../common/list/ContactEntryListAdapter.java | 9 +- .../common/list/ContactEntryListFragment.java | 1 - .../common/list/ContactListItemView.java | 216 +++--- .../contacts/common/list/ContactTileView.java | 19 +- .../common/list/PhoneNumberListAdapter.java | 56 +- .../list/PhoneNumberPickerFragment.java | 66 +- .../contacts/common/list/ViewPagerTabs.java | 29 +- .../common/location/CountryDetector.java | 221 ------ .../common/location/UpdateCountryService.java | 104 --- .../contacts/common/model/ContactLoader.java | 1 + .../common/model/account/BaseAccountType.java | 4 +- .../common/res/drawable-hdpi/ic_ab_search.png | Bin 1115 -> 0 bytes .../res/drawable-hdpi/ic_arrow_back_24dp.png | Bin 612 -> 0 bytes .../drawable-hdpi/ic_business_white_120dp.png | Bin 2477 -> 0 bytes .../common/res/drawable-hdpi/ic_call_24dp.png | Bin 340 -> 0 bytes .../common/res/drawable-hdpi/ic_close_dk.png | Bin 609 -> 0 bytes .../res/drawable-hdpi/ic_create_24dp.png | Bin 370 -> 0 bytes .../res/drawable-hdpi/ic_group_white_24dp.png | Bin 389 -> 0 bytes .../ic_history_white_drawable_24dp.png | Bin 525 -> 0 bytes .../drawable-hdpi/ic_info_outline_24dp.png | Bin 485 -> 0 bytes .../common/res/drawable-hdpi/ic_menu_back.png | Bin 799 -> 0 bytes .../res/drawable-hdpi/ic_menu_group_dk.png | Bin 1954 -> 0 bytes .../res/drawable-hdpi/ic_menu_group_lt.png | Bin 1922 -> 0 bytes .../res/drawable-hdpi/ic_menu_overflow_lt.png | Bin 220 -> 0 bytes .../res/drawable-hdpi/ic_menu_person_dk.png | Bin 1439 -> 0 bytes .../res/drawable-hdpi/ic_menu_person_lt.png | Bin 1416 -> 0 bytes .../ic_menu_remove_field_holo_light.png | Bin 515 -> 0 bytes .../res/drawable-hdpi/ic_menu_star_dk.png | Bin 1438 -> 0 bytes .../drawable-hdpi/ic_menu_star_holo_light.png | Bin 1211 -> 0 bytes .../res/drawable-hdpi/ic_menu_star_lt.png | Bin 1414 -> 0 bytes .../res/drawable-hdpi/ic_person_24dp.png | Bin 273 -> 0 bytes .../res/drawable-hdpi/ic_rx_videocam.png | Bin 413 -> 0 bytes .../res/drawable-hdpi/ic_tx_videocam.png | Bin 370 -> 0 bytes .../common/res/drawable-hdpi/ic_videocam.png | Bin 269 -> 0 bytes .../res/drawable-hdpi/ic_voicemail_avatar.png | Bin 2856 -> 0 bytes .../drawable-hdpi/list_activated_holo.9.png | Bin 154 -> 0 bytes .../drawable-hdpi/list_background_holo.9.png | Bin 224 -> 0 bytes .../res/drawable-hdpi/list_focused_holo.9.png | Bin 235 -> 0 bytes .../list_longpressed_holo_light.9.png | Bin 158 -> 0 bytes .../list_pressed_holo_light.9.png | Bin 159 -> 0 bytes .../list_section_divider_holo_custom.9.png | Bin 205 -> 0 bytes .../res/drawable-hdpi/list_title_holo.9.png | Bin 267 -> 0 bytes .../list_focused_holo.9.png | Bin 234 -> 0 bytes .../list_section_divider_holo_custom.9.png | Bin 191 -> 0 bytes .../drawable-ldrtl-hdpi/list_title_holo.9.png | Bin 258 -> 0 bytes .../list_focused_holo.9.png | Bin 234 -> 0 bytes .../list_section_divider_holo_custom.9.png | Bin 180 -> 0 bytes .../drawable-ldrtl-mdpi/list_title_holo.9.png | Bin 186 -> 0 bytes .../list_activated_holo.9.png | Bin 1666 -> 0 bytes .../list_activated_holo.9.png | Bin 1034 -> 0 bytes .../list_activated_holo.9.png | Bin 2486 -> 0 bytes .../list_focused_holo.9.png | Bin 234 -> 0 bytes .../list_section_divider_holo_custom.9.png | Bin 196 -> 0 bytes .../list_title_holo.9.png | Bin 255 -> 0 bytes .../drawable-mdpi/list_activated_holo.9.png | Bin 151 -> 0 bytes .../res/drawable-mdpi/list_focused_holo.9.png | Bin 235 -> 0 bytes .../list_longpressed_holo_light.9.png | Bin 155 -> 0 bytes .../list_pressed_holo_light.9.png | Bin 158 -> 0 bytes .../list_section_divider_holo_custom.9.png | Bin 198 -> 0 bytes .../list_activated_holo.9.png | Bin 1659 -> 0 bytes .../list_activated_holo.9.png | Bin 1005 -> 0 bytes .../list_activated_holo.9.png | Bin 2478 -> 0 bytes .../drawable-xhdpi/list_activated_holo.9.png | Bin 158 -> 0 bytes .../drawable-xhdpi/list_focused_holo.9.png | Bin 235 -> 0 bytes .../list_longpressed_holo_light.9.png | Bin 162 -> 0 bytes .../list_pressed_holo_light.9.png | Bin 163 -> 0 bytes .../list_section_divider_holo_custom.9.png | Bin 210 -> 0 bytes .../drawable-xxhdpi/list_activated_holo.9.png | Bin 1140 -> 0 bytes .../drawable-xxhdpi/list_focused_holo.9.png | Bin 1147 -> 0 bytes .../list_longpressed_holo_light.9.png | Bin 1051 -> 0 bytes .../list_pressed_holo_light.9.png | Bin 1051 -> 0 bytes .../res/drawable/ic_search_add_contact.xml | 20 - ...ector_background_transition_holo_light.xml | 20 - .../common/res/layout/dialog_call_subject.xml | 2 +- .../common/res/layout/search_bar_expanded.xml | 4 +- .../contacts/common/res/values-af/strings.xml | 2 +- .../contacts/common/res/values-am/strings.xml | 2 +- .../contacts/common/res/values-ar/strings.xml | 2 +- .../contacts/common/res/values-az/strings.xml | 2 +- .../common/res/values-b+sr+Latn/strings.xml | 2 +- .../contacts/common/res/values-be/strings.xml | 2 +- .../contacts/common/res/values-bg/strings.xml | 2 +- .../contacts/common/res/values-bn/strings.xml | 2 +- .../contacts/common/res/values-bs/strings.xml | 2 +- .../contacts/common/res/values-ca/strings.xml | 2 +- .../contacts/common/res/values-cs/strings.xml | 2 +- .../contacts/common/res/values-da/strings.xml | 2 +- .../contacts/common/res/values-de/strings.xml | 2 +- .../contacts/common/res/values-el/strings.xml | 2 +- .../common/res/values-en-rAU/strings.xml | 2 +- .../common/res/values-en-rGB/strings.xml | 2 +- .../common/res/values-en-rIN/strings.xml | 2 +- .../common/res/values-es-rUS/strings.xml | 2 +- .../contacts/common/res/values-es/strings.xml | 2 +- .../contacts/common/res/values-et/strings.xml | 2 +- .../contacts/common/res/values-eu/strings.xml | 2 +- .../contacts/common/res/values-fa/strings.xml | 2 +- .../contacts/common/res/values-fi/strings.xml | 2 +- .../common/res/values-fr-rCA/strings.xml | 2 +- .../contacts/common/res/values-fr/strings.xml | 2 +- .../contacts/common/res/values-gl/strings.xml | 2 +- .../contacts/common/res/values-gu/strings.xml | 2 +- .../contacts/common/res/values-hi/strings.xml | 2 +- .../contacts/common/res/values-hr/strings.xml | 2 +- .../contacts/common/res/values-hu/strings.xml | 2 +- .../contacts/common/res/values-hy/strings.xml | 2 +- .../contacts/common/res/values-in/strings.xml | 2 +- .../contacts/common/res/values-is/strings.xml | 2 +- .../contacts/common/res/values-it/strings.xml | 2 +- .../contacts/common/res/values-iw/strings.xml | 2 +- .../contacts/common/res/values-ja/strings.xml | 2 +- .../contacts/common/res/values-ka/strings.xml | 2 +- .../contacts/common/res/values-kk/strings.xml | 2 +- .../contacts/common/res/values-km/strings.xml | 2 +- .../contacts/common/res/values-kn/strings.xml | 2 +- .../contacts/common/res/values-ko/strings.xml | 2 +- .../contacts/common/res/values-ky/strings.xml | 2 +- .../contacts/common/res/values-lo/strings.xml | 2 +- .../contacts/common/res/values-lt/strings.xml | 2 +- .../contacts/common/res/values-lv/strings.xml | 2 +- .../contacts/common/res/values-mk/strings.xml | 2 +- .../contacts/common/res/values-ml/strings.xml | 2 +- .../contacts/common/res/values-mn/strings.xml | 2 +- .../contacts/common/res/values-mr/strings.xml | 2 +- .../contacts/common/res/values-ms/strings.xml | 2 +- .../contacts/common/res/values-my/strings.xml | 2 +- .../contacts/common/res/values-nb/strings.xml | 2 +- .../contacts/common/res/values-ne/strings.xml | 2 +- .../contacts/common/res/values-nl/strings.xml | 2 +- .../contacts/common/res/values-no/strings.xml | 2 +- .../contacts/common/res/values-pa/strings.xml | 2 +- .../contacts/common/res/values-pl/strings.xml | 2 +- .../common/res/values-pt-rBR/strings.xml | 2 +- .../common/res/values-pt-rPT/strings.xml | 2 +- .../contacts/common/res/values-pt/strings.xml | 2 +- .../contacts/common/res/values-ro/strings.xml | 2 +- .../contacts/common/res/values-ru/strings.xml | 2 +- .../contacts/common/res/values-si/strings.xml | 2 +- .../contacts/common/res/values-sk/strings.xml | 2 +- .../contacts/common/res/values-sl/strings.xml | 2 +- .../contacts/common/res/values-sq/strings.xml | 2 +- .../contacts/common/res/values-sr/strings.xml | 2 +- .../contacts/common/res/values-sv/strings.xml | 2 +- .../contacts/common/res/values-sw/strings.xml | 2 +- .../contacts/common/res/values-ta/strings.xml | 2 +- .../contacts/common/res/values-te/strings.xml | 2 +- .../contacts/common/res/values-th/strings.xml | 2 +- .../contacts/common/res/values-tl/strings.xml | 2 +- .../contacts/common/res/values-tr/strings.xml | 2 +- .../contacts/common/res/values-uk/strings.xml | 2 +- .../contacts/common/res/values-ur/strings.xml | 2 +- .../contacts/common/res/values-uz/strings.xml | 2 +- .../contacts/common/res/values-vi/strings.xml | 2 +- .../common/res/values-zh-rCN/strings.xml | 2 +- .../common/res/values-zh-rHK/strings.xml | 2 +- .../common/res/values-zh-rTW/strings.xml | 2 +- .../contacts/common/res/values-zu/strings.xml | 2 +- .../contacts/common/res/values/ids.xml | 1 + .../contacts/common/res/values/strings.xml | 6 +- .../contacts/common/res/values/styles.xml | 1 - .../common/util/AccountFilterUtil.java | 42 -- .../contacts/common/util/BitmapUtil.java | 26 - .../common/util/ContactDisplayUtils.java | 12 +- .../contacts/common/util/DateUtils.java | 241 ------- .../common/util/MaterialColorMapUtils.java | 8 - .../contacts/common/util/NameConverter.java | 242 ------- .../contacts/common/util/StopWatch.java | 28 +- .../common/util/TelephonyManagerUtils.java | 9 - .../android/dialer/about/AndroidManifest.xml | 2 +- .../com/android/dialer/about/res/raw/keep.xml | 1 - .../android/dialer/app/AndroidManifest.xml | 1 + .../android/dialer/app/DialtactsActivity.java | 69 +- .../dialer/app/SpecialCharSequenceMgr.java | 5 +- .../dialer/app/calllog/CallLogAdapter.java | 158 ++++- .../dialer/app/calllog/CallLogFragment.java | 29 +- .../calllog/CallLogListItemViewHolder.java | 82 ++- .../app/calllog/DefaultVoicemailNotifier.java | 11 +- .../dialer/app/calllog/IntentProvider.java | 9 +- .../calllog/calllogcache/CallLogCache.java | 6 +- .../calllogcache/CallLogCacheLollipop.java | 74 -- .../app/contactinfo/ContactInfoCache.java | 8 +- .../dialer/app/dialpad/DialpadFragment.java | 10 + .../app/filterednumber/NumbersAdapter.java | 5 +- .../legacybindings/DialerLegacyBindings.java | 1 + .../DialerLegacyBindingsStub.java | 2 + .../dialer/app/list/AllContactsFragment.java | 8 +- .../list/DialerPhoneNumberListAdapter.java | 33 +- .../dialer/app/list/DialerViewPager.java | 55 ++ .../dialer/app/list/ListsFragment.java | 59 +- .../dialer/app/list/OldSpeedDialFragment.java | 18 +- .../app/list/PhoneFavoriteListView.java | 19 +- .../app/list/PhoneFavoriteSquareTileView.java | 4 + .../app/list/PhoneFavoriteTileView.java | 38 +- .../app/list/PhoneFavoritesTileAdapter.java | 79 ++- .../app/list/RegularSearchFragment.java | 4 +- .../android/dialer/app/list/RemoveView.java | 2 +- .../dialer/app/list/SearchFragment.java | 4 +- .../app/list/SmartDialSearchFragment.java | 2 +- .../manifests/activities/AndroidManifest.xml | 2 +- .../res/drawable-hdpi/ic_check_mark_48dp.png | Bin 0 -> 749 bytes .../drawable-hdpi/ic_check_mark_blue_24dp.png | Bin 0 -> 408 bytes .../ic_empty_check_mark_white_24dp.png | Bin 0 -> 375 bytes .../res/drawable-hdpi/ic_results_phone.png | Bin 1084 -> 0 bytes .../res/drawable-mdpi/ic_check_mark_48dp.png | Bin 0 -> 526 bytes .../res/drawable-mdpi/ic_results_phone.png | Bin 801 -> 0 bytes .../res/drawable-xhdpi/ic_check_mark_48dp.png | Bin 0 -> 981 bytes .../res/drawable-xhdpi/ic_results_phone.png | Bin 1376 -> 0 bytes .../drawable-xxhdpi/ic_check_mark_48dp.png | Bin 0 -> 1443 bytes .../res/drawable-xxhdpi/ic_results_phone.png | Bin 2090 -> 0 bytes .../drawable-xxxhdpi/ic_check_mark_48dp.png | Bin 0 -> 1893 bytes .../res/drawable-xxxhdpi/ic_results_phone.png | Bin 2281 -> 0 bytes .../app/res/drawable/ic_search_phone.xml | 20 - .../app/res/drawable/ic_wifi_calling.xml | 29 + .../empty_content_view_dialpad_search.xml | 6 +- .../res/layout/action_mode_close_button.xml | 31 + .../app/res/layout/all_contacts_fragment.xml | 2 +- .../app/res/layout/call_log_fragment.xml | 2 +- .../app/res/layout/call_log_list_item.xml | 2 +- .../res/layout/call_log_list_item_actions.xml | 4 +- .../app/res/layout/dialpad_fragment.xml | 47 +- .../empty_content_view_dialpad_search.xml | 6 +- .../dialer/app/res/layout/lists_fragment.xml | 143 ++-- .../dialer/app/res/layout/search_edittext.xml | 2 +- .../app/res/layout/speed_dial_fragment.xml | 2 +- .../dialer/app/res/values-af/strings.xml | 12 +- .../dialer/app/res/values-am/strings.xml | 12 +- .../dialer/app/res/values-ar/strings.xml | 12 +- .../dialer/app/res/values-az/strings.xml | 12 +- .../app/res/values-b+sr+Latn/strings.xml | 12 +- .../dialer/app/res/values-be/strings.xml | 12 +- .../dialer/app/res/values-bg/strings.xml | 12 +- .../dialer/app/res/values-bn/strings.xml | 12 +- .../dialer/app/res/values-bs/strings.xml | 12 +- .../dialer/app/res/values-ca/strings.xml | 12 +- .../dialer/app/res/values-cs/strings.xml | 12 +- .../dialer/app/res/values-da/strings.xml | 12 +- .../dialer/app/res/values-de/strings.xml | 12 +- .../dialer/app/res/values-el/strings.xml | 12 +- .../dialer/app/res/values-en-rAU/strings.xml | 12 +- .../dialer/app/res/values-en-rGB/strings.xml | 12 +- .../dialer/app/res/values-en-rIN/strings.xml | 12 +- .../dialer/app/res/values-es-rUS/strings.xml | 12 +- .../dialer/app/res/values-es/strings.xml | 12 +- .../dialer/app/res/values-et/strings.xml | 12 +- .../dialer/app/res/values-eu/strings.xml | 12 +- .../dialer/app/res/values-fa/strings.xml | 12 +- .../dialer/app/res/values-fi/strings.xml | 12 +- .../dialer/app/res/values-fr-rCA/strings.xml | 12 +- .../dialer/app/res/values-fr/strings.xml | 12 +- .../dialer/app/res/values-gl/strings.xml | 12 +- .../dialer/app/res/values-gu/strings.xml | 12 +- .../dialer/app/res/values-hi/strings.xml | 12 +- .../dialer/app/res/values-hr/strings.xml | 12 +- .../dialer/app/res/values-hu/strings.xml | 12 +- .../dialer/app/res/values-hy/strings.xml | 12 +- .../dialer/app/res/values-in/strings.xml | 12 +- .../dialer/app/res/values-is/strings.xml | 12 +- .../dialer/app/res/values-it/strings.xml | 12 +- .../dialer/app/res/values-iw/strings.xml | 12 +- .../dialer/app/res/values-ja/strings.xml | 12 +- .../dialer/app/res/values-ka/strings.xml | 12 +- .../dialer/app/res/values-kk/strings.xml | 12 +- .../dialer/app/res/values-km/strings.xml | 12 +- .../dialer/app/res/values-kn/strings.xml | 12 +- .../dialer/app/res/values-ko/strings.xml | 12 +- .../dialer/app/res/values-ky/strings.xml | 12 +- .../dialer/app/res/values-lo/strings.xml | 12 +- .../dialer/app/res/values-lt/strings.xml | 12 +- .../dialer/app/res/values-lv/strings.xml | 12 +- .../dialer/app/res/values-mk/strings.xml | 12 +- .../dialer/app/res/values-ml/strings.xml | 12 +- .../dialer/app/res/values-mn/strings.xml | 12 +- .../dialer/app/res/values-mr/strings.xml | 12 +- .../dialer/app/res/values-ms/strings.xml | 12 +- .../dialer/app/res/values-my/strings.xml | 12 +- .../dialer/app/res/values-nb/strings.xml | 12 +- .../dialer/app/res/values-ne/strings.xml | 12 +- .../dialer/app/res/values-nl/strings.xml | 12 +- .../dialer/app/res/values-no/strings.xml | 12 +- .../dialer/app/res/values-pa/strings.xml | 12 +- .../dialer/app/res/values-pl/strings.xml | 12 +- .../dialer/app/res/values-pt-rBR/strings.xml | 12 +- .../dialer/app/res/values-pt-rPT/strings.xml | 12 +- .../dialer/app/res/values-pt/strings.xml | 12 +- .../dialer/app/res/values-ro/strings.xml | 12 +- .../dialer/app/res/values-ru/strings.xml | 12 +- .../dialer/app/res/values-si/strings.xml | 12 +- .../dialer/app/res/values-sk/strings.xml | 12 +- .../dialer/app/res/values-sl/strings.xml | 12 +- .../dialer/app/res/values-sq/strings.xml | 12 +- .../dialer/app/res/values-sr/strings.xml | 12 +- .../dialer/app/res/values-sv/strings.xml | 12 +- .../dialer/app/res/values-sw/strings.xml | 12 +- .../dialer/app/res/values-ta/strings.xml | 12 +- .../dialer/app/res/values-te/strings.xml | 12 +- .../dialer/app/res/values-th/strings.xml | 14 +- .../dialer/app/res/values-tl/strings.xml | 12 +- .../dialer/app/res/values-tr/strings.xml | 12 +- .../dialer/app/res/values-uk/strings.xml | 12 +- .../dialer/app/res/values-ur/strings.xml | 12 +- .../dialer/app/res/values-uz/strings.xml | 12 +- .../dialer/app/res/values-vi/strings.xml | 12 +- .../dialer/app/res/values-zh-rCN/strings.xml | 12 +- .../dialer/app/res/values-zh-rHK/strings.xml | 12 +- .../dialer/app/res/values-zh-rTW/strings.xml | 12 +- .../dialer/app/res/values-zu/strings.xml | 12 +- .../android/dialer/app/res/values/colors.xml | 4 - .../android/dialer/app/res/values/dimens.xml | 3 - .../android/dialer/app/res/values/strings.xml | 55 +- .../android/dialer/app/res/values/styles.xml | 14 +- .../dialer/app/res/xml/sound_settings.xml | 4 +- .../settings/AppCompatPreferenceActivity.java | 5 - .../app/settings/DialerSettingsActivity.java | 15 +- .../app/settings/SoundSettingsFragment.java | 10 +- .../LegacyVoicemailNotificationReceiver.java | 13 +- .../voicemail/VoicemailPlaybackPresenter.java | 4 +- .../voicemail/error/res/values-hi/strings.xml | 2 +- .../widget/DialpadSearchEmptyContentView.java | 1 + .../app/widget/SearchEditTextLayout.java | 22 +- .../binary/aosp/AospDialerRootComponent.java | 2 + .../BaseDialerRootComponent.java | 4 + .../binary/common/DialerApplication.java | 5 +- .../dialer/callcomposer/AndroidManifest.xml | 2 +- .../callcomposer/CallComposerActivity.java | 73 +- .../callcomposer/CameraComposerFragment.java | 13 +- .../callcomposer/GalleryCursorLoader.java | 4 +- .../callcomposer/MessageComposerFragment.java | 36 +- .../callcomposer/camera/CameraManager.java | 19 +- .../callcomposer/camera/ImagePersistTask.java | 38 +- .../res/layout/call_composer_activity.xml | 12 +- .../res/layout/fragment_message_composer.xml | 2 +- .../callcomposer/res/values-ca/strings.xml | 4 +- .../dialer/callcomposer/res/values/styles.xml | 2 +- .../dialer/calldetails/AndroidManifest.xml | 4 +- .../calldetails/CallDetailsActivity.java | 15 +- .../calldetails/CallDetailsAdapter.java | 14 +- .../CallDetailsHeaderViewHolder.java | 19 +- .../res/layout/contact_container.xml | 6 +- .../calldetails/res/values-af/strings.xml | 1 - .../calldetails/res/values-am/strings.xml | 1 - .../calldetails/res/values-ar/strings.xml | 1 - .../calldetails/res/values-az/strings.xml | 1 - .../res/values-b+sr+Latn/strings.xml | 1 - .../calldetails/res/values-be/strings.xml | 1 - .../calldetails/res/values-bg/strings.xml | 1 - .../calldetails/res/values-bn/strings.xml | 1 - .../calldetails/res/values-bs/strings.xml | 1 - .../calldetails/res/values-ca/strings.xml | 1 - .../calldetails/res/values-cs/strings.xml | 1 - .../calldetails/res/values-da/strings.xml | 1 - .../calldetails/res/values-de/strings.xml | 1 - .../calldetails/res/values-el/strings.xml | 1 - .../calldetails/res/values-en-rAU/strings.xml | 1 - .../calldetails/res/values-en-rGB/strings.xml | 1 - .../calldetails/res/values-en-rIN/strings.xml | 1 - .../calldetails/res/values-es-rUS/strings.xml | 1 - .../calldetails/res/values-es/strings.xml | 1 - .../calldetails/res/values-et/strings.xml | 1 - .../calldetails/res/values-eu/strings.xml | 1 - .../calldetails/res/values-fa/strings.xml | 1 - .../calldetails/res/values-fi/strings.xml | 1 - .../calldetails/res/values-fr-rCA/strings.xml | 1 - .../calldetails/res/values-fr/strings.xml | 1 - .../calldetails/res/values-gl/strings.xml | 1 - .../calldetails/res/values-gu/strings.xml | 1 - .../calldetails/res/values-hi/strings.xml | 1 - .../calldetails/res/values-hr/strings.xml | 1 - .../calldetails/res/values-hu/strings.xml | 1 - .../calldetails/res/values-hy/strings.xml | 1 - .../calldetails/res/values-in/strings.xml | 1 - .../calldetails/res/values-is/strings.xml | 1 - .../calldetails/res/values-it/strings.xml | 1 - .../calldetails/res/values-iw/strings.xml | 1 - .../calldetails/res/values-ja/strings.xml | 1 - .../calldetails/res/values-ka/strings.xml | 1 - .../calldetails/res/values-kk/strings.xml | 1 - .../calldetails/res/values-km/strings.xml | 1 - .../calldetails/res/values-kn/strings.xml | 1 - .../calldetails/res/values-ko/strings.xml | 1 - .../calldetails/res/values-ky/strings.xml | 1 - .../calldetails/res/values-lo/strings.xml | 1 - .../calldetails/res/values-lt/strings.xml | 1 - .../calldetails/res/values-lv/strings.xml | 1 - .../calldetails/res/values-mk/strings.xml | 1 - .../calldetails/res/values-ml/strings.xml | 1 - .../calldetails/res/values-mn/strings.xml | 1 - .../calldetails/res/values-mr/strings.xml | 1 - .../calldetails/res/values-ms/strings.xml | 1 - .../calldetails/res/values-my/strings.xml | 1 - .../calldetails/res/values-nb/strings.xml | 1 - .../calldetails/res/values-ne/strings.xml | 1 - .../calldetails/res/values-nl/strings.xml | 1 - .../calldetails/res/values-no/strings.xml | 1 - .../calldetails/res/values-pa/strings.xml | 1 - .../calldetails/res/values-pl/strings.xml | 1 - .../calldetails/res/values-pt-rBR/strings.xml | 1 - .../calldetails/res/values-pt-rPT/strings.xml | 1 - .../calldetails/res/values-pt/strings.xml | 1 - .../calldetails/res/values-ro/strings.xml | 1 - .../calldetails/res/values-ru/strings.xml | 1 - .../calldetails/res/values-si/strings.xml | 1 - .../calldetails/res/values-sk/strings.xml | 1 - .../calldetails/res/values-sl/strings.xml | 1 - .../calldetails/res/values-sq/strings.xml | 1 - .../calldetails/res/values-sr/strings.xml | 1 - .../calldetails/res/values-sv/strings.xml | 1 - .../calldetails/res/values-sw/strings.xml | 1 - .../calldetails/res/values-ta/strings.xml | 1 - .../calldetails/res/values-te/strings.xml | 1 - .../calldetails/res/values-th/strings.xml | 1 - .../calldetails/res/values-tl/strings.xml | 1 - .../calldetails/res/values-tr/strings.xml | 1 - .../calldetails/res/values-uk/strings.xml | 1 - .../calldetails/res/values-ur/strings.xml | 1 - .../calldetails/res/values-uz/strings.xml | 1 - .../calldetails/res/values-vi/strings.xml | 1 - .../calldetails/res/values-zh-rCN/strings.xml | 1 - .../calldetails/res/values-zh-rHK/strings.xml | 1 - .../calldetails/res/values-zh-rTW/strings.xml | 1 - .../calldetails/res/values-zu/strings.xml | 1 - .../dialer/calldetails/res/values/dimens.xml | 2 - .../dialer/calldetails/res/values/strings.xml | 4 - .../dialer/calldetails/res/values/styles.xml | 18 - .../callintent/call_specific_app_data.proto | 4 + .../callintent/speed_dial_contact_type.proto | 18 + .../dialer/calllog/CallLogComponent.java | 2 + .../dialer/calllog/CallLogFramework.java | 3 +- .../android/dialer/calllog/CallLogModule.java | 8 +- .../RefreshAnnotatedCallLogWorker.java | 113 ++- .../calllog/database/AndroidManifest.xml | 28 + .../calllog/database/AnnotatedCallLog.java | 53 -- .../AnnotatedCallLogContentProvider.java | 310 ++++++++ .../AnnotatedCallLogDatabaseHelper.java | 17 +- .../database/CallLogDatabaseComponent.java | 40 ++ .../calllog/database/CallLogMutations.java | 58 -- .../dialer/calllog/database/Coalescer.java | 142 ++++ .../calllog/database/MutationApplier.java | 105 +++ .../contract/AnnotatedCallLogContract.java | 114 +++ .../datasources/CallLogDataSource.java | 67 +- .../calllog/datasources/CallLogMutations.java | 110 +++ .../{ => datasources}/DataSources.java | 5 +- .../contacts/ContactsDataSource.java | 22 +- .../SystemCallLogDataSource.java | 209 +++++- .../calllog/datasources/util/RowCombiner.java | 53 ++ .../testing/FakeCallLogApplication.java | 39 + .../dialer/calllog/ui/AndroidManifest.xml | 2 +- .../ui/AnnotatedCallLogCursorLoader.java | 48 -- .../dialer/calllog/ui/NewCallLogAdapter.java | 53 ++ .../dialer/calllog/ui/NewCallLogFragment.java | 93 +-- .../calllog/ui/NewCallLogViewHolder.java | 43 ++ .../ui/res/layout/new_call_log_entry.xml | 16 +- .../ui/res/layout/new_call_log_fragment.xml | 7 +- java/com/android/dialer/common/Assert.java | 4 - .../concurrent/DialerExecutorComponent.java | 39 + .../concurrent/DialerExecutorModule.java} | 18 +- .../android/dialer/compat/CompatUtils.java | 155 ---- .../android/dialer/constants/Constants.java | 3 + .../dialer/constants/ScheduledJobIds.java | 1 + .../constants}/TrafficStatsTags.java | 17 +- .../constants/aospdialer/ConstantsImpl.java | 6 + .../dialer/contactactions/AndroidManifest.xml | 16 + .../ContactActionBottomSheet.java | 136 ++++ .../contactactions/ContactActionModule.java | 38 + .../dialer/contactactions/DividerModule.java | 41 ++ .../dialer/contactactions/IntentModule.java | 75 ++ .../res/layout/contact_layout.xml | 53 ++ .../res/layout/divider_layout.xml | 23 + .../res/layout/module_layout.xml | 40 ++ .../res/layout/sheet_layout.xml | 24 + .../contactactions/res/values/dimens.xml} | 10 +- .../contactsfragment/ContactViewHolder.java | 11 + .../contactsfragment/ContactsAdapter.java | 49 +- .../ContactsCursorLoader.java | 27 +- .../contactsfragment/ContactsFragment.java | 138 +++- .../dialer/contactsfragment/FastScroller.java | 129 ++++ .../fast_scroller_container_background.xml | 28 + .../res/drawable/fast_scroller_scroll_bar.xml | 32 + .../res/layout/contact_row.xml | 6 +- .../res/layout/fragment_contacts.xml | 40 +- .../contactsfragment/res/values/dimens.xml | 9 +- .../dialer/database/DialerDatabaseHelper.java | 357 +++++----- .../dialer_contact.proto} | 4 +- .../dialer/dialpadview/res/values/dimens.xml | 2 +- .../interactions/PhoneNumberInteraction.java | 9 + .../dialer/location/CountryDetector.java | 6 +- .../dialer/logging/LoggingBindings.java | 18 +- .../dialer/logging/LoggingBindingsStub.java | 17 + .../logging/contact_lookup_result.proto | 1 + .../dialer/logging/contact_source.proto | 1 + .../dialer/logging/dialer_impression.proto | 19 +- .../dialer/logging/interaction_event.proto | 20 + .../dialer/logging/reporting_location.proto | 1 + .../android/dialer/logging/screen_event.proto | 1 + .../dialer/multimedia/MultimediaData.java | 6 + .../dialer/oem/CequintCallerIdManager.java | 98 +-- .../oem/MotorolaHiddenMenuKeySequence.java | 4 +- .../com/android/dialer/oem/MotorolaUtils.java | 25 + .../values-mcc310-mnc000/motorola_config.xml | 17 +- .../values-mcc310-mnc120/motorola_config.xml | 17 +- .../values-mcc311-mnc490/motorola_config.xml | 17 +- .../values-mcc311-mnc870/motorola_config.xml | 17 +- .../values-mcc312-mnc530/motorola_config.xml | 17 +- .../values-mcc316-mnc010/motorola_config.xml | 17 +- .../dialer/oem/res/values/motorola_config.xml | 19 +- .../dialer/phonenumbercache/ContactInfo.java | 4 +- .../phonenumbercache/ContactInfoHelper.java | 8 +- .../dialer/postcall/AndroidManifest.xml | 2 +- .../com/android/dialer/postcall/PostCall.java | 16 +- .../android/dialer/protos/ProtoParsers.java | 125 +--- .../dialer/searchfragment/AndroidManifest.xml | 16 + .../searchfragment/NewSearchFragment.java | 83 +++ .../dialer/searchfragment/QueryUtil.java | 269 +++++++ .../android/dialer/searchfragment/README.md | 62 ++ .../dialer/searchfragment/SearchAdapter.java | 84 +++ .../searchfragment/SearchContactCursor.java | 390 ++++++++++ .../SearchContactViewHolder.java | 203 ++++++ .../SearchContactsCursorLoader.java | 57 ++ .../searchfragment/SearchCursorManager.java | 229 ++++++ .../res/layout/fragment_search.xml | 21 + .../res/layout/search_contact_row.xml | 75 ++ .../searchfragment/res/values/dimens.xml | 23 + .../dialer/shortcuts/AndroidManifest.xml | 2 +- .../android/dialer/telecom/TelecomUtil.java | 80 ++- .../dialer/theme/res/values-af/strings.xml | 2 + .../dialer/theme/res/values-am/strings.xml | 2 + .../dialer/theme/res/values-ar/strings.xml | 2 + .../dialer/theme/res/values-az/strings.xml | 2 + .../theme/res/values-b+sr+Latn/strings.xml | 2 + .../dialer/theme/res/values-be/strings.xml | 2 + .../dialer/theme/res/values-bg/strings.xml | 2 + .../dialer/theme/res/values-bn/strings.xml | 2 + .../dialer/theme/res/values-bs/strings.xml | 2 + .../dialer/theme/res/values-ca/strings.xml | 2 + .../dialer/theme/res/values-cs/strings.xml | 2 + .../dialer/theme/res/values-da/strings.xml | 2 + .../dialer/theme/res/values-de/strings.xml | 2 + .../dialer/theme/res/values-el/strings.xml | 2 + .../theme/res/values-en-rAU/strings.xml | 2 + .../theme/res/values-en-rGB/strings.xml | 2 + .../theme/res/values-en-rIN/strings.xml | 2 + .../theme/res/values-es-rUS/strings.xml | 2 + .../dialer/theme/res/values-es/strings.xml | 2 + .../dialer/theme/res/values-et/strings.xml | 2 + .../dialer/theme/res/values-eu/strings.xml | 2 + .../dialer/theme/res/values-fa/strings.xml | 2 + .../dialer/theme/res/values-fi/strings.xml | 2 + .../theme/res/values-fr-rCA/strings.xml | 2 + .../dialer/theme/res/values-fr/strings.xml | 2 + .../dialer/theme/res/values-gl/strings.xml | 2 + .../dialer/theme/res/values-gu/strings.xml | 2 + .../dialer/theme/res/values-hi/strings.xml | 2 + .../dialer/theme/res/values-hr/strings.xml | 2 + .../dialer/theme/res/values-hu/strings.xml | 2 + .../dialer/theme/res/values-hy/strings.xml | 2 + .../dialer/theme/res/values-in/strings.xml | 2 + .../dialer/theme/res/values-is/strings.xml | 2 + .../dialer/theme/res/values-it/strings.xml | 2 + .../dialer/theme/res/values-iw/strings.xml | 2 + .../dialer/theme/res/values-ja/strings.xml | 2 + .../dialer/theme/res/values-ka/strings.xml | 2 + .../dialer/theme/res/values-kk/strings.xml | 2 + .../dialer/theme/res/values-km/strings.xml | 2 + .../dialer/theme/res/values-kn/strings.xml | 2 + .../dialer/theme/res/values-ko/strings.xml | 2 + .../dialer/theme/res/values-ky/strings.xml | 2 + .../dialer/theme/res/values-lo/strings.xml | 2 + .../dialer/theme/res/values-lt/strings.xml | 2 + .../dialer/theme/res/values-lv/strings.xml | 2 + .../dialer/theme/res/values-mk/strings.xml | 2 + .../dialer/theme/res/values-ml/strings.xml | 2 + .../dialer/theme/res/values-mn/strings.xml | 2 + .../dialer/theme/res/values-mr/strings.xml | 2 + .../dialer/theme/res/values-ms/strings.xml | 2 + .../dialer/theme/res/values-my/strings.xml | 2 + .../dialer/theme/res/values-nb/strings.xml | 2 + .../dialer/theme/res/values-ne/strings.xml | 2 + .../dialer/theme/res/values-nl/strings.xml | 2 + .../dialer/theme/res/values-no/strings.xml | 2 + .../dialer/theme/res/values-pa/strings.xml | 2 + .../dialer/theme/res/values-pl/strings.xml | 2 + .../theme/res/values-pt-rBR/strings.xml | 2 + .../theme/res/values-pt-rPT/strings.xml | 2 + .../dialer/theme/res/values-pt/strings.xml | 2 + .../dialer/theme/res/values-ro/strings.xml | 2 + .../dialer/theme/res/values-ru/strings.xml | 2 + .../dialer/theme/res/values-si/strings.xml | 2 + .../dialer/theme/res/values-sk/strings.xml | 2 + .../dialer/theme/res/values-sl/strings.xml | 2 + .../dialer/theme/res/values-sq/strings.xml | 2 + .../dialer/theme/res/values-sr/strings.xml | 2 + .../dialer/theme/res/values-sv/strings.xml | 2 + .../dialer/theme/res/values-sw/strings.xml | 2 + .../dialer/theme/res/values-ta/strings.xml | 2 + .../dialer/theme/res/values-te/strings.xml | 2 + .../dialer/theme/res/values-th/strings.xml | 2 + .../dialer/theme/res/values-tl/strings.xml | 2 + .../dialer/theme/res/values-tr/strings.xml | 2 + .../dialer/theme/res/values-uk/strings.xml | 2 + .../dialer/theme/res/values-ur/strings.xml | 2 + .../dialer/theme/res/values-uz/strings.xml | 2 + .../dialer/theme/res/values-vi/strings.xml | 2 + .../theme/res/values-zh-rCN/strings.xml | 2 + .../theme/res/values-zh-rHK/strings.xml | 2 + .../theme/res/values-zh-rTW/strings.xml | 2 + .../dialer/theme/res/values-zu/strings.xml | 2 + .../dialer/theme/res/values/strings.xml | 6 + .../dialer/theme/res/values/themes.xml | 43 ++ java/com/android/dialer/util/CallUtil.java | 22 +- .../android/dialer/util/PermissionsUtil.java | 8 +- .../android/dialer/widget/DialerToolbar.java | 5 + .../{app => }/widget/EmptyContentView.java | 20 +- .../dialer/widget/MessageFragment.java | 29 +- .../res/drawable-hdpi/empty_contacts.png | Bin .../res/drawable-mdpi/empty_contacts.png | Bin .../res/drawable-xhdpi/empty_contacts.png | Bin .../res/drawable-xxhdpi/empty_contacts.png | Bin .../res/drawable-xxxhdpi/empty_contacts.png | Bin .../widget/res/layout/dialer_toolbar.xml | 8 +- .../res/layout/empty_content_view.xml | 6 +- .../widget/res/layout/fragment_message.xml | 4 +- .../dialer/widget/res/values-af/strings.xml | 5 + .../dialer/widget/res/values-am/strings.xml | 5 + .../dialer/widget/res/values-ar/strings.xml | 5 + .../dialer/widget/res/values-az/strings.xml | 5 + .../widget/res/values-b+sr+Latn/strings.xml | 5 + .../dialer/widget/res/values-be/strings.xml | 5 + .../dialer/widget/res/values-bg/strings.xml | 5 + .../dialer/widget/res/values-bn/strings.xml | 5 + .../dialer/widget/res/values-bs/strings.xml | 5 + .../dialer/widget/res/values-ca/strings.xml | 5 + .../dialer/widget/res/values-cs/strings.xml | 5 + .../dialer/widget/res/values-da/strings.xml | 5 + .../dialer/widget/res/values-de/strings.xml | 5 + .../dialer/widget/res/values-el/strings.xml | 5 + .../widget/res/values-en-rAU/strings.xml | 5 + .../widget/res/values-en-rGB/strings.xml | 5 + .../widget/res/values-en-rIN/strings.xml | 5 + .../widget/res/values-es-rUS/strings.xml | 5 + .../dialer/widget/res/values-es/strings.xml | 5 + .../dialer/widget/res/values-et/strings.xml | 5 + .../dialer/widget/res/values-eu/strings.xml | 5 + .../dialer/widget/res/values-fa/strings.xml | 5 + .../dialer/widget/res/values-fi/strings.xml | 5 + .../widget/res/values-fr-rCA/strings.xml | 5 + .../dialer/widget/res/values-fr/strings.xml | 5 + .../dialer/widget/res/values-gl/strings.xml | 5 + .../dialer/widget/res/values-gu/strings.xml | 5 + .../dialer/widget/res/values-hi/strings.xml | 5 + .../dialer/widget/res/values-hr/strings.xml | 5 + .../dialer/widget/res/values-hu/strings.xml | 5 + .../dialer/widget/res/values-hy/strings.xml | 5 + .../dialer/widget/res/values-in/strings.xml | 5 + .../dialer/widget/res/values-is/strings.xml | 5 + .../dialer/widget/res/values-it/strings.xml | 5 + .../dialer/widget/res/values-iw/strings.xml | 5 + .../dialer/widget/res/values-ja/strings.xml | 5 + .../dialer/widget/res/values-ka/strings.xml | 5 + .../dialer/widget/res/values-kk/strings.xml | 5 + .../dialer/widget/res/values-km/strings.xml | 5 + .../dialer/widget/res/values-kn/strings.xml | 5 + .../dialer/widget/res/values-ko/strings.xml | 5 + .../dialer/widget/res/values-ky/strings.xml | 5 + .../dialer/widget/res/values-lo/strings.xml | 5 + .../dialer/widget/res/values-lt/strings.xml | 5 + .../dialer/widget/res/values-lv/strings.xml | 5 + .../dialer/widget/res/values-mk/strings.xml | 5 + .../dialer/widget/res/values-ml/strings.xml | 5 + .../dialer/widget/res/values-mn/strings.xml | 5 + .../dialer/widget/res/values-mr/strings.xml | 5 + .../dialer/widget/res/values-ms/strings.xml | 5 + .../dialer/widget/res/values-my/strings.xml | 5 + .../dialer/widget/res/values-nb/strings.xml | 5 + .../dialer/widget/res/values-ne/strings.xml | 5 + .../dialer/widget/res/values-nl/strings.xml | 5 + .../dialer/widget/res/values-no/strings.xml | 5 + .../dialer/widget/res/values-pa/strings.xml | 5 + .../dialer/widget/res/values-pl/strings.xml | 5 + .../widget/res/values-pt-rBR/strings.xml | 5 + .../widget/res/values-pt-rPT/strings.xml | 5 + .../dialer/widget/res/values-pt/strings.xml | 5 + .../dialer/widget/res/values-ro/strings.xml | 5 + .../dialer/widget/res/values-ru/strings.xml | 5 + .../dialer/widget/res/values-si/strings.xml | 5 + .../dialer/widget/res/values-sk/strings.xml | 5 + .../dialer/widget/res/values-sl/strings.xml | 5 + .../dialer/widget/res/values-sq/strings.xml | 5 + .../dialer/widget/res/values-sr/strings.xml | 5 + .../dialer/widget/res/values-sv/strings.xml | 5 + .../dialer/widget/res/values-sw/strings.xml | 5 + .../dialer/widget/res/values-ta/strings.xml | 5 + .../dialer/widget/res/values-te/strings.xml | 5 + .../dialer/widget/res/values-th/strings.xml | 5 + .../dialer/widget/res/values-tl/strings.xml | 5 + .../dialer/widget/res/values-tr/strings.xml | 5 + .../dialer/widget/res/values-uk/strings.xml | 5 + .../dialer/widget/res/values-ur/strings.xml | 5 + .../dialer/widget/res/values-uz/strings.xml | 5 + .../dialer/widget/res/values-vi/strings.xml | 5 + .../widget/res/values-zh-rCN/strings.xml | 5 + .../widget/res/values-zh-rHK/strings.xml | 5 + .../widget/res/values-zh-rTW/strings.xml | 5 + .../dialer/widget/res/values-zu/strings.xml | 5 + .../dialer/widget/res/values/colors.xml | 4 + .../dialer/widget/res/values/dimens.xml | 5 + .../dialer/widget/res/values/strings.xml | 15 + .../dialershared/bubble/AndroidManifest.xml | 22 + .../android/dialershared/bubble/Bubble.java | 667 ++++++++++++++++++ .../dialershared/bubble/BubbleInfo.java | 116 +++ .../bubble/ChangeOnScreenBounds.java | 166 +++++ .../bubble/CheckableImageButton.java | 101 +++ .../dialershared/bubble/MoveHandler.java | 250 +++++++ .../dialershared/bubble/WindowRoot.java | 55 ++ .../res/color/bubble_checkable_mask.xml} | 11 +- .../res/color/bubble_icon_tint_states.xml} | 11 +- .../drawable/bubble_background_pill_ltr.xml | 23 + .../drawable/bubble_background_pill_rtl.xml | 23 + .../bubble_ripple_checkable_circle.xml | 30 + .../res/drawable/bubble_ripple_circle.xml} | 16 +- .../bubble/res/layout/bubble_base.xml | 116 +++ .../bubble/res/values/colors.xml} | 9 +- .../dialershared/bubble/res/values/values.xml | 27 + java/com/android/incallui/AndroidManifest.xml | 110 +-- .../incallui/AnswerScreenPresenter.java | 20 + .../incallui/AnswerScreenPresenterStub.java | 6 + .../incallui/AudioRouteSelectorActivity.java | 47 ++ .../android/incallui/CallButtonPresenter.java | 31 +- .../android/incallui/CallCardPresenter.java | 88 +-- .../com/android/incallui/CallerInfoUtils.java | 7 + .../android/incallui/ContactInfoCache.java | 27 +- .../incallui/ExternalCallNotifier.java | 9 +- java/com/android/incallui/InCallActivity.java | 11 +- .../com/android/incallui/InCallPresenter.java | 5 +- .../android/incallui/InCallServiceImpl.java | 10 + .../incallui/ReturnToCallActionReceiver.java | 132 ++++ .../incallui/ReturnToCallController.java | 204 ++++++ .../android/incallui/StatusBarNotifier.java | 55 +- .../incallui/answer/impl/AnswerFragment.java | 4 +- .../incallui/answer/impl/PillDrawable.java | 43 -- .../res/layout/swipe_up_down_method.xml | 3 + .../answer/impl/hint/AnswerHintFactory.java | 32 +- .../answer/impl/hint/PawImageLoaderImpl.java | 25 +- .../impl/hint/PawSecretCodeListener.java | 47 +- .../answer/impl/res/values-af/strings.xml | 18 +- .../answer/impl/res/values-am/strings.xml | 18 +- .../answer/impl/res/values-ar/strings.xml | 18 +- .../answer/impl/res/values-az/strings.xml | 18 +- .../impl/res/values-b+sr+Latn/strings.xml | 18 +- .../answer/impl/res/values-be/strings.xml | 18 +- .../answer/impl/res/values-bg/strings.xml | 18 +- .../answer/impl/res/values-bn/strings.xml | 18 +- .../answer/impl/res/values-bs/strings.xml | 18 +- .../answer/impl/res/values-ca/strings.xml | 18 +- .../answer/impl/res/values-cs/strings.xml | 18 +- .../answer/impl/res/values-da/strings.xml | 18 +- .../answer/impl/res/values-de/strings.xml | 18 +- .../answer/impl/res/values-el/strings.xml | 18 +- .../answer/impl/res/values-en-rAU/strings.xml | 18 +- .../answer/impl/res/values-en-rGB/strings.xml | 18 +- .../answer/impl/res/values-en-rIN/strings.xml | 18 +- .../answer/impl/res/values-es-rUS/strings.xml | 18 +- .../answer/impl/res/values-es/strings.xml | 18 +- .../answer/impl/res/values-et/strings.xml | 18 +- .../answer/impl/res/values-eu/strings.xml | 18 +- .../answer/impl/res/values-fa/strings.xml | 18 +- .../answer/impl/res/values-fi/strings.xml | 18 +- .../answer/impl/res/values-fr-rCA/strings.xml | 18 +- .../answer/impl/res/values-fr/strings.xml | 18 +- .../answer/impl/res/values-gl/strings.xml | 18 +- .../answer/impl/res/values-gu/strings.xml | 18 +- .../answer/impl/res/values-hi/strings.xml | 18 +- .../answer/impl/res/values-hr/strings.xml | 18 +- .../answer/impl/res/values-hu/strings.xml | 18 +- .../answer/impl/res/values-hy/strings.xml | 18 +- .../answer/impl/res/values-in/strings.xml | 18 +- .../answer/impl/res/values-is/strings.xml | 18 +- .../answer/impl/res/values-it/strings.xml | 18 +- .../answer/impl/res/values-iw/strings.xml | 18 +- .../answer/impl/res/values-ja/strings.xml | 18 +- .../answer/impl/res/values-ka/strings.xml | 18 +- .../answer/impl/res/values-kk/strings.xml | 18 +- .../answer/impl/res/values-km/strings.xml | 18 +- .../answer/impl/res/values-kn/strings.xml | 18 +- .../answer/impl/res/values-ko/strings.xml | 18 +- .../answer/impl/res/values-ky/strings.xml | 18 +- .../answer/impl/res/values-lo/strings.xml | 18 +- .../answer/impl/res/values-lt/strings.xml | 18 +- .../answer/impl/res/values-lv/strings.xml | 18 +- .../answer/impl/res/values-mk/strings.xml | 18 +- .../answer/impl/res/values-ml/strings.xml | 18 +- .../answer/impl/res/values-mn/strings.xml | 18 +- .../answer/impl/res/values-mr/strings.xml | 18 +- .../answer/impl/res/values-ms/strings.xml | 18 +- .../answer/impl/res/values-my/strings.xml | 18 +- .../answer/impl/res/values-nb/strings.xml | 18 +- .../answer/impl/res/values-ne/strings.xml | 18 +- .../answer/impl/res/values-nl/strings.xml | 18 +- .../answer/impl/res/values-no/strings.xml | 18 +- .../answer/impl/res/values-pa/strings.xml | 18 +- .../answer/impl/res/values-pl/strings.xml | 18 +- .../answer/impl/res/values-pt-rBR/strings.xml | 18 +- .../answer/impl/res/values-pt-rPT/strings.xml | 18 +- .../answer/impl/res/values-pt/strings.xml | 18 +- .../answer/impl/res/values-ro/strings.xml | 18 +- .../answer/impl/res/values-ru/strings.xml | 18 +- .../answer/impl/res/values-si/strings.xml | 18 +- .../answer/impl/res/values-sk/strings.xml | 18 +- .../answer/impl/res/values-sl/strings.xml | 18 +- .../answer/impl/res/values-sq/strings.xml | 18 +- .../answer/impl/res/values-sr/strings.xml | 18 +- .../answer/impl/res/values-sv/strings.xml | 18 +- .../answer/impl/res/values-sw/strings.xml | 18 +- .../answer/impl/res/values-ta/strings.xml | 18 +- .../answer/impl/res/values-te/strings.xml | 18 +- .../answer/impl/res/values-th/strings.xml | 18 +- .../answer/impl/res/values-tl/strings.xml | 18 +- .../answer/impl/res/values-tr/strings.xml | 18 +- .../answer/impl/res/values-uk/strings.xml | 18 +- .../answer/impl/res/values-ur/strings.xml | 18 +- .../answer/impl/res/values-uz/strings.xml | 18 +- .../answer/impl/res/values-vi/strings.xml | 18 +- .../answer/impl/res/values-zh-rCN/strings.xml | 18 +- .../answer/impl/res/values-zh-rHK/strings.xml | 18 +- .../answer/impl/res/values-zh-rTW/strings.xml | 18 +- .../answer/impl/res/values-zu/strings.xml | 18 +- .../answer/impl/res/values/strings.xml | 17 +- .../answer/protocol/AnswerScreenDelegate.java | 4 + .../AnswerProximitySensor.java | 3 + .../AudioRouteSelectorDialogFragment.java | 11 + .../incallui/bindings/InCallUiBindings.java | 9 - .../bindings/InCallUiBindingsStub.java | 38 - java/com/android/incallui/call/CallList.java | 13 + .../com/android/incallui/call/DialerCall.java | 105 ++- .../incallui/call/DialerCallListener.java | 2 + .../android/incallui/call/TelecomAdapter.java | 8 +- .../impl/DownloadMapImageTask.java | 1 + .../calllocation/impl/LocationHelper.java | 7 + .../calllocation/impl/ReverseGeocodeTask.java | 1 + .../commontheme/res/anim/blinking.xml | 10 - .../ic_phone_audio_white_36dp.png | Bin 1010 -> 0 bytes .../ic_phone_audio_white_36dp.png | Bin 682 -> 0 bytes .../ic_phone_audio_white_36dp.png | Bin 1362 -> 0 bytes .../ic_phone_audio_white_36dp.png | Bin 2259 -> 0 bytes .../ic_phone_audio_white_36dp.png | Bin 3156 -> 0 bytes .../commontheme/res/values-af/strings.xml | 18 + .../commontheme/res/values-am/strings.xml | 18 + .../commontheme/res/values-ar/strings.xml | 18 + .../commontheme/res/values-az/strings.xml | 18 + .../res/values-b+sr+Latn/strings.xml | 18 + .../commontheme/res/values-be/strings.xml | 18 + .../commontheme/res/values-bg/strings.xml | 18 + .../commontheme/res/values-bn/strings.xml | 18 + .../commontheme/res/values-bs/strings.xml | 18 + .../commontheme/res/values-ca/strings.xml | 18 + .../commontheme/res/values-cs/strings.xml | 18 + .../commontheme/res/values-da/strings.xml | 18 + .../commontheme/res/values-de/strings.xml | 18 + .../commontheme/res/values-el/strings.xml | 18 + .../commontheme/res/values-en-rAU/strings.xml | 18 + .../commontheme/res/values-en-rGB/strings.xml | 18 + .../commontheme/res/values-en-rIN/strings.xml | 18 + .../commontheme/res/values-es-rUS/strings.xml | 18 + .../commontheme/res/values-es/strings.xml | 18 + .../commontheme/res/values-et/strings.xml | 18 + .../commontheme/res/values-eu/strings.xml | 18 + .../commontheme/res/values-fa/strings.xml | 18 + .../commontheme/res/values-fi/strings.xml | 18 + .../commontheme/res/values-fr-rCA/strings.xml | 18 + .../commontheme/res/values-fr/strings.xml | 18 + .../commontheme/res/values-gl/strings.xml | 18 + .../commontheme/res/values-gu/strings.xml | 18 + .../commontheme/res/values-hi/strings.xml | 18 + .../commontheme/res/values-hr/strings.xml | 18 + .../commontheme/res/values-hu/strings.xml | 18 + .../commontheme/res/values-hy/strings.xml | 18 + .../commontheme/res/values-in/strings.xml | 18 + .../commontheme/res/values-is/strings.xml | 18 + .../commontheme/res/values-it/strings.xml | 18 + .../commontheme/res/values-iw/strings.xml | 18 + .../commontheme/res/values-ja/strings.xml | 18 + .../commontheme/res/values-ka/strings.xml | 18 + .../commontheme/res/values-kk/strings.xml | 18 + .../commontheme/res/values-km/strings.xml | 18 + .../commontheme/res/values-kn/strings.xml | 18 + .../commontheme/res/values-ko/strings.xml | 18 + .../commontheme/res/values-ky/strings.xml | 18 + .../commontheme/res/values-lo/strings.xml | 18 + .../commontheme/res/values-lt/strings.xml | 18 + .../commontheme/res/values-lv/strings.xml | 18 + .../commontheme/res/values-mk/strings.xml | 18 + .../commontheme/res/values-ml/strings.xml | 18 + .../commontheme/res/values-mn/strings.xml | 18 + .../commontheme/res/values-mr/strings.xml | 18 + .../commontheme/res/values-ms/strings.xml | 18 + .../commontheme/res/values-my/strings.xml | 18 + .../commontheme/res/values-nb/strings.xml | 18 + .../commontheme/res/values-ne/strings.xml | 18 + .../commontheme/res/values-nl/strings.xml | 18 + .../commontheme/res/values-no/strings.xml | 18 + .../commontheme/res/values-pa/strings.xml | 18 + .../commontheme/res/values-pl/strings.xml | 18 + .../commontheme/res/values-pt-rBR/strings.xml | 18 + .../commontheme/res/values-pt-rPT/strings.xml | 18 + .../commontheme/res/values-pt/strings.xml | 18 + .../commontheme/res/values-ro/strings.xml | 18 + .../commontheme/res/values-ru/strings.xml | 18 + .../commontheme/res/values-si/strings.xml | 18 + .../commontheme/res/values-sk/strings.xml | 18 + .../commontheme/res/values-sl/strings.xml | 18 + .../commontheme/res/values-sq/strings.xml | 18 + .../commontheme/res/values-sr/strings.xml | 18 + .../commontheme/res/values-sv/strings.xml | 18 + .../commontheme/res/values-sw/strings.xml | 18 + .../commontheme/res/values-ta/strings.xml | 18 + .../commontheme/res/values-te/strings.xml | 18 + .../commontheme/res/values-th/strings.xml | 18 + .../commontheme/res/values-tl/strings.xml | 18 + .../commontheme/res/values-tr/strings.xml | 18 + .../commontheme/res/values-uk/strings.xml | 18 + .../commontheme/res/values-ur/strings.xml | 18 + .../commontheme/res/values-uz/strings.xml | 18 + .../commontheme/res/values-vi/strings.xml | 18 + .../commontheme/res/values-zh-rCN/strings.xml | 18 + .../commontheme/res/values-zh-rHK/strings.xml | 18 + .../commontheme/res/values-zh-rTW/strings.xml | 18 + .../commontheme/res/values-zu/strings.xml | 18 + .../commontheme/res/values/strings.xml | 22 + .../incallui/contactgrid/BottomRow.java | 3 +- .../contactgrid/ContactGridManager.java | 50 +- .../android/incallui/contactgrid/TopRow.java | 52 +- .../contactgrid/res/values-af/strings.xml | 18 + .../contactgrid/res/values-am/strings.xml | 18 + .../contactgrid/res/values-ar/strings.xml | 18 + .../contactgrid/res/values-az/strings.xml | 18 + .../res/values-b+sr+Latn/strings.xml | 18 + .../contactgrid/res/values-be/strings.xml | 18 + .../contactgrid/res/values-bg/strings.xml | 18 + .../contactgrid/res/values-bn/strings.xml | 18 + .../contactgrid/res/values-bs/strings.xml | 18 + .../contactgrid/res/values-ca/strings.xml | 18 + .../contactgrid/res/values-cs/strings.xml | 18 + .../contactgrid/res/values-da/strings.xml | 18 + .../contactgrid/res/values-de/strings.xml | 18 + .../contactgrid/res/values-el/strings.xml | 18 + .../contactgrid/res/values-en-rAU/strings.xml | 18 + .../contactgrid/res/values-en-rGB/strings.xml | 18 + .../contactgrid/res/values-en-rIN/strings.xml | 18 + .../contactgrid/res/values-es-rUS/strings.xml | 18 + .../contactgrid/res/values-es/strings.xml | 18 + .../contactgrid/res/values-et/strings.xml | 18 + .../contactgrid/res/values-eu/strings.xml | 18 + .../contactgrid/res/values-fa/strings.xml | 18 + .../contactgrid/res/values-fi/strings.xml | 18 + .../contactgrid/res/values-fr-rCA/strings.xml | 18 + .../contactgrid/res/values-fr/strings.xml | 18 + .../contactgrid/res/values-gl/strings.xml | 18 + .../contactgrid/res/values-gu/strings.xml | 18 + .../contactgrid/res/values-hi/strings.xml | 18 + .../contactgrid/res/values-hr/strings.xml | 18 + .../contactgrid/res/values-hu/strings.xml | 18 + .../contactgrid/res/values-hy/strings.xml | 18 + .../contactgrid/res/values-in/strings.xml | 18 + .../contactgrid/res/values-is/strings.xml | 18 + .../contactgrid/res/values-it/strings.xml | 18 + .../contactgrid/res/values-iw/strings.xml | 18 + .../contactgrid/res/values-ja/strings.xml | 18 + .../contactgrid/res/values-ka/strings.xml | 18 + .../contactgrid/res/values-kk/strings.xml | 18 + .../contactgrid/res/values-km/strings.xml | 18 + .../contactgrid/res/values-kn/strings.xml | 18 + .../contactgrid/res/values-ko/strings.xml | 18 + .../contactgrid/res/values-ky/strings.xml | 18 + .../contactgrid/res/values-lo/strings.xml | 18 + .../contactgrid/res/values-lt/strings.xml | 18 + .../contactgrid/res/values-lv/strings.xml | 18 + .../contactgrid/res/values-mk/strings.xml | 18 + .../contactgrid/res/values-ml/strings.xml | 18 + .../contactgrid/res/values-mn/strings.xml | 18 + .../contactgrid/res/values-mr/strings.xml | 18 + .../contactgrid/res/values-ms/strings.xml | 18 + .../contactgrid/res/values-my/strings.xml | 18 + .../contactgrid/res/values-nb/strings.xml | 18 + .../contactgrid/res/values-ne/strings.xml | 18 + .../contactgrid/res/values-nl/strings.xml | 18 + .../contactgrid/res/values-no/strings.xml | 18 + .../contactgrid/res/values-pa/strings.xml | 18 + .../contactgrid/res/values-pl/strings.xml | 18 + .../contactgrid/res/values-pt-rBR/strings.xml | 18 + .../contactgrid/res/values-pt-rPT/strings.xml | 18 + .../contactgrid/res/values-pt/strings.xml | 18 + .../contactgrid/res/values-ro/strings.xml | 18 + .../contactgrid/res/values-ru/strings.xml | 18 + .../contactgrid/res/values-si/strings.xml | 18 + .../contactgrid/res/values-sk/strings.xml | 18 + .../contactgrid/res/values-sl/strings.xml | 18 + .../contactgrid/res/values-sq/strings.xml | 18 + .../contactgrid/res/values-sr/strings.xml | 18 + .../contactgrid/res/values-sv/strings.xml | 18 + .../contactgrid/res/values-sw/strings.xml | 18 + .../contactgrid/res/values-ta/strings.xml | 18 + .../contactgrid/res/values-te/strings.xml | 18 + .../contactgrid/res/values-th/strings.xml | 18 + .../contactgrid/res/values-tl/strings.xml | 18 + .../contactgrid/res/values-tr/strings.xml | 18 + .../contactgrid/res/values-uk/strings.xml | 18 + .../contactgrid/res/values-ur/strings.xml | 18 + .../contactgrid/res/values-uz/strings.xml | 18 + .../contactgrid/res/values-vi/strings.xml | 18 + .../contactgrid/res/values-zh-rCN/strings.xml | 18 + .../contactgrid/res/values-zh-rHK/strings.xml | 18 + .../contactgrid/res/values-zh-rTW/strings.xml | 18 + .../contactgrid/res/values-zu/strings.xml | 18 + .../contactgrid/res/values/strings.xml | 21 + .../incall/impl/ButtonChooserFactory.java | 15 +- .../incall/impl/ButtonController.java | 39 +- .../incallui/incall/impl/InCallFragment.java | 3 + .../incall/impl/InCallPagerAdapter.java | 4 +- .../incall/impl/res/values-af/strings.xml | 19 +- .../incall/impl/res/values-am/strings.xml | 19 +- .../incall/impl/res/values-ar/strings.xml | 19 +- .../incall/impl/res/values-az/strings.xml | 19 +- .../impl/res/values-b+sr+Latn/strings.xml | 19 +- .../incall/impl/res/values-be/strings.xml | 19 +- .../incall/impl/res/values-bg/strings.xml | 19 +- .../incall/impl/res/values-bn/strings.xml | 19 +- .../incall/impl/res/values-bs/strings.xml | 19 +- .../incall/impl/res/values-ca/strings.xml | 19 +- .../incall/impl/res/values-cs/strings.xml | 19 +- .../incall/impl/res/values-da/strings.xml | 19 +- .../incall/impl/res/values-de/strings.xml | 19 +- .../incall/impl/res/values-el/strings.xml | 19 +- .../incall/impl/res/values-en-rAU/strings.xml | 19 +- .../incall/impl/res/values-en-rGB/strings.xml | 19 +- .../incall/impl/res/values-en-rIN/strings.xml | 19 +- .../incall/impl/res/values-es-rUS/strings.xml | 19 +- .../incall/impl/res/values-es/strings.xml | 19 +- .../incall/impl/res/values-et/strings.xml | 19 +- .../incall/impl/res/values-eu/strings.xml | 19 +- .../incall/impl/res/values-fa/strings.xml | 19 +- .../incall/impl/res/values-fi/strings.xml | 19 +- .../incall/impl/res/values-fr-rCA/strings.xml | 19 +- .../incall/impl/res/values-fr/strings.xml | 19 +- .../incall/impl/res/values-gl/strings.xml | 19 +- .../incall/impl/res/values-gu/strings.xml | 19 +- .../incall/impl/res/values-h580dp/dimens.xml | 4 - .../incall/impl/res/values-h600dp/dimens.xml | 20 + .../styles.xml | 0 .../incall/impl/res/values-hi/strings.xml | 19 +- .../incall/impl/res/values-hr/strings.xml | 19 +- .../incall/impl/res/values-hu/strings.xml | 19 +- .../incall/impl/res/values-hy/strings.xml | 19 +- .../incall/impl/res/values-in/strings.xml | 19 +- .../incall/impl/res/values-is/strings.xml | 19 +- .../incall/impl/res/values-it/strings.xml | 19 +- .../incall/impl/res/values-iw/strings.xml | 19 +- .../incall/impl/res/values-ja/strings.xml | 19 +- .../incall/impl/res/values-ka/strings.xml | 19 +- .../incall/impl/res/values-kk/strings.xml | 19 +- .../incall/impl/res/values-km/strings.xml | 19 +- .../incall/impl/res/values-kn/strings.xml | 19 +- .../incall/impl/res/values-ko/strings.xml | 19 +- .../incall/impl/res/values-ky/strings.xml | 19 +- .../incall/impl/res/values-lo/strings.xml | 19 +- .../incall/impl/res/values-lt/strings.xml | 19 +- .../incall/impl/res/values-lv/strings.xml | 19 +- .../incall/impl/res/values-mk/strings.xml | 19 +- .../incall/impl/res/values-ml/strings.xml | 19 +- .../incall/impl/res/values-mn/strings.xml | 19 +- .../incall/impl/res/values-mr/strings.xml | 19 +- .../incall/impl/res/values-ms/strings.xml | 19 +- .../incall/impl/res/values-my/strings.xml | 19 +- .../incall/impl/res/values-nb/strings.xml | 19 +- .../incall/impl/res/values-ne/strings.xml | 19 +- .../incall/impl/res/values-nl/strings.xml | 19 +- .../incall/impl/res/values-no/strings.xml | 19 +- .../incall/impl/res/values-pa/strings.xml | 19 +- .../incall/impl/res/values-pl/strings.xml | 19 +- .../incall/impl/res/values-pt-rBR/strings.xml | 19 +- .../incall/impl/res/values-pt-rPT/strings.xml | 19 +- .../incall/impl/res/values-pt/strings.xml | 19 +- .../incall/impl/res/values-ro/strings.xml | 19 +- .../incall/impl/res/values-ru/strings.xml | 19 +- .../incall/impl/res/values-si/strings.xml | 19 +- .../incall/impl/res/values-sk/strings.xml | 19 +- .../incall/impl/res/values-sl/strings.xml | 19 +- .../incall/impl/res/values-sq/strings.xml | 19 +- .../incall/impl/res/values-sr/strings.xml | 19 +- .../incall/impl/res/values-sv/strings.xml | 19 +- .../incall/impl/res/values-sw/strings.xml | 19 +- .../incall/impl/res/values-ta/strings.xml | 19 +- .../incall/impl/res/values-te/strings.xml | 19 +- .../incall/impl/res/values-th/strings.xml | 19 +- .../incall/impl/res/values-tl/strings.xml | 19 +- .../incall/impl/res/values-tr/strings.xml | 19 +- .../incall/impl/res/values-uk/strings.xml | 19 +- .../incall/impl/res/values-ur/strings.xml | 19 +- .../incall/impl/res/values-uz/strings.xml | 21 +- .../incall/impl/res/values-vi/strings.xml | 19 +- .../impl/res/values-w260dp-h520dp/dimens.xml | 7 - .../impl/res/values-w260dp-h580dp/dimens.xml | 23 + .../impl/res/values-w300dp-h540dp/dimens.xml | 5 - .../impl/res/values-w300dp-h620dp/dimens.xml | 21 + .../incall/impl/res/values-zh-rCN/strings.xml | 19 +- .../incall/impl/res/values-zh-rHK/strings.xml | 19 +- .../incall/impl/res/values-zh-rTW/strings.xml | 19 +- .../incall/impl/res/values-zu/strings.xml | 19 +- .../incall/impl/res/values/strings.xml | 28 +- .../incall/protocol/PrimaryCallState.java | 8 +- .../res/drawable-hdpi/img_conference.png | Bin 7037 -> 0 bytes .../res/drawable-mdpi/img_conference.png | Bin 4629 -> 0 bytes .../res/drawable-xhdpi/img_conference.png | Bin 9517 -> 0 bytes .../res/drawable-xxhdpi/img_conference.png | Bin 16306 -> 0 bytes .../res/drawable-xxxhdpi/img_conference.png | Bin 19584 -> 0 bytes .../incallui/res/values-ca/strings.xml | 2 +- .../res/values-mcc262-mnc01/strings.xml | 32 + .../incallui/res/values-uz/strings.xml | 2 +- .../android/incallui/res/values/dimens.xml | 2 +- .../android/incallui/res/values/styles.xml | 9 + .../res/layout/fragment_composer_image.xml | 6 +- .../speakerbuttonlogic/AndroidManifest.xml | 18 + .../speakerbuttonlogic/SpeakerButtonInfo.java | 91 +++ .../video/impl/SpeakerButtonController.java | 2 +- .../impl/SurfaceViewVideoCallFragment.java | 11 +- .../video/impl/VideoCallFragment.java | 16 +- .../res/layout/frag_videocall_surfaceview.xml | 33 +- .../video/impl/res/values-h580dp/dimens.xml | 2 +- .../video/impl/res/values-land/dimens.xml | 2 +- .../video/impl/res/values-land/styles.xml | 3 +- .../video/impl/res/values-w460dp/dimens.xml | 2 +- .../incallui/video/impl/res/values/dimens.xml | 2 +- .../incallui/video/impl/res/values/styles.xml | 3 +- .../incallui/videotech/ims/ImsVideoTech.java | 4 +- .../lightbringer/LightbringerTech.java | 6 +- .../{permissions.xml => AndroidManifest.xml} | 15 + .../voicemail/impl/AndroidManifest.xml | 5 + .../android/voicemail/impl/OmtpReceiver.java | 105 --- .../voicemail/impl/TelephonyManagerStub.java | 40 -- .../impl/VvmPackageInstallReceiver.java | 80 --- .../v1/VoicemailTranscriptionServiceGrpc.java | 254 +++++++ .../impl/fetch/VoicemailFetchedCallback.java | 18 +- .../voicemail/impl/mail/MailTransport.java | 3 + .../impl/scheduling/TaskSchedulerService.java | 400 ----------- .../TranscriptionConfigProvider.java | 62 ++ .../transcribe/TranscriptionDbHelper.java | 105 +++ .../impl/transcribe/TranscriptionService.java | 203 ++++++ .../impl/transcribe/TranscriptionTask.java | 191 +++++ .../impl/transcribe/VoicemailCompat.java | 59 ++ .../transcribe/grpc/TranscriptionClient.java | 61 ++ .../grpc/TranscriptionClientFactory.java | 194 +++++ .../grpc/voicemail_transcription.proto | 44 ++ 1223 files changed, 17070 insertions(+), 5830 deletions(-) create mode 100644 assets/quantum/res/drawable-hdpi/quantum_ic_bluetooth_audio_white_24.png delete mode 100644 assets/quantum/res/drawable-hdpi/quantum_ic_check_circle_googblue_24.png delete mode 100644 assets/quantum/res/drawable-hdpi/quantum_ic_forward_white_24.png create mode 100644 assets/quantum/res/drawable-hdpi/quantum_ic_headset_white_24.png create mode 100644 assets/quantum/res/drawable-hdpi/quantum_ic_mic_off_white_24.png delete mode 100644 assets/quantum/res/drawable-hdpi/quantum_ic_network_wifi_white_24.png create mode 100644 assets/quantum/res/drawable-hdpi/quantum_ic_phone_in_talk_white_24.png create mode 100644 assets/quantum/res/drawable-hdpi/quantum_ic_phone_in_talk_white_36.png delete mode 100644 assets/quantum/res/drawable-hdpi/quantum_ic_report_white_18.png create mode 100644 assets/quantum/res/drawable-mdpi/quantum_ic_bluetooth_audio_white_24.png delete mode 100644 assets/quantum/res/drawable-mdpi/quantum_ic_check_circle_googblue_24.png delete mode 100644 assets/quantum/res/drawable-mdpi/quantum_ic_forward_white_24.png create mode 100644 assets/quantum/res/drawable-mdpi/quantum_ic_headset_white_24.png create mode 100644 assets/quantum/res/drawable-mdpi/quantum_ic_mic_off_white_24.png delete mode 100644 assets/quantum/res/drawable-mdpi/quantum_ic_network_wifi_white_24.png create mode 100644 assets/quantum/res/drawable-mdpi/quantum_ic_phone_in_talk_white_24.png create mode 100644 assets/quantum/res/drawable-mdpi/quantum_ic_phone_in_talk_white_36.png delete mode 100644 assets/quantum/res/drawable-mdpi/quantum_ic_report_white_18.png create mode 100644 assets/quantum/res/drawable-xhdpi/quantum_ic_bluetooth_audio_white_24.png delete mode 100644 assets/quantum/res/drawable-xhdpi/quantum_ic_check_circle_googblue_24.png delete mode 100644 assets/quantum/res/drawable-xhdpi/quantum_ic_forward_white_24.png create mode 100644 assets/quantum/res/drawable-xhdpi/quantum_ic_headset_white_24.png create mode 100644 assets/quantum/res/drawable-xhdpi/quantum_ic_mic_off_white_24.png delete mode 100644 assets/quantum/res/drawable-xhdpi/quantum_ic_network_wifi_white_24.png create mode 100644 assets/quantum/res/drawable-xhdpi/quantum_ic_phone_in_talk_white_24.png create mode 100644 assets/quantum/res/drawable-xhdpi/quantum_ic_phone_in_talk_white_36.png delete mode 100644 assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_18.png create mode 100644 assets/quantum/res/drawable-xxhdpi/quantum_ic_bluetooth_audio_white_24.png delete mode 100644 assets/quantum/res/drawable-xxhdpi/quantum_ic_check_circle_googblue_24.png delete mode 100644 assets/quantum/res/drawable-xxhdpi/quantum_ic_forward_white_24.png create mode 100644 assets/quantum/res/drawable-xxhdpi/quantum_ic_headset_white_24.png create mode 100644 assets/quantum/res/drawable-xxhdpi/quantum_ic_mic_off_white_24.png delete mode 100644 assets/quantum/res/drawable-xxhdpi/quantum_ic_network_wifi_white_24.png create mode 100644 assets/quantum/res/drawable-xxhdpi/quantum_ic_phone_in_talk_white_24.png create mode 100644 assets/quantum/res/drawable-xxhdpi/quantum_ic_phone_in_talk_white_36.png delete mode 100644 assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_18.png create mode 100644 assets/quantum/res/drawable-xxxhdpi/quantum_ic_bluetooth_audio_white_24.png delete mode 100644 assets/quantum/res/drawable-xxxhdpi/quantum_ic_check_circle_googblue_24.png delete mode 100644 assets/quantum/res/drawable-xxxhdpi/quantum_ic_forward_white_24.png create mode 100644 assets/quantum/res/drawable-xxxhdpi/quantum_ic_headset_white_24.png create mode 100644 assets/quantum/res/drawable-xxxhdpi/quantum_ic_mic_off_white_24.png delete mode 100644 assets/quantum/res/drawable-xxxhdpi/quantum_ic_network_wifi_white_24.png create mode 100644 assets/quantum/res/drawable-xxxhdpi/quantum_ic_phone_in_talk_white_24.png create mode 100644 assets/quantum/res/drawable-xxxhdpi/quantum_ic_phone_in_talk_white_36.png delete mode 100644 assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_18.png create mode 100644 assets/quantum/res/drawable/quantum_ic_arrow_back_vd_theme_24.xml create mode 100644 assets/quantum/res/drawable/quantum_ic_call_vd_theme_24.xml create mode 100644 assets/quantum/res/drawable/quantum_ic_close_vd_theme_24.xml create mode 100644 assets/quantum/res/drawable/quantum_ic_history_vd_theme_24.xml create mode 100644 assets/quantum/res/drawable/quantum_ic_message_vd_theme_24.xml create mode 100644 assets/quantum/res/drawable/quantum_ic_person_add_vd_theme_24.xml create mode 100644 assets/quantum/res/drawable/quantum_ic_search_vd_theme_24.xml create mode 100644 assets/quantum/res/drawable/quantum_ic_videocam_vd_theme_24.xml delete mode 100644 java/com/android/contacts/common/GeoUtil.java delete mode 100644 java/com/android/contacts/common/format/FormatUtils.java delete mode 100644 java/com/android/contacts/common/format/testing/SpannedTestUtils.java delete mode 100644 java/com/android/contacts/common/location/CountryDetector.java delete mode 100644 java/com/android/contacts/common/location/UpdateCountryService.java delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_ab_search.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_arrow_back_24dp.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_business_white_120dp.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_call_24dp.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_close_dk.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_create_24dp.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_group_white_24dp.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_history_white_drawable_24dp.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_info_outline_24dp.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_menu_back.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_menu_group_dk.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_menu_group_lt.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_menu_overflow_lt.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_menu_person_dk.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_menu_person_lt.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_menu_remove_field_holo_light.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_dk.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_holo_light.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_lt.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_person_24dp.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_rx_videocam.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_tx_videocam.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_videocam.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/ic_voicemail_avatar.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/list_activated_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/list_background_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/list_focused_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/list_longpressed_holo_light.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/list_pressed_holo_light.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/list_section_divider_holo_custom.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-hdpi/list_title_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-hdpi/list_focused_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-hdpi/list_title_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-mdpi/list_focused_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-mdpi/list_title_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-sw600dp-hdpi/list_activated_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-sw600dp-mdpi/list_activated_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-sw600dp-xhdpi/list_activated_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-xhdpi/list_focused_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-ldrtl-xhdpi/list_title_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-mdpi/list_activated_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-mdpi/list_focused_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-mdpi/list_longpressed_holo_light.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-mdpi/list_pressed_holo_light.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-mdpi/list_section_divider_holo_custom.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-sw600dp-hdpi/list_activated_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-sw600dp-mdpi/list_activated_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-sw600dp-xhdpi/list_activated_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-xhdpi/list_activated_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-xhdpi/list_focused_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-xhdpi/list_longpressed_holo_light.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-xhdpi/list_pressed_holo_light.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-xhdpi/list_section_divider_holo_custom.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-xxhdpi/list_activated_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-xxhdpi/list_focused_holo.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-xxhdpi/list_longpressed_holo_light.9.png delete mode 100644 java/com/android/contacts/common/res/drawable-xxhdpi/list_pressed_holo_light.9.png delete mode 100644 java/com/android/contacts/common/res/drawable/ic_search_add_contact.xml delete mode 100644 java/com/android/contacts/common/res/drawable/list_selector_background_transition_holo_light.xml delete mode 100644 java/com/android/contacts/common/util/NameConverter.java delete mode 100644 java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipop.java create mode 100644 java/com/android/dialer/app/list/DialerViewPager.java create mode 100644 java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_48dp.png create mode 100644 java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_blue_24dp.png create mode 100644 java/com/android/dialer/app/res/drawable-hdpi/ic_empty_check_mark_white_24dp.png delete mode 100644 java/com/android/dialer/app/res/drawable-hdpi/ic_results_phone.png create mode 100644 java/com/android/dialer/app/res/drawable-mdpi/ic_check_mark_48dp.png delete mode 100644 java/com/android/dialer/app/res/drawable-mdpi/ic_results_phone.png create mode 100644 java/com/android/dialer/app/res/drawable-xhdpi/ic_check_mark_48dp.png delete mode 100644 java/com/android/dialer/app/res/drawable-xhdpi/ic_results_phone.png create mode 100644 java/com/android/dialer/app/res/drawable-xxhdpi/ic_check_mark_48dp.png delete mode 100644 java/com/android/dialer/app/res/drawable-xxhdpi/ic_results_phone.png create mode 100644 java/com/android/dialer/app/res/drawable-xxxhdpi/ic_check_mark_48dp.png delete mode 100644 java/com/android/dialer/app/res/drawable-xxxhdpi/ic_results_phone.png delete mode 100644 java/com/android/dialer/app/res/drawable/ic_search_phone.xml create mode 100644 java/com/android/dialer/app/res/drawable/ic_wifi_calling.xml create mode 100644 java/com/android/dialer/app/res/layout/action_mode_close_button.xml create mode 100644 java/com/android/dialer/callintent/speed_dial_contact_type.proto create mode 100644 java/com/android/dialer/calllog/database/AndroidManifest.xml delete mode 100644 java/com/android/dialer/calllog/database/AnnotatedCallLog.java create mode 100644 java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java create mode 100644 java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java delete mode 100644 java/com/android/dialer/calllog/database/CallLogMutations.java create mode 100644 java/com/android/dialer/calllog/database/Coalescer.java create mode 100644 java/com/android/dialer/calllog/database/MutationApplier.java create mode 100644 java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java create mode 100644 java/com/android/dialer/calllog/datasources/CallLogMutations.java rename java/com/android/dialer/calllog/{ => datasources}/DataSources.java (88%) create mode 100644 java/com/android/dialer/calllog/datasources/util/RowCombiner.java create mode 100644 java/com/android/dialer/calllog/testing/FakeCallLogApplication.java delete mode 100644 java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java create mode 100644 java/com/android/dialer/calllog/ui/NewCallLogAdapter.java create mode 100644 java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java create mode 100644 java/com/android/dialer/common/concurrent/DialerExecutorComponent.java rename java/com/android/{contacts/common/util/TrafficStatsTags.java => dialer/common/concurrent/DialerExecutorModule.java} (55%) rename java/com/android/{incallui/calllocation/impl => dialer/constants}/TrafficStatsTags.java (61%) create mode 100644 java/com/android/dialer/contactactions/AndroidManifest.xml create mode 100644 java/com/android/dialer/contactactions/ContactActionBottomSheet.java create mode 100644 java/com/android/dialer/contactactions/ContactActionModule.java create mode 100644 java/com/android/dialer/contactactions/DividerModule.java create mode 100644 java/com/android/dialer/contactactions/IntentModule.java create mode 100644 java/com/android/dialer/contactactions/res/layout/contact_layout.xml create mode 100644 java/com/android/dialer/contactactions/res/layout/divider_layout.xml create mode 100644 java/com/android/dialer/contactactions/res/layout/module_layout.xml create mode 100644 java/com/android/dialer/contactactions/res/layout/sheet_layout.xml rename java/com/android/{contacts/common/res/drawable/ic_person_add_tinted_24dp.xml => dialer/contactactions/res/values/dimens.xml} (70%) create mode 100644 java/com/android/dialer/contactsfragment/FastScroller.java create mode 100644 java/com/android/dialer/contactsfragment/res/drawable/fast_scroller_container_background.xml create mode 100644 java/com/android/dialer/contactsfragment/res/drawable/fast_scroller_scroll_bar.xml rename java/com/android/dialer/{callcomposer/proto/call_composer_contact.proto => dialercontact/dialer_contact.proto} (82%) create mode 100644 java/com/android/dialer/searchfragment/AndroidManifest.xml create mode 100644 java/com/android/dialer/searchfragment/NewSearchFragment.java create mode 100644 java/com/android/dialer/searchfragment/QueryUtil.java create mode 100644 java/com/android/dialer/searchfragment/README.md create mode 100644 java/com/android/dialer/searchfragment/SearchAdapter.java create mode 100644 java/com/android/dialer/searchfragment/SearchContactCursor.java create mode 100644 java/com/android/dialer/searchfragment/SearchContactViewHolder.java create mode 100644 java/com/android/dialer/searchfragment/SearchContactsCursorLoader.java create mode 100644 java/com/android/dialer/searchfragment/SearchCursorManager.java create mode 100644 java/com/android/dialer/searchfragment/res/layout/fragment_search.xml create mode 100644 java/com/android/dialer/searchfragment/res/layout/search_contact_row.xml create mode 100644 java/com/android/dialer/searchfragment/res/values/dimens.xml rename java/com/android/dialer/{app => }/widget/EmptyContentView.java (87%) rename java/com/android/dialer/{app => widget}/res/drawable-hdpi/empty_contacts.png (100%) rename java/com/android/dialer/{app => widget}/res/drawable-mdpi/empty_contacts.png (100%) rename java/com/android/dialer/{app => widget}/res/drawable-xhdpi/empty_contacts.png (100%) rename java/com/android/dialer/{app => widget}/res/drawable-xxhdpi/empty_contacts.png (100%) rename java/com/android/dialer/{app => widget}/res/drawable-xxxhdpi/empty_contacts.png (100%) rename java/com/android/dialer/{app => widget}/res/layout/empty_content_view.xml (92%) create mode 100644 java/com/android/dialer/widget/res/values/colors.xml create mode 100644 java/com/android/dialershared/bubble/AndroidManifest.xml create mode 100644 java/com/android/dialershared/bubble/Bubble.java create mode 100644 java/com/android/dialershared/bubble/BubbleInfo.java create mode 100644 java/com/android/dialershared/bubble/ChangeOnScreenBounds.java create mode 100644 java/com/android/dialershared/bubble/CheckableImageButton.java create mode 100644 java/com/android/dialershared/bubble/MoveHandler.java create mode 100644 java/com/android/dialershared/bubble/WindowRoot.java rename java/com/android/{contacts/common/res/drawable/ic_call_and_share.xml => dialershared/bubble/res/color/bubble_checkable_mask.xml} (66%) rename java/com/android/{contacts/common/res/drawable/ic_back_arrow.xml => dialershared/bubble/res/color/bubble_icon_tint_states.xml} (70%) create mode 100644 java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_ltr.xml create mode 100644 java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_rtl.xml create mode 100644 java/com/android/dialershared/bubble/res/drawable/bubble_ripple_checkable_circle.xml rename java/com/android/{contacts/common/res/drawable/ic_search_video_call.xml => dialershared/bubble/res/drawable/bubble_ripple_circle.xml} (65%) create mode 100644 java/com/android/dialershared/bubble/res/layout/bubble_base.xml rename java/com/android/{incallui/res/drawable/img_conference_automirrored.xml => dialershared/bubble/res/values/colors.xml} (76%) create mode 100644 java/com/android/dialershared/bubble/res/values/values.xml create mode 100644 java/com/android/incallui/AudioRouteSelectorActivity.java create mode 100644 java/com/android/incallui/ReturnToCallActionReceiver.java create mode 100644 java/com/android/incallui/ReturnToCallController.java delete mode 100644 java/com/android/incallui/answer/impl/PillDrawable.java delete mode 100644 java/com/android/incallui/commontheme/res/anim/blinking.xml delete mode 100644 java/com/android/incallui/commontheme/res/drawable-hdpi/ic_phone_audio_white_36dp.png delete mode 100644 java/com/android/incallui/commontheme/res/drawable-mdpi/ic_phone_audio_white_36dp.png delete mode 100644 java/com/android/incallui/commontheme/res/drawable-xhdpi/ic_phone_audio_white_36dp.png delete mode 100644 java/com/android/incallui/commontheme/res/drawable-xxhdpi/ic_phone_audio_white_36dp.png delete mode 100644 java/com/android/incallui/commontheme/res/drawable-xxxhdpi/ic_phone_audio_white_36dp.png delete mode 100644 java/com/android/incallui/incall/impl/res/values-h580dp/dimens.xml create mode 100644 java/com/android/incallui/incall/impl/res/values-h600dp/dimens.xml rename java/com/android/incallui/incall/impl/res/{values-h580dp => values-h650dp}/styles.xml (100%) delete mode 100644 java/com/android/incallui/incall/impl/res/values-w260dp-h520dp/dimens.xml create mode 100644 java/com/android/incallui/incall/impl/res/values-w260dp-h580dp/dimens.xml delete mode 100644 java/com/android/incallui/incall/impl/res/values-w300dp-h540dp/dimens.xml create mode 100644 java/com/android/incallui/incall/impl/res/values-w300dp-h620dp/dimens.xml delete mode 100644 java/com/android/incallui/res/drawable-hdpi/img_conference.png delete mode 100644 java/com/android/incallui/res/drawable-mdpi/img_conference.png delete mode 100644 java/com/android/incallui/res/drawable-xhdpi/img_conference.png delete mode 100644 java/com/android/incallui/res/drawable-xxhdpi/img_conference.png delete mode 100644 java/com/android/incallui/res/drawable-xxxhdpi/img_conference.png create mode 100644 java/com/android/incallui/res/values-mcc262-mnc01/strings.xml create mode 100644 java/com/android/incallui/speakerbuttonlogic/AndroidManifest.xml create mode 100644 java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java rename java/com/android/voicemail/{permissions.xml => AndroidManifest.xml} (60%) delete mode 100644 java/com/android/voicemail/impl/OmtpReceiver.java delete mode 100644 java/com/android/voicemail/impl/TelephonyManagerStub.java delete mode 100644 java/com/android/voicemail/impl/VvmPackageInstallReceiver.java create mode 100644 java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java delete mode 100644 java/com/android/voicemail/impl/scheduling/TaskSchedulerService.java create mode 100644 java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java create mode 100644 java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java create mode 100644 java/com/android/voicemail/impl/transcribe/TranscriptionService.java create mode 100644 java/com/android/voicemail/impl/transcribe/TranscriptionTask.java create mode 100644 java/com/android/voicemail/impl/transcribe/VoicemailCompat.java create mode 100644 java/com/android/voicemail/impl/transcribe/grpc/TranscriptionClient.java create mode 100644 java/com/android/voicemail/impl/transcribe/grpc/TranscriptionClientFactory.java create mode 100644 java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto diff --git a/Android.mk b/Android.mk index 984cd286d2..c3b1094d44 100644 --- a/Android.mk +++ b/Android.mk @@ -4,6 +4,12 @@ # * removed com.google.android.geo.API_KEY key. This should be added to # the manifest files in java/com/android/incallui/calllocation/impl/ # and /java/com/android/incallui/maps/impl/ +# * b/62417801 removed translation string variant: +# java/com/android/incallui/res/values-af-mcc262-mnc01/strings.xml +# * b/62343966 include manually generated GRPC service class: +# $ protoc --plugin=protoc-gen-grpc-java=prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-linux-x86_64.exe \ +# --grpc-java_out=lite:"packages/apps/Dialer/java/com/android/voicemail/impl/" \ +# --proto_path="packages/apps/Dialer/java/com/android/voicemail/impl/transcribe/grpc/" "packages/apps/Dialer/java/com/android/voicemail/impl/transcribe LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) @@ -20,6 +26,7 @@ BASE_DIR := java/com/android SRC_DIRS := \ $(BASE_DIR)/contacts/common \ $(BASE_DIR)/dialer \ + $(BASE_DIR)/dialershared \ $(BASE_DIR)/incallui \ $(BASE_DIR)/voicemail @@ -39,7 +46,7 @@ EXCLUDE_FILES := \ $(BASE_DIR)/incallui/calllocation/impl/TrafficStatsTags.java \ $(BASE_DIR)/incallui/maps/impl/MapsImpl.java \ $(BASE_DIR)/incallui/maps/impl/MapsModule.java \ - $(BASE_DIR)/incallui/maps/impl/StaticMapFragment.java + $(BASE_DIR)/incallui/maps/impl/StaticMapFragment.java \ # Exclude testing only class, not used anywhere here EXCLUDE_FILES += \ @@ -62,6 +69,7 @@ RES_DIRS := \ $(BASE_DIR)/dialer/calllog/ui/res \ $(BASE_DIR)/dialer/calllogutils/res \ $(BASE_DIR)/dialer/common/res \ + $(BASE_DIR)/dialer/contactactions/res \ $(BASE_DIR)/dialer/contactsfragment/res \ $(BASE_DIR)/dialer/dialpadview/res \ $(BASE_DIR)/dialer/interactions/res \ @@ -69,12 +77,14 @@ RES_DIRS := \ $(BASE_DIR)/dialer/oem/res \ $(BASE_DIR)/dialer/phonenumberutil/res \ $(BASE_DIR)/dialer/postcall/res \ + $(BASE_DIR)/dialer/searchfragment/res \ $(BASE_DIR)/dialer/shortcuts/res \ $(BASE_DIR)/dialer/speeddial/res \ $(BASE_DIR)/dialer/theme/res \ $(BASE_DIR)/dialer/util/res \ $(BASE_DIR)/dialer/voicemailstatus/res \ $(BASE_DIR)/dialer/widget/res \ + $(BASE_DIR)/dialershared/bubble/res \ $(BASE_DIR)/incallui/answer/impl/affordance/res \ $(BASE_DIR)/incallui/answer/impl/answermethod/res \ $(BASE_DIR)/incallui/answer/impl/hint/res \ @@ -88,6 +98,7 @@ RES_DIRS := \ $(BASE_DIR)/incallui/incall/impl/res \ $(BASE_DIR)/incallui/res \ $(BASE_DIR)/incallui/sessiondata/res \ + $(BASE_DIR)/incallui/speakerbuttonlogic/res \ $(BASE_DIR)/incallui/telecomeventui/res \ $(BASE_DIR)/incallui/video/impl/res \ $(BASE_DIR)/incallui/video/protocol/res \ @@ -113,6 +124,7 @@ DIALER_MANIFEST_FILES += \ $(BASE_DIR)/dialer/calllog/ui/AndroidManifest.xml \ $(BASE_DIR)/dialer/calllogutils/AndroidManifest.xml \ $(BASE_DIR)/dialer/common/AndroidManifest.xml \ + $(BASE_DIR)/dialer/contactactions/AndroidManifest.xml \ $(BASE_DIR)/dialer/contactsfragment/AndroidManifest.xml \ $(BASE_DIR)/dialer/dialpadview/AndroidManifest.xml \ $(BASE_DIR)/dialer/interactions/AndroidManifest.xml \ @@ -120,6 +132,7 @@ DIALER_MANIFEST_FILES += \ $(BASE_DIR)/dialer/oem/AndroidManifest.xml \ $(BASE_DIR)/dialer/phonenumberutil/AndroidManifest.xml \ $(BASE_DIR)/dialer/postcall/AndroidManifest.xml \ + $(BASE_DIR)/dialer/searchfragment/AndroidManifest.xml \ $(BASE_DIR)/dialer/shortcuts/AndroidManifest.xml \ $(BASE_DIR)/dialer/simulator/impl/AndroidManifest.xml \ $(BASE_DIR)/dialer/speeddial/AndroidManifest.xml \ @@ -127,6 +140,7 @@ DIALER_MANIFEST_FILES += \ $(BASE_DIR)/dialer/util/AndroidManifest.xml \ $(BASE_DIR)/dialer/voicemailstatus/AndroidManifest.xml \ $(BASE_DIR)/dialer/widget/AndroidManifest.xml \ + $(BASE_DIR)/dialershared/bubble/AndroidManifest.xml \ $(BASE_DIR)/incallui/AndroidManifest.xml \ $(BASE_DIR)/incallui/answer/impl/affordance/AndroidManifest.xml \ $(BASE_DIR)/incallui/answer/impl/AndroidManifest.xml \ @@ -139,12 +153,13 @@ DIALER_MANIFEST_FILES += \ $(BASE_DIR)/incallui/hold/AndroidManifest.xml \ $(BASE_DIR)/incallui/incall/impl/AndroidManifest.xml \ $(BASE_DIR)/incallui/sessiondata/AndroidManifest.xml \ + $(BASE_DIR)/incallui/speakerbuttonlogic/AndroidManifest.xml \ $(BASE_DIR)/incallui/telecomeventui/AndroidManifest.xml \ $(BASE_DIR)/incallui/video/impl/AndroidManifest.xml \ $(BASE_DIR)/incallui/video/protocol/AndroidManifest.xml \ $(BASE_DIR)/incallui/wifi/AndroidManifest.xml \ $(BASE_DIR)/voicemail/impl/AndroidManifest.xml \ - $(BASE_DIR)/voicemail/permissions.xml \ + $(BASE_DIR)/voicemail/AndroidManifest.xml \ # Merge all manifest files. @@ -180,6 +195,7 @@ LOCAL_AAPT_FLAGS := \ --extra-packages com.android.dialer.calllog.ui \ --extra-packages com.android.dialer.calllogutils \ --extra-packages com.android.dialer.common \ + --extra-packages com.android.dialer.contactactions \ --extra-packages com.android.dialer.contactsfragment \ --extra-packages com.android.dialer.dialpadview \ --extra-packages com.android.dialer.interactions \ @@ -187,12 +203,14 @@ LOCAL_AAPT_FLAGS := \ --extra-packages com.android.dialer.oem \ --extra-packages com.android.dialer.phonenumberutil \ --extra-packages com.android.dialer.postcall \ + --extra-packages com.android.dialer.searchfragment \ --extra-packages com.android.dialer.shortcuts \ --extra-packages com.android.dialer.speeddial \ --extra-packages com.android.dialer.theme \ --extra-packages com.android.dialer.util \ --extra-packages com.android.dialer.voicemailstatus \ --extra-packages com.android.dialer.widget \ + --extra-packages com.android.dialershared.bubble \ --extra-packages com.android.incallui \ --extra-packages com.android.incallui.answer.impl \ --extra-packages com.android.incallui.answer.impl.affordance \ @@ -209,6 +227,7 @@ LOCAL_AAPT_FLAGS := \ --extra-packages com.android.incallui.incall.impl \ --extra-packages com.android.incallui.maps.impl \ --extra-packages com.android.incallui.sessiondata \ + --extra-packages com.android.incallui.speakerbuttonlogic \ --extra-packages com.android.incallui.telecomeventui \ --extra-packages com.android.incallui.video \ --extra-packages com.android.incallui.video.impl \ @@ -223,6 +242,7 @@ LOCAL_AAPT_FLAGS := \ LOCAL_STATIC_JAVA_LIBRARIES := \ android-common \ + android-support-dynamic-animation \ com.android.vcard \ dialer-commons-io-target \ dialer-dagger2-target \ @@ -230,6 +250,11 @@ LOCAL_STATIC_JAVA_LIBRARIES := \ dialer-gifdecoder-target \ dialer-glide-target \ dialer-guava-target \ + dialer-grpc-all-target \ + dialer-grpc-core-target \ + dialer-grpc-okhttp-target \ + dialer-grpc-protobuf-lite-target \ + dialer-grpc-stub-target \ dialer-javax-annotation-api-target \ dialer-javax-inject-target \ dialer-libshortcutbadger-target \ @@ -251,6 +276,11 @@ LOCAL_STATIC_ANDROID_LIBRARIES := \ LOCAL_JAVA_LIBRARIES := \ org.apache.http.legacy \ dialer-auto-value \ + dialer-grpc-all \ + dialer-grpc-core \ + dialer-grpc-okhttp \ + dialer-grpc-protobuf-lite \ + dialer-grpc-stub \ # Libraries needed by the compiler (JACK) to generate code. PROCESSOR_LIBRARIES_TARGET := \ @@ -314,6 +344,11 @@ LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \ dialer-dagger2:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger/2.7/dagger-2.7$(COMMON_JAVA_PACKAGE_SUFFIX) \ dialer-dagger2-producers:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger-producers/2.7/dagger-producers-2.7$(COMMON_JAVA_PACKAGE_SUFFIX) \ dialer-guava:../../../prebuilts/tools/common/m2/repository/com/google/guava/guava/20.0/guava-20.0$(COMMON_JAVA_PACKAGE_SUFFIX) \ + dialer-grpc-all:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-all/1.0.3/grpc-all-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \ + dialer-grpc-core:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-core/1.0.3/grpc-core-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \ + dialer-grpc-okhttp:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-okhttp/1.0.3/grpc-okhttp-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \ + dialer-grpc-protobuf-lite:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-protobuf-lite/1.0.3/grpc-protobuf-lite-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \ + dialer-grpc-stub:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-stub/1.0.3/grpc-stub-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \ dialer-javax-annotation-api:../../../prebuilts/tools/common/m2/repository/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2$(COMMON_JAVA_PACKAGE_SUFFIX) \ dialer-javax-inject:../../../prebuilts/tools/common/m2/repository/javax/inject/javax.inject/1/javax.inject-1$(COMMON_JAVA_PACKAGE_SUFFIX) @@ -432,3 +467,53 @@ LOCAL_UNINSTALLABLE_MODULE := true include $(BUILD_PREBUILT) include $(CLEAR_VARS) + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE := dialer-grpc-core-target +LOCAL_SDK_VERSION := current +LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-core/1.0.3/grpc-core-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE := dialer-grpc-okhttp-target +LOCAL_SDK_VERSION := current +LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-okhttp/1.0.3/grpc-okhttp-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE := dialer-grpc-protobuf-lite-target +LOCAL_SDK_VERSION := current +LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-protobuf-lite/1.0.3/grpc-protobuf-lite-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE := dialer-grpc-stub-target +LOCAL_SDK_VERSION := current +LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-stub/1.0.3/grpc-stub-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE := dialer-grpc-all-target +LOCAL_SDK_VERSION := current +LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-all/1.0.3/grpc-all-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c04f8bec98..7966a55a43 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -16,8 +16,8 @@ + android:versionCode="140000" + android:versionName="11.0"> iliVF1F+faR=(l%gQDbU!4cWbE2o~(yLF;fOoIO+@FMwNTX(s#$3P^ej` z8X8#u=Jl~}fv0UyDCQ>Ml|}G6?~t$fvOV zJ3CbYrowP%6<-051=3B0x!{|W_%wL-chC~5{yCet@6l4Bi(im!r40(CQa^>rhj zTtyGSwRR}XuKY7MTJ4{y@^Atk*?D}j&pjIZ(5g$m`)YQ#C8*Fd957TedK3qF$e*&HlAO2wme~w-#hC^WnLN67= gp)iA>tbY>v4Ov38j8E>9F#rGn07*qoM6N<$g2Bziz5oCK literal 0 HcmV?d00001 diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_check_circle_googblue_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_check_circle_googblue_24.png deleted file mode 100644 index 52ff857ba87021b301aeb9ad10ec2d051c0e0a96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmV;I0cie-P)-=H6vpuY4V)r&ncM-JTtN64LxW}J@+KiK^e55XKEpn2nt{W zT1WxG+@KJ)poMKAm=m-C?MZQIQ05`xd-OT84N9ODjyb>+ypK-w*d}Q0A!hjDNB96u zxhW`uUNB}q#Lxm7(9}UV6|}r!%pjc#QrCyRP zbbjH8+i_3q^JPN_DJUqRf)iCdrnn}&zaRSdK|iV>FO89QOospf002ovPDHLkV1fow BtDyh@ diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_forward_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_forward_white_24.png deleted file mode 100644 index a0711d377e2c459e5ab603ebe1b57ab2e0385858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8kf)1dh{y4_S1)ohDDWJ)&{sG6 zxTr{zSSDMA{G#-$Uoww0P0)ZqizPQS#kM#%xU6u{wqFExpTXqxsMVGg4E1clKkXcRs|iijYcdC*iEMQ;!~kmv#I557p4qddp2 zaV-yR9Y}=hH(ZMk_GqV*jD{;c0|Pw|-IVI9TU_dz+X8^Cna3^;fjU;|=9_jdG*kg9 zOH+ly)Mq3ebqNSaR2W^fQZJMGxR?}qobfvgq|M-J&Vw7>w}^1Zbc}0 wsyqlPJ*oRe?wi|WK^rq|DMH70hE5Ot0svnshs5?PBme*a07*qoM6N<$f;$6_DgXcg literal 0 HcmV?d00001 diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_mic_off_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_mic_off_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..6fccf5d09f041a62f4c831bb7038d59216d91a88 GIT binary patch literal 428 zcmV;d0aN~oP)7*pw6*!brO z;>wChcQR1etfOQBSPTH4;3^W?^LfE0AR)ugvqj9w#dIXk)a2GmiSbTF4Z1+Pq!7U-2 z_H!z=23Gr_Q^t7TP3tC8sAm{i=!e2rRpyU3o-myXeLd^8 zPvEl+XN0gloeD>_ssDQq3u+dqq-KS}11(yE8K8oCVJ;7?Xf#%)Y_4@o0!s84K>q== W1dVw9)Q3s{00006)+h@coW*bRyx`E$msKv58EMG!2~=oWMVVyT!Sg=PVQ8&DK2 zwGGh}sWOqz!i-Fqzn4kMoLj!f2lsLBIZu*C3MFKwNRUQjoh+N^6xcvx36*JN5k!PI z844IaRbYiU5pRgXJb7P)z49!eI3ZCM(S;#a>7*IAzla*pjDMp^z$z-1_nFSFbR@Ljcp7Ja*kOdhRy{oMAhQF`^b)=JfL6gdo9U*Uzj`ZZJXp>81u%2 z-}cYZ6v8x_4Kk7voj^>7l87gr1%ggR9kS|+sft^z!mB6d#l_BiP$?R&m@m|R1EA=# zDkjA+SyFa@%3)*awg*!QpKno~{xQ!)2Z_o=*O?k522I^8ZA`Mm2=HT0M&FoW=oeW< Vqh>;b>ihrz002ovPDHLkV1oCcwUPh; diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_phone_in_talk_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_phone_in_talk_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c89424ef6c4a8fc641b695d15aea61138985b7 GIT binary patch literal 483 zcmV<90UZ8`P)Ky0J#aZ%sZ_et~>HCY{-~XxUHbz0?FOs4oWf$?u~mwAlq;0M}YWdla`( zD7MLCz)&lwOL50VR^2gcv+rf5z=G~_D9p)kRAfQJ4eK)M33#Pe4&9XBnH&V~?8vV5 z6&x;y^5?!HQkOgj%<0PB5$=~m9lis&DhloQ35*G0izXUYltE#t>~T{EKqEW*4A@%^ z?E*h+6Qxaqqe2)5C(EJm2;3H>T?RwamDF27-J0N___IQ>G4S5{s!*p{Fl~7?DC{;5 z?pj(63Il+9g}++jtO>ogwuMsX0WWNj7?S`#d*hi&tJ^{09N>dPiTQPd?V&JW9&pF@ zQihQ>P&)gpv?@^OG^$wzIv`EWLfq?{u;)|fgF#l^+NrI}hyzy{Vb zU!~y^VY>7WGCuKuBg8Zr#0i(8N&y7*vkOPXp^03UD1eDx)1qRqo?KQdfN(ujs!+tp zrAYy7W;=)I;R8Vf)T%HnAeWsAMTCvqVhqm^bt(i=eh}`I@*vJ*JVVr~5DXCRp7J8X zK}InKsFWRd3HJp@K5U>CM*+0)4da^ZI7Kdv^5L%$?$Ay|<7g*^u}wC#k;`HE;OS?b z#?gr}fTR4VVT^D)6q8=Otu!a3R z#FL~>StKx4DL+>6uj@DpMHBBZ`iUrwO&FcB;W>UcaFi2^d5h7iG@=ZVabGsE z6{A6EY{6)d9mg>Gh^oAp#T$%Hl^d-XKWR|8aRuW&i&S1zGl=nmN|hJ&Br$rKt@2_I zo?a>y3Wp9(;4(v{p&QRj7HI-1NRTnYea_H<%NmwZt>SS3&wCmaKm`fHrRY+zh;Say zPYw}P78NAOXSs?;H-3G@^#>Is$gf$G!5)%$Mmfhq64BoVQXdg||0u4}?kiyDr=s>-sA~@tNF0KLB+>L@X3U1|4(wvBWU`oB#j-07*qoM6N<$g4eBf7XSbN diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_forward_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_forward_white_24.png deleted file mode 100644 index 65f73299f97c99039ae7f76435b665cf08cd16e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*18&4O<5R21yFKy&yFyJ`i;P(IQ zT+Vb%7 diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_headset_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_headset_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..df063799d8e4686cb29fd00c94f587b938574796 GIT binary patch literal 238 zcmV?wU?ffUu*`Rk6H;>J+Hj+SNfnK9z z8go2IV1i}-{@saJj1%;jDwVErmta6w1!s6luti%1hxkYUr5@}LfP?`56TI&Ps|2?@ o!7M@R##1z#mH+?%07*qoM6N<$g7g?+Pyhe` literal 0 HcmV?d00001 diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_mic_off_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_mic_off_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..15094d8842474220f070d23097108ffd974ca9f8 GIT binary patch literal 288 zcmV+*0pI?KP)cMm`(21AT9SrjmjL1kRXy)pqrRb3sY4Ll09vG(ARcknn?t5kgrxD myMaPRJApz*E&~wfufQ*5Xmx+>l_Em`00004mTQN&lnQKr2S4Zoj2sFV!NULm002ovPDHLkV1n;7d{F=Z diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_phone_in_talk_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_phone_in_talk_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..e6f98af95bf0027481d1c66ab3fc99354458dd8e GIT binary patch literal 325 zcmV-L0lNN)P)Y5a?hDBK78)1nDb?lTJ#_HAxQD2M9OC$xk3SiHJBy*jivDgy5nLNmDe1 zgogHfa?~p~@AY4fo|D{GR-I}ZPQhPW<_+a?4wWWTQ2MMl7ui;tNkO|lZ~VZHft+Vu zX(bgpEn-J+>dY%Ob>^5oA3aI5S;VK*d7<>hog8y&I&s%e45muMp%ZJmQ*h5K`xr@# zV=i^x;j8Xcc#RK<$M}{y1K8G+3SIb<=)iu?^BxPiIgjjOEH~#l4m{02+I8hRCUM|p z3K}-FteQ1tIF~cw#FG0OHl1naDxTTJZ{OAAY93m4L9VCYTP+p&KM#zWv*wqUmE2ZG XfRjN?g6O-M00000NkvXXu0mjfGVqI( literal 0 HcmV?d00001 diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_phone_in_talk_white_36.png b/assets/quantum/res/drawable-mdpi/quantum_ic_phone_in_talk_white_36.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c89424ef6c4a8fc641b695d15aea61138985b7 GIT binary patch literal 483 zcmV<90UZ8`P)Ky0J#aZ%sZ_et~>HCY{-~XxUHbz0?FOs4oWf$?u~mwAlq;0M}YWdla`( zD7MLCz)&lwOL50VR^2gcv+rf5z=G~_D9p)kRAfQJ4eK)M33#Pe4&9XBnH&V~?8vV5 z6&x;y^5?!HQkOgj%<0PB5$=~m9lis&DhloQ35*G0izXUYltE#t>~T{EKqEW*4A@%^ z?E*h+6Qxaqqe2)5C(EJm2;3H>T?RwamDF27-J0N___IQ>G4S5{s!*p{Fl~7?DC{;5 z?pj(63Il+9g}++jtO>ogwuMsX0WWNj7?S`#d*hi&tJ^{09N>dPiTQPd?V&JW9&pF@ zQihQ>P&)gpv?@^OG^$w61L24(@J19>frm@PzQ7dQkO3J8U? za7_?->m;oyPKIFLY|CPt74=p>b4rVACHEFUjXkN7Nx_i!83}`EZ Mr>mdKI;Vst0FA&qA^-pY diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_bluetooth_audio_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_bluetooth_audio_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..b494eb361e2c1efa88d7feb71ed71b1ac1120cc0 GIT binary patch literal 515 zcmV+e0{s1nP)+D&_b}YaDD!P`UT>v)WS}%6e}A$K@nLj1eI-P z^w`9^*<^N{?3h9@Rgz22A#?K@rT)vGC;)7P7KBtlUzUsh~ofr1)kkm9C(`h>xP`3epr5c;eV^7FAcE6k8&Qn3Qp2 zJOQ5+e^yitMa`K(U7``Q#;9rCyO$*wmcqzE7ratRaRtCD{oV@sBqn~&8MB~cGuc*D z%}`*~3_PQZ>)McxZf9MzH3Myyh_ZoyY_BEm0XWaTFOn2C9xkPQ3c#Ju)~j2J*ulfI z^y~o8^4s0@jvTmnh@@{DfR8)^IR=@a*+mfL`$VpyDLuOYy!4JwR$NH?41k+F_#{O` zS`Ppm`r>0_i6$uux;Ct%OTPGd5zHkiWXz(D6+Q7Chh4e5f@=V7z46v@UACioR7v+P zd*hu8XVXZxec`+@=#95#P@*M*Rp-iF=>gx7gRXded<>)u_LCDR$W(l`hu2Z+!>f&N zgnc^piqH7?{cXG@SPT1n4}muXVeleY5Bn1s4*y>QmoK-?ZqJg>dv^c;002ovPDHLk FV1jLj>Sq7| literal 0 HcmV?d00001 diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_check_circle_googblue_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_check_circle_googblue_24.png deleted file mode 100644 index e31fcf35073731f67d9cccfa618eb1cdf8dcd9ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmV;$g7)NnYYA8~X1E8Da2KG_tL8~I;lb{)sL*P=iRKW#E4XN3@;;S-4vaHz;G@*R!xbNBF^E=vc14DCD**{Ec)-r|zy-+~0Wk{nu%FbU zK&%z;il49x>+ljXAi^0VY#<}fh?WjGqJmXY;kZ;lgdecVDnv^JoMBf|d^X?};te1~p2} gXI6cCfWAH8HxwM=FEv&Fxc~qF07*qoM6N<$f|{J!F#rGn diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_forward_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_forward_white_24.png deleted file mode 100644 index 7a5df52bf06badc246f1c775a25735faa2da0142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DG*1`Dkch)?uU+J9Fc4sM^xl8& zxKxvl%B0)`JC%FY^KQT0HfJTHp`(w0@DUau^1+?Tk$wCz`uz9XZ`=3&(BQG1zl7}p&_)JNS3j3^P6Aw5kY-P;;zBe?CIEm6Gyn zbG+{R8u!>;lh{tud@8aC(12(w9zgD*1iAm*bRAXnjz^rC9NQ_bu6+r1s2GvQdvd zdqG}~b}rDXTa@Eo_Xhi0TMoQ8{mETlBO;9NhhKgq&=!1;u=q$2 z2_nI-2;M>wbku@+D1xe5uoH@)=yj9s2Nu|#_mD~M1`^mz_+Qp-YIFh%I#el|UGpfS b`0McnR+sXvad^(?00000NkvXXu0mjfxI)B+ literal 0 HcmV?d00001 diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_mic_off_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_mic_off_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7915f33df69c09fbc22cb39e913205a6f06004 GIT binary patch literal 484 zcmV5}42RexTey86(fe-f{4kyh~{+(!Bv2JQ==%JP-)<&$CY}%iXF4O^C zeZ85VwQV|>k=Fb`*B6Xuh!wdk&kyt=L#)eXFh9^U&Jt6(OkzNU7|13DM2L<-JrE|U zfjChQ#EE(!PSgW&q8^A7aiEfj1C>M^h!A@@A`Arjn;cOO`~-K?yi0~SmDcZrUvXd? zJWcaEazyGguoVYZ!OJv1ph&y|Z{olcFmd|te9T6HSnvZpjssT#kJ6L#M&t<{L$DYI z(&hPG`tP7+*}%la?hJ9pd#^R(fNS=^n&UHTi?%awaU}?(J_oGogoxBA(6$En>Uup< z(iaQ?ymd=At#sY?i3rgs^`sZ}XUE8f9VvMt1f<^dO+JkCA1Vl>o^a0x2Qzd>ThCUR zXheI_4FF5h`6v(xh&O*#UM>;!K#-^eGDLp6>wyB%KNKLH?$6F00+5Klv++Hs?-B5S a0e=92ZRRk`JirnF0000jG{tg#hjv@%| z7X@p1JZNg$v`N1#x4v@>c_ztxnR!Q&3M$B9;i48VK6(idB#eSWm>>i6(t(#6TxQW# z$n-Nx#2`lLL&hV5E<l+u>^Xa7h#sa4f+9MUo^@Nyrg=2)9~;2Au*&nPra{7d-Gu zf&?EtaLy^a%n;QnbbV@><*euhV!WZJS5BDEnxG}~pmwKSo?w@I^3@&NjHli2*Zv7b z$zn&@;u%prvYGr~zs1$0a1$cJG&h*l6;nhAQjx1!G_Xe;EBa!GI=yDMfmN*=_0yOo z{AoUe=GHX+Ca=LmJMX6O@3iMT(;}eXFjLkLS1goM$|5ylrEbb~iTnqeQZZpQE z&7jf!H$2&_HyY#H5dTfoinCiWOt5U#JRa%d53Re?3NCZvFLL%xp%ksWWW~Q|rk3dx zN|q)bCv2yUU(zI4w0l!HNW<^jzlxM|mc*Y??!>m!{AUH8@H(|njSwf!u#-F6JadK3 cwV(|B0Q(+KdOT+vSO5S307*qoM6N<$f+ZvLy8r+H diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_phone_in_talk_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_phone_in_talk_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..a2d78b22172911425b21ae8c79da9041a46ae939 GIT binary patch literal 601 zcmV-f0;c_mP)2+&ocHoAp8q}GJ>GNwyVJYvJ|C&3rlJ@iiq{JL@?f2x%rnh(4yas2 z$rqIex!!P*29=H!e(IEi%@*lXsrZebX63-o1DaF{zTu}`IcQ`rCm7}hX|mq2N5!## zpHuQh2NR@lEz+i9c#5AJDu^IUxZbi;c8uZYkt}Fo7T0~*aTPx+)N2Fld}fBr1eC!J zW^tX74PE#bmM}ijpu(u*2l@WcrVZp8r(O(aaiI2}1HkHxZ04G|Is%jBB!C5?6vj6~s~E z7?&=A(XDDAL>eQ?5&2?2K^nAGjN*#Xt2~5> z12JY8rjHJGQ?K$chAYmHJP4B{-wORI2V-PS(W(r>B=Hwjc^D;)E5d;OBTSNlR4ziS zk~PN&Ni0-8I{84!v=uaRi*-t(t)i1zN}%oFB+n^A+eMHGRw+o8z%D{OBuc(zRT77| n!X2J4&sTntWSO(7si~-co;IymT`&Bo00000NkvXXu0mjf&bbB- literal 0 HcmV?d00001 diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_phone_in_talk_white_36.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_phone_in_talk_white_36.png new file mode 100644 index 0000000000000000000000000000000000000000..9c002da0aaa2865bbe05091e6c63d58b8039d18f GIT binary patch literal 882 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 diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_forward_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_forward_white_24.png deleted file mode 100644 index 7bd5b1635b409f847c9f6de56ebcd92dd767c889..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xb3?wz0qptudo&cW^S0Mc#1}qL(uK@CyOM?7@ z85$T4evO$5IM{I`Q17{UO^%HeUaAwddnQ|Gs;9 z+hbywm1?g@=F;Fx9uvPgKMw;^$RgTZCP9w31C~tWy49xC8?r7}Xi(=JuXxH$ zG|Fu*hcvTn@QZ(S${S|T$%E1?Q^U3smPjQDTHrfz`^KYWKv{NhZHsZ=paL!WsmVis zAk7-Rim0%{JUKF?NRc7OJ)W~gM6XuSK0qUEa-D?H{C7b`Q;FG%;`RLP?( zHpk~4B;6lqjqc7UGK8|+FeT3EZnYm!f$k2NM8(_`hjjPA6_llg*?Y!N4!g=n%ziWO z2HK&Ua|z|R%j{vc_BeE@sHNE`WQNVAQwxt5?=Ldi4JNv?e8W`ZH^40M<}s4YU)Gn(=?Nztv4@ z0;Coj$nh5G7XHoNx=EY)2mrjoSwR<(Dr~{OYpwem*R)7FZwIaBE7EfcHTUfl8KX>v zHzW$_3#;rP$0b1OPk+ZLq_emXpcUSq!CnI?*t=}E_i3(Bu#;>c$2orQ8I5+54dl4t zk>kmH0-iVD(6@j;H`BuH>SCP*g@vMdHj v-!T&5!~yB+=7Dewpg7AxIVcC^przg~#hgE9EZ<_N$R@QMd=1gsk?@jUF3R^8_7n#?5Jtfve4HEyeKp>@WP8eKxLPK&0o^Zal3oP9X+n=|J>BZP~Ki;Ig@*g_?K z0<;h!OoS736Gb6P7sokD8!ZIbgAb3rBBl6gqMay;&gvmdGk!{CtM~{KHXxE;VFLJM zsFV?)!-7a|bMD%491DVqc|g6XNFl4BuSAWLy9B`W_iRlhKU=@PsREh zzgpM8Q;c$-k8I8g3*6%pgSzHb+a3vSIHZ>mp79%_q5b|Nnw9u%q2OgTznHF|I zC2tMuyi$4DB2j5S-wf$2YPLAilm-oiJ58UkA1><_8WDwoXrHj$EW9E& zp%f&!q0U$8L}8(yw5HCoffh%i(nU?7^THXJQq{R7oPu&*=IOj(n{W>5S^$s*Aaf->fKF8x!lC8d4T7LksNi_8DSAMQr}1GmRF QKmY&$07*qoM6N<$f@BP4<^TWy diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_phone_in_talk_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_phone_in_talk_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..9c002da0aaa2865bbe05091e6c63d58b8039d18f GIT binary patch literal 882 zcmV-&1C9KNP)$*B??Bid2L zU?H10M!CJrkv%>pT1koUFy9fhmz->|lQ`Ea5gghW$8WoA@gi|HC^4ED#IIF$SVx>r zSzs|oFpaTXHdsoW6Dq?+&T@nuv@llzT+TO``elc+#A#9ho>4kzln;v;#PqamaF95U zD*(S?TIItXjN=(1ujF`%I4c!Ext%yNum#hzN{*F8+oLjsIe;S<4&UQBMNY|ahS}}I zQ5nL$B?Id)-KXT}W;Q)I3PGMGHu5P!tuiox=WQj&{em5Z%B;rW#-RB!CSv`_WM0){YcQoXSr(*$>`-q?j{ zn445z6!-ztAWKwV+{_rJ<1A8r(ZV#Q<1A4uR`C=oR2#J6_Y+Nuz&t+Te?RgjPjI8s z#_RZvuu8LF9(@FjF~C8(d5u@t$_=U>yYZXkIfbA=A8{_QTGb-QZi4o+P(BpsBZ&c} zfj0;m;t{zh&`UDYN(XIB6V$_X`VR$qNla;>g+B@Ui*~N&3oIx-tl$LY{=tgUM1d}< zq_puUzflFHj|CK&qC%<-ZsT(*qS|3CUt>+R#l3vM3>H*-H1R5bkdQ77E@KT{3=yZK zON-mt%KHp6n@-gS*YXfsDDojkImJ2tW{MJ>P)sTgDs)AvtU*i>TyL#!^fdB+Ln!)|-9gR+6>kAzAkSu24@6 zvl!4Buzi^HQg)cOAE{<&N5V#8Rucs#Fr{Nu(xYQw^Du3M1q|Q<)f9yfTZ(DpEMWl6 zETdbvutk_Q(Hy4j4CP_MUcj`ej$i;gC<+T!foYF9gh2xn!hy}iw7E#etz&g(GV<#8M))wNfVWpV14KZ9k53`GZ$kcA~-NJ6cv^u0+>(6>F zlfM1ryM*PF!mK8w-MfJrlB8=Fad$AG0mCehw58OOuFWoCUt-#Wh}F8XmK6Htxr2Rx zX{!+HP2mE%5{!2RtHQK{h=UEL0bRdQ4>te zs8zUul@aW`qyMuS)G85W8&O-}1|}RN*k&iNYSgN7_?soJVB-juVk~m)O)y(6!H(0- ze^?1u3HGM{FrgY<^z$7i+>5R+i2Du`-bL42{==^46uM^n4iiR^(El>% zJ4|>5T`iRQ4vVoLU5yO(8zvO-E4u#VR=;7wa4zd<7EdkzT7U@;kwjM`cOi!B&KiCP z8u^gv^yyrf@FMzJ48M@Qm5XeGBfP;hO33RRn6M6gZ9Hwx($qpd+j*V&JV7~=7*8n$ z9RbVZ9n!UtxFt(pGgah;4HIH)BV7l$DJ$zR?P*Q;Fd?3S_7{^vU_p|S@L@tM!wZ>W z1BHlYz06ojl^p>S@>oaueqyv^7A!M>S#B;#(v{+E`Z#34@{WTE1^^_8+EScb?>+FEH~BWD)hWulcTF z?pI6&yJ*3zd)&an-*t>)As=y$T-u9x08@4|Wh`VX2RKU-J*$_0F!ebWGn`4xU^dUQ zfF;aVUP3L*>qRj0MX(4K!6H}$i(nBff<>@@0a@j>2FPu)?EnA(07*qoM6N<$g3M5A A*Z=?k literal 0 HcmV?d00001 diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_18.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_18.png deleted file mode 100644 index 919a872e0ec9cc1df7151acb3c2b54a5118bd1c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmV-80muG{P)K!nn95@%sxPdXGyf{aSIXBA6WezA`4k%ylaw=>299)frF(oZ_xk#6B zKoQ1V8Ebx0gaOx-u}N~pq$#j(1r}IfyWYOGyI>9l1|2%7I`2ux|6?b+e)$_#YZX=5 z^_{3qbs0-)k-M?m2c$as;OT&Sw#%6*z>quis{8Y1y{p`6R2egF6Gjwbww^eq7-Np9 z_BX#wgR%n!7;{W9#vD_C!A9el@_d?LiZLEPy3|Ten8O0&1@-}7BlnaB8b!?j0000< KMNUMnLSTZ-aDsUN diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_bluetooth_audio_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_bluetooth_audio_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1fa206bfd00b1d9c63ded6af8ec823a71c2c4c GIT binary patch literal 945 zcmV;i15W&jP))F*E z3PeZ|K!g+lOh^*Igwz2{ND{z=BmqoF62OEc0Zd2|z=R|LKEVKN!zB7_z&|7C`0oJZ z&;+!GpyMxb0=!xuf{0HwO9TaI_Xs{<5?oBsfXpNKfIiF$f&%!2jRrsw zG{7cY#{~nR2pV7#ZUFd+T^=A#=+^*?Fp8xbHvo#D07Q6?qB<8j=S?ivJoYGnK@b3S zgzxB#{`FUCOapZHYeEU2U&iNtO!Jy(699|QkN_D!=)>STsQ^A94ru831wBQxr!>GP z1OOv`h5?$tfSnrP6GA`(bA|D{fiDHyKhoX<2EZWb_?NL%2ZNCZwEsxe z0RBHl$L}eP4-5ulXXpqM2EZodk@zE6se8fbaXQAd50C^SKJYRaKSJX(2EZW1<6i++ z_%+_m*AD|=5OVZJ<8%E8=CslHybq8BBR;SYF6e1|@qYr`T@_#hjsI@>M@SInf;n5n zc(q?*n=m83#9tkNj_(tu#JcQ5YcFJ)FfJ}+&suvck)uZtPKjHII}Sj{_X+!hk^8j& zpaGEaeZpsXJKb#nWPG1+O)O}BVUq{Y@$+!?yN289?P5v!BA%zJ_c{V@324v`66X6!kI%)t!eE%n=vypS&=Ec4S*zv`We6LYZ z^doBQU*VVr*zpCRL&cBunEw1LfR3*L9hi>Amwgrc9Dt6m0Zx3~0`OeN7XT~157>&g z99a7*A=uoiUUgHN?1tE(&rB3v$IS zwzRH5_J%Zeu_uqBw~Hd}n0L;ekGJ^U!2gl>*qu3N>W5$cHWOqcSO5!PEPw?t7Qg}+ z3-BK;EMpzJIKmk&agDFy8kac35q7bTWwb27_)4_V!6`;?w=}{jI%uP`076XTG4?Tp zYuFHbSj2SB0SdfC4{ky(u!16|03|l@5iSq|Y@$p(z*F?$0@cHl6ay^a4O}E%V?LDt zFEE6Q%qKjLIlvwK3KzL;6tM-khqrKvIL2%&0UqETTw=~K7kYs2@BuDSAMh~L01qJJ zC+$7vLJM#Y@8B|Vj@eKG6nG1lnLjZTLV#CrncALofERF?`*BhM7BGa%+-EFIBETEC zMBQK?ZcGQh13XQ9{O>V^3T{koUja(=(;px8BJ@%E2(X#a_;n*}G##M8$IQmB6Jda& z$p9}?A73HDYEuEG(MxrF#Q;4_Hxb}5Z2a*oHW6Uo#vj|Bc7PIp+4y4{qSOq~w()Cg zYX<1p__b|m1~|3xYdg^j(89>ZuWf{uMu24-|C=po1X#E6zuB5bfL*v-+Q&^!|2xyfaGai|gCOksQ>5i%HGbTtB8DvYlXA+GU7Un9V^!uSdi;u>FEX$1JH zFup>BxW*S>0uBI)kk)+tm%Io?LR`4W5O-pFG_gu(eEmlg#UfmTsuac-kD7Ws{lb5Q z=*GWj#8eeSqdQG+GF+wck_cUKqt^bdi zdE)!1f&)17uh)|}D`Fm>;WGCL^WFo9=Wv;OHt7SKw&60>3FXMLW4O%x5yX*YVixCc zndstfXvbF0Wpr%i{ZJ2XeVBNJ_u(GgDlnJmkE1T`$8vc0ERGZVg?l%)@v?SoG4!Ad4esw%(K20mav8$9HNUpuJA=%p^q*Ov4b@%*>$$Y n0$2cJ0W5&A02aVlfYAH{#hao!`f`FU00000NkvXXu0mjfl-ASn diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_forward_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_forward_white_24.png deleted file mode 100644 index 428009cfef832b5550aaf239445750a1fed9fb5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeG3?%1&o4*=J@dWsUxB}__Fko@OdIgZrToU9L z%+SDa@N3LeAh*ZU#WAFU@$HqhqK6#>m=mwBzO+t7RB74v#A9lb33L~Or>mdKI;Vst0B;vpKL7v# diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_headset_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_headset_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..0f0b2e15443da158d9c5b8c558ab88a408b95868 GIT binary patch literal 838 zcmV-M1G)T(P)6Osl}Xqmpg5w49OvcRQ8OCt&f z%2h-dvy6SUuW zlY#C5df4KMu>HYnB)S2Z;S^W>%#(freH`Gr_v!To80QC~=sO5Mh(byc!VlP%+rtQF#SBmM^tIoKP*NGSf$bSK-?zvzt?$? zowkQ>gBPO$o$bNC;)TRXw?yEOu)(Taho5~tZTqHWtyw7j0rib z+|XQ!M_dB>S{|H5CNK_Wk~5kskaPz)ptwaTKhoTLt^hMFAO9hY!+E$R;RzRj z9!`-J$zUAMDCfw2A`u?2g{;B^CW4vd2H8efz#v!1mN5~{OUN$i4+q#qc7%y=K0$Uj z3?PYo;g?BA3K&JcoiDgAIA96cCMM$9LH1m5fc#heS9&7{+|Q-h^^2f@F=Tfz9_9_? zPakJ!Ct50DwpBU69^6rcdVqX4_?fwn0? z0SZun0u-PC1t>rP3Q&Lo6yOVR8!JH79&i>bK+zuXS*!qgd%)|l0&Lg=veaV(s4-#> zFnkyrz#%3GV1#lk040Wl0SwQ^0MK9|%r|o{)95Oo!CKhQE}!Agt^rCcxcG86%?H%H z18N*H?C$IJ46l->NHuaml_GgI-fw*~ht^_A8_p{OnG zCJ=&RLKX>xyg(2Ffg}b*r4fXvxzS2SG!9Jg69q=8E8ar;l2$K}N zfBHTR9w%Ug7?|=Rv~z$@`?Q7!*w@FCu!L`ag$LNz_ak&r!M6%+;Q{vbeF)HF}2 zNq_`|Ws-CuJfOf-BElv~+6Vv;5=tcLC;&i6h)7fbfROM$kvc$5PzT5f>Hs-G9Uv#@ z0_21~B6WbApbn4|)B$pWIzUcP2gnJ!06F13B6WbApbn4|)B$pWIzUcP2gnKP069Sy zASd(^sRQH$eSn*A=ugNZz*qo3LPi1pgkuLpl%MaGvADw(fZS z0eBPKTc_Hd0O0ZV2aXG!0}-LXQ>xuhAFzs*<2#ly5D{9jyO=&;8oQ4$b!(w4BJ^YT zYx;m8?0$Bf_!9(#U$FZkeLyF6_Z%l$c-%Chz(ed_69XDPXWn(37$9zv(2Lz&ObEaP zcKRDn-{mmW&UBFITpCY2F~OJgJdnNB1%p$$X4WA zo@f#b^0l%=Ow!8y&Tn#pA)R%zNEzP_`GYPD1*WA0LwY;Q58S3vH~7YSMu`cAwD&SY z%yOOjt}(;syo9kQCm2G_|2we)GyVj9fSjNYkQ4L)a)LggO@N%B01y!- zvk$NdbJP~|b@l-MgqW`|Sp)bJV!p&=4d73R8OCH5;PKHmjFAIWmjePW2jqYpkOOi+ c4#)w|08MwkKa}4vHUIzs07*qoM6N<$f?~y!82|tP literal 0 HcmV?d00001 diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_network_wifi_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_network_wifi_white_24.png deleted file mode 100644 index eb284e3838ab78a7be6a1e1007894dfc8978985d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 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 X&`Qx*g5YEG00000NkvXXu0mjfkbxQ{ literal 0 HcmV?d00001 diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_18.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_18.png deleted file mode 100644 index aed7668042f3e0e5843335384e0e0fb6c074cf96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmV-a0jvIrP)XpRjji30$wDk+(xOH$$Jk<>UkBvlRobV($2P8!LC6HhYZJV}Ki zCz!J#$=*&BNJ5f+tVqy&lJxFGgMfY>2www%Ac6=Yh#-Op`jq_baREvQK?L~(-EcsO z5=RUkKvyiL$tA|$gZ9Df*#gvv&Mbr3t*q*s2g=b34&4N^JCo*7L^=hNwNVi&APrbe zQ)}GKdRYN!#03>9)P|fFsWbT-#<$icq_h%Uos{0`tCAY6rn+;)Q6n|l+m6l=$KiU) m;R4U$iqqi|m|+;^AMyaLjQyY#Q(tTV0000 + + diff --git a/assets/quantum/res/drawable/quantum_ic_call_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_call_vd_theme_24.xml new file mode 100644 index 0000000000..1fbafeb833 --- /dev/null +++ b/assets/quantum/res/drawable/quantum_ic_call_vd_theme_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/assets/quantum/res/drawable/quantum_ic_close_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_close_vd_theme_24.xml new file mode 100644 index 0000000000..3f9973200c --- /dev/null +++ b/assets/quantum/res/drawable/quantum_ic_close_vd_theme_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/assets/quantum/res/drawable/quantum_ic_enterprise_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_enterprise_vd_theme_24.xml index 4f1fd4920f..6495ac7eb3 100644 --- a/assets/quantum/res/drawable/quantum_ic_enterprise_vd_theme_24.xml +++ b/assets/quantum/res/drawable/quantum_ic_enterprise_vd_theme_24.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/assets/quantum/res/drawable/quantum_ic_hd_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_hd_vd_theme_24.xml index c67509cbfe..b6da8a0481 100644 --- a/assets/quantum/res/drawable/quantum_ic_hd_vd_theme_24.xml +++ b/assets/quantum/res/drawable/quantum_ic_hd_vd_theme_24.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/assets/quantum/res/drawable/quantum_ic_history_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_history_vd_theme_24.xml new file mode 100644 index 0000000000..d8567f54b3 --- /dev/null +++ b/assets/quantum/res/drawable/quantum_ic_history_vd_theme_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/assets/quantum/res/drawable/quantum_ic_message_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_message_vd_theme_24.xml new file mode 100644 index 0000000000..280fa262c1 --- /dev/null +++ b/assets/quantum/res/drawable/quantum_ic_message_vd_theme_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/assets/quantum/res/drawable/quantum_ic_person_add_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_person_add_vd_theme_24.xml new file mode 100644 index 0000000000..cf4e563df2 --- /dev/null +++ b/assets/quantum/res/drawable/quantum_ic_person_add_vd_theme_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/assets/quantum/res/drawable/quantum_ic_search_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_search_vd_theme_24.xml new file mode 100644 index 0000000000..083d63644d --- /dev/null +++ b/assets/quantum/res/drawable/quantum_ic_search_vd_theme_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/assets/quantum/res/drawable/quantum_ic_videocam_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_videocam_vd_theme_24.xml new file mode 100644 index 0000000000..429061af06 --- /dev/null +++ b/assets/quantum/res/drawable/quantum_ic_videocam_vd_theme_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/java/com/android/contacts/common/ClipboardUtils.java b/java/com/android/contacts/common/ClipboardUtils.java index 9345b0f9c1..3d76839413 100644 --- a/java/com/android/contacts/common/ClipboardUtils.java +++ b/java/com/android/contacts/common/ClipboardUtils.java @@ -24,8 +24,6 @@ import android.widget.Toast; public class ClipboardUtils { - private static final String TAG = "ClipboardUtils"; - private ClipboardUtils() {} /** diff --git a/java/com/android/contacts/common/ContactPhotoManager.java b/java/com/android/contacts/common/ContactPhotoManager.java index 169348b25f..3e1a78f638 100644 --- a/java/com/android/contacts/common/ContactPhotoManager.java +++ b/java/com/android/contacts/common/ContactPhotoManager.java @@ -36,14 +36,6 @@ import com.android.dialer.util.PermissionsUtil; /** Asynchronously loads contact photos and maintains a cache of photos. */ public abstract class ContactPhotoManager implements ComponentCallbacks2 { - /** Contact type constants used for default letter images */ - public static final int TYPE_PERSON = LetterTileDrawable.TYPE_PERSON; - - public static final int TYPE_SPAM = LetterTileDrawable.TYPE_SPAM; - public static final int TYPE_BUSINESS = LetterTileDrawable.TYPE_BUSINESS; - public static final int TYPE_VOICEMAIL = LetterTileDrawable.TYPE_VOICEMAIL; - public static final int TYPE_DEFAULT = LetterTileDrawable.TYPE_DEFAULT; - public static final int TYPE_GENERIC_AVATAR = LetterTileDrawable.TYPE_GENERIC_AVATAR; /** Scale and offset default constants used for default letter images */ public static final float SCALE_DEFAULT = 1.0f; @@ -88,7 +80,7 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 { if (!TextUtils.isEmpty(request.identifier)) { builder.appendQueryParameter(IDENTIFIER_PARAM_KEY, request.identifier); } - if (request.contactType != TYPE_DEFAULT) { + if (request.contactType != LetterTileDrawable.TYPE_DEFAULT) { builder.appendQueryParameter(CONTACT_TYPE_PARAM_KEY, String.valueOf(request.contactType)); } if (request.scale != SCALE_DEFAULT) { @@ -114,7 +106,7 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 { public static String appendBusinessContactType(String photoUrl) { Uri uri = Uri.parse(photoUrl); Builder builder = uri.buildUpon(); - builder.encodedFragment(String.valueOf(TYPE_BUSINESS)); + builder.encodedFragment(String.valueOf(LetterTileDrawable.TYPE_BUSINESS)); return builder.build().toString(); } @@ -147,7 +139,7 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 { String encodedFragment = photoUri.getEncodedFragment(); return !TextUtils.isEmpty(encodedFragment) - && encodedFragment.equals(String.valueOf(TYPE_BUSINESS)); + && encodedFragment.equals(String.valueOf(LetterTileDrawable.TYPE_BUSINESS)); } protected static DefaultImageRequest getDefaultImageRequestFromUri(Uri uri) { @@ -378,7 +370,7 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 { * be returned. */ public static final DefaultImageRequest EMPTY_DEFAULT_BUSINESS_IMAGE_REQUEST = - new DefaultImageRequest(null, null, TYPE_BUSINESS, false); + new DefaultImageRequest(null, null, LetterTileDrawable.TYPE_BUSINESS, false); /** * Used to indicate that a circular drawable that represents a contact without any contact * details should be returned. @@ -390,7 +382,7 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 { * should be returned. */ public static final DefaultImageRequest EMPTY_CIRCULAR_BUSINESS_IMAGE_REQUEST = - new DefaultImageRequest(null, null, TYPE_BUSINESS, true); + new DefaultImageRequest(null, null, LetterTileDrawable.TYPE_BUSINESS, true); /** The contact's display name. The display name is used to */ public String displayName; /** @@ -403,10 +395,9 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 { /** * The type of this contact. This contact type may be used to decide the kind of image to use in * the case where a unique letter cannot be generated from the contact's display name and - * identifier. See: {@link #TYPE_PERSON} {@link #TYPE_BUSINESS} {@link #TYPE_PERSON} {@link - * #TYPE_DEFAULT} + * identifier. */ - public int contactType = TYPE_DEFAULT; + public @LetterTileDrawable.ContactType int contactType = LetterTileDrawable.TYPE_DEFAULT; /** * The amount to scale the letter or bitmap to, as a ratio of its default size (from a range of * 0.0f to 2.0f). The default value is 1.0f. @@ -429,7 +420,13 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 { public DefaultImageRequest() {} public DefaultImageRequest(String displayName, String identifier, boolean isCircular) { - this(displayName, identifier, TYPE_DEFAULT, SCALE_DEFAULT, OFFSET_DEFAULT, isCircular); + this( + displayName, + identifier, + LetterTileDrawable.TYPE_DEFAULT, + SCALE_DEFAULT, + OFFSET_DEFAULT, + isCircular); } public DefaultImageRequest( diff --git a/java/com/android/contacts/common/ContactPhotoManagerImpl.java b/java/com/android/contacts/common/ContactPhotoManagerImpl.java index 2e6ff9fdc4..28ecf34217 100644 --- a/java/com/android/contacts/common/ContactPhotoManagerImpl.java +++ b/java/com/android/contacts/common/ContactPhotoManagerImpl.java @@ -53,9 +53,9 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.android.contacts.common.util.BitmapUtil; -import com.android.contacts.common.util.TrafficStatsTags; import com.android.contacts.common.util.UriUtils; import com.android.dialer.common.LogUtil; +import com.android.dialer.constants.TrafficStatsTags; import com.android.dialer.util.PermissionsUtil; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -634,8 +634,9 @@ class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback { } return true; } + default: + return false; } - return false; } public void ensureLoaderThread() { diff --git a/java/com/android/contacts/common/ContactStatusUtil.java b/java/com/android/contacts/common/ContactStatusUtil.java index 97d84c8766..c5347e778c 100644 --- a/java/com/android/contacts/common/ContactStatusUtil.java +++ b/java/com/android/contacts/common/ContactStatusUtil.java @@ -23,8 +23,6 @@ import android.provider.ContactsContract.StatusUpdates; /** Provides static function to get default contact status message. */ public class ContactStatusUtil { - private static final String TAG = "ContactStatusUtil"; - public static String getStatusString(Context context, int presence) { Resources resources = context.getResources(); switch (presence) { diff --git a/java/com/android/contacts/common/ContactsUtils.java b/java/com/android/contacts/common/ContactsUtils.java index 60af44b9af..66ccc90e7c 100644 --- a/java/com/android/contacts/common/ContactsUtils.java +++ b/java/com/android/contacts/common/ContactsUtils.java @@ -16,184 +16,17 @@ package com.android.contacts.common; -import android.content.Context; -import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.provider.ContactsContract.CommonDataKinds.Im; -import android.provider.ContactsContract.DisplayPhoto; +import android.provider.ContactsContract.Contacts; import android.support.annotation.IntDef; -import android.text.TextUtils; -import android.util.Pair; -import com.android.contacts.common.compat.ContactsCompat; import com.android.contacts.common.compat.DirectoryCompat; -import com.android.contacts.common.model.AccountTypeManager; -import com.android.contacts.common.model.account.AccountWithDataSet; -import com.android.contacts.common.model.dataitem.ImDataItem; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import java.util.List; public class ContactsUtils { // Telecomm related schemes are in CallUtil - public static final String SCHEME_IMTO = "imto"; - public static final String SCHEME_MAILTO = "mailto"; - public static final String SCHEME_SMSTO = "smsto"; public static final long USER_TYPE_CURRENT = 0; public static final long USER_TYPE_WORK = 1; - private static final String TAG = "ContactsUtils"; - private static final int DEFAULT_THUMBNAIL_SIZE = 96; - private static int sThumbnailSize = -1; - - /** - * This looks up the provider name defined in ProviderNames from the predefined IM protocol id. - * This is used for interacting with the IM application. - * - * @param protocol the protocol ID - * @return the provider name the IM app uses for the given protocol, or null if no provider is - * defined for the given protocol - * @hide - */ - public static String lookupProviderNameFromId(int protocol) { - switch (protocol) { - case Im.PROTOCOL_GOOGLE_TALK: - return ProviderNames.GTALK; - case Im.PROTOCOL_AIM: - return ProviderNames.AIM; - case Im.PROTOCOL_MSN: - return ProviderNames.MSN; - case Im.PROTOCOL_YAHOO: - return ProviderNames.YAHOO; - case Im.PROTOCOL_ICQ: - return ProviderNames.ICQ; - case Im.PROTOCOL_JABBER: - return ProviderNames.JABBER; - case Im.PROTOCOL_SKYPE: - return ProviderNames.SKYPE; - case Im.PROTOCOL_QQ: - return ProviderNames.QQ; - } - return null; - } - - /** - * Test if the given {@link CharSequence} contains any graphic characters, first checking {@link - * TextUtils#isEmpty(CharSequence)} to handle null. - */ - public static boolean isGraphic(CharSequence str) { - return !TextUtils.isEmpty(str) && TextUtils.isGraphic(str); - } - - /** Returns true if two objects are considered equal. Two null references are equal here. */ - public static boolean areObjectsEqual(Object a, Object b) { - return a == b || (a != null && a.equals(b)); - } - - /** Returns true if two {@link Intent}s are both null, or have the same action. */ - public static final boolean areIntentActionEqual(Intent a, Intent b) { - if (a == b) { - return true; - } - if (a == null || b == null) { - return false; - } - return TextUtils.equals(a.getAction(), b.getAction()); - } - - public static boolean areGroupWritableAccountsAvailable(Context context) { - final List accounts = - AccountTypeManager.getInstance(context).getGroupWritableAccounts(); - return !accounts.isEmpty(); - } - - /** - * Returns the size (width and height) of thumbnail pictures as configured in the provider. This - * can safely be called from the UI thread, as the provider can serve this without performing a - * database access - */ - public static int getThumbnailSize(Context context) { - if (sThumbnailSize == -1) { - final Cursor c = - context - .getContentResolver() - .query( - DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI, - new String[] {DisplayPhoto.THUMBNAIL_MAX_DIM}, - null, - null, - null); - if (c != null) { - try { - if (c.moveToFirst()) { - sThumbnailSize = c.getInt(0); - } - } finally { - c.close(); - } - } - } - return sThumbnailSize != -1 ? sThumbnailSize : DEFAULT_THUMBNAIL_SIZE; - } - - private static Intent getCustomImIntent(ImDataItem im, int protocol) { - String host = im.getCustomProtocol(); - final String data = im.getData(); - if (TextUtils.isEmpty(data)) { - return null; - } - if (protocol != Im.PROTOCOL_CUSTOM) { - // Try bringing in a well-known host for specific protocols - host = ContactsUtils.lookupProviderNameFromId(protocol); - } - if (TextUtils.isEmpty(host)) { - return null; - } - final String authority = host.toLowerCase(); - final Uri imUri = - new Uri.Builder().scheme(SCHEME_IMTO).authority(authority).appendPath(data).build(); - final Intent intent = new Intent(Intent.ACTION_SENDTO, imUri); - return intent; - } - - /** - * Returns the proper Intent for an ImDatItem. If available, a secondary intent is stored in the - * second Pair slot - */ - public static Pair buildImIntent(Context context, ImDataItem im) { - Intent intent = null; - Intent secondaryIntent = null; - final boolean isEmail = im.isCreatedFromEmail(); - - if (!isEmail && !im.isProtocolValid()) { - return new Pair<>(null, null); - } - - final String data = im.getData(); - if (TextUtils.isEmpty(data)) { - return new Pair<>(null, null); - } - - final int protocol = isEmail ? Im.PROTOCOL_GOOGLE_TALK : im.getProtocol(); - - if (protocol == Im.PROTOCOL_GOOGLE_TALK) { - final int chatCapability = im.getChatCapability(); - if ((chatCapability & Im.CAPABILITY_HAS_CAMERA) != 0) { - intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?message")); - secondaryIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?call")); - } else if ((chatCapability & Im.CAPABILITY_HAS_VOICE) != 0) { - // Allow Talking and Texting - intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?message")); - secondaryIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?call")); - } else { - intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?message")); - } - } else { - // Build an IM Intent - intent = getCustomImIntent(im, protocol); - } - return new Pair<>(intent, secondaryIntent); - } /** * Determine UserType from directory id and contact id. @@ -232,27 +65,13 @@ public class ContactsUtils { : USER_TYPE_CURRENT; } // Only check contact id if directory id is null - if (contactId != null && contactId != 0L && ContactsCompat.isEnterpriseContactId(contactId)) { + if (contactId != null && contactId != 0L && Contacts.isEnterpriseContactId(contactId)) { return USER_TYPE_WORK; } else { return USER_TYPE_CURRENT; } } - // TODO find a proper place for the canonical version of these - public interface ProviderNames { - - String YAHOO = "Yahoo"; - String GTALK = "GTalk"; - String MSN = "MSN"; - String ICQ = "ICQ"; - String AIM = "AIM"; - String XMPP = "XMPP"; - String JABBER = "JABBER"; - String SKYPE = "SKYPE"; - String QQ = "QQ"; - } - /** * UserType indicates the user type of the contact. If the contact is from Work User (Work Profile * in Android Multi-User System), it's {@link #USER_TYPE_WORK}, otherwise, {@link diff --git a/java/com/android/contacts/common/GeoUtil.java b/java/com/android/contacts/common/GeoUtil.java deleted file mode 100644 index 50b0cd9e37..0000000000 --- a/java/com/android/contacts/common/GeoUtil.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.contacts.common; - -import android.app.Application; -import android.content.Context; -import com.android.contacts.common.location.CountryDetector; -import com.google.i18n.phonenumbers.NumberParseException; -import com.google.i18n.phonenumbers.PhoneNumberUtil; -import com.google.i18n.phonenumbers.Phonenumber; -import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder; -import java.util.Locale; - -/** Static methods related to Geo. */ -public class GeoUtil { - - /** - * Returns the country code of the country the user is currently in. Before calling this method, - * make sure that {@link CountryDetector#initialize(Context)} has already been called in {@link - * Application#onCreate()}. - * - * @return The ISO 3166-1 two letters country code of the country the user is in. - */ - public static String getCurrentCountryIso(Context context) { - // The {@link CountryDetector} should never return null so this is safe to return as-is. - return CountryDetector.getInstance(context).getCurrentCountryIso(); - } - - public static String getGeocodedLocationFor(Context context, String phoneNumber) { - final PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance(); - final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance(); - try { - final Phonenumber.PhoneNumber structuredPhoneNumber = - phoneNumberUtil.parse(phoneNumber, getCurrentCountryIso(context)); - final Locale locale = context.getResources().getConfiguration().locale; - return geocoder.getDescriptionForNumber(structuredPhoneNumber, locale); - } catch (NumberParseException e) { - return null; - } - } -} diff --git a/java/com/android/contacts/common/MoreContactUtils.java b/java/com/android/contacts/common/MoreContactUtils.java index 028f899715..26241b34f8 100644 --- a/java/com/android/contacts/common/MoreContactUtils.java +++ b/java/com/android/contacts/common/MoreContactUtils.java @@ -16,7 +16,6 @@ package com.android.contacts.common; -import android.content.Context; import android.content.Intent; import android.graphics.Rect; import android.net.Uri; @@ -24,7 +23,6 @@ import android.provider.ContactsContract; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import android.view.View; -import android.widget.TextView; import com.android.contacts.common.model.account.AccountType; import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; @@ -193,40 +191,6 @@ public class MoreContactUtils { return rect; } - /** - * Returns a header view based on the R.layout.list_separator, where the containing {@link - * android.widget.TextView} is set using the given textResourceId. - */ - public static TextView createHeaderView(Context context, int textResourceId) { - final TextView textView = (TextView) View.inflate(context, R.layout.list_separator, null); - textView.setText(context.getString(textResourceId)); - return textView; - } - - /** - * Set the top padding on the header view dynamically, based on whether the header is in the first - * row or not. - */ - public static void setHeaderViewBottomPadding( - Context context, TextView textView, boolean isFirstRow) { - final int topPadding; - if (isFirstRow) { - topPadding = - (int) - context - .getResources() - .getDimension(R.dimen.frequently_contacted_title_top_margin_when_first_row); - } else { - topPadding = - (int) context.getResources().getDimension(R.dimen.frequently_contacted_title_top_margin); - } - textView.setPaddingRelative( - textView.getPaddingStart(), - topPadding, - textView.getPaddingEnd(), - textView.getPaddingBottom()); - } - /** * Returns the intent to launch for the given invitable account type and contact lookup URI. This * will return null if the account type is not invitable (i.e. there is no {@link diff --git a/java/com/android/contacts/common/compat/ContactsCompat.java b/java/com/android/contacts/common/compat/ContactsCompat.java index 39d0b55d37..e0c9b7e531 100644 --- a/java/com/android/contacts/common/compat/ContactsCompat.java +++ b/java/com/android/contacts/common/compat/ContactsCompat.java @@ -21,7 +21,6 @@ import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; -import com.android.dialer.compat.CompatUtils; /** Compatibility class for {@link ContactsContract.Contacts} */ public class ContactsCompat { @@ -29,8 +28,6 @@ public class ContactsCompat { // TODO: Use N APIs private static final Uri ENTERPRISE_CONTENT_FILTER_URI = Uri.withAppendedPath(Contacts.CONTENT_URI, "filter_enterprise"); - // Copied from ContactsContract.Contacts#ENTERPRISE_CONTACT_ID_BASE, which is hidden. - private static final long ENTERPRISE_CONTACT_ID_BASE = 1000000000; /** Not instantiable. */ private ContactsCompat() {} @@ -41,17 +38,4 @@ public class ContactsCompat { } return Contacts.CONTENT_FILTER_URI; } - - /** - * Return {@code true} if a contact ID is from the contacts provider on the enterprise profile. - */ - public static boolean isEnterpriseContactId(long contactId) { - if (CompatUtils.isLollipopCompatible()) { - return Contacts.isEnterpriseContactId(contactId); - } else { - // copied from ContactsContract.Contacts.isEnterpriseContactId - return (contactId >= ENTERPRISE_CONTACT_ID_BASE) - && (contactId < ContactsContract.Profile.MIN_ID); - } - } } diff --git a/java/com/android/contacts/common/compat/PhoneAccountCompat.java b/java/com/android/contacts/common/compat/PhoneAccountCompat.java index 6a24ec0335..aa22c68613 100644 --- a/java/com/android/contacts/common/compat/PhoneAccountCompat.java +++ b/java/com/android/contacts/common/compat/PhoneAccountCompat.java @@ -20,33 +20,10 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.support.annotation.Nullable; import android.telecom.PhoneAccount; -import android.util.Log; -import com.android.dialer.compat.CompatUtils; /** Compatiblity class for {@link android.telecom.PhoneAccount} */ public class PhoneAccountCompat { - private static final String TAG = PhoneAccountCompat.class.getSimpleName(); - - /** - * Gets the {@link Icon} associated with the given {@link PhoneAccount} - * - * @param phoneAccount the PhoneAccount from which to retrieve the Icon - * @return the Icon, or null - */ - @Nullable - public static Icon getIcon(@Nullable PhoneAccount phoneAccount) { - if (phoneAccount == null) { - return null; - } - - if (CompatUtils.isMarshmallowCompatible()) { - return phoneAccount.getIcon(); - } - - return null; - } - /** * Builds and returns an icon {@code Drawable} to represent this {@code PhoneAccount} in a user * interface. @@ -61,44 +38,16 @@ public class PhoneAccountCompat { if (phoneAccount == null || context == null) { return null; } - - if (CompatUtils.isMarshmallowCompatible()) { - return createIconDrawableMarshmallow(phoneAccount, context); - } - - if (CompatUtils.isLollipopMr1Compatible()) { - return createIconDrawableLollipopMr1(phoneAccount, context); - } - return null; + return createIconDrawableMarshmallow(phoneAccount, context); } @Nullable private static Drawable createIconDrawableMarshmallow( PhoneAccount phoneAccount, Context context) { - Icon accountIcon = getIcon(phoneAccount); + Icon accountIcon = phoneAccount.getIcon(); if (accountIcon == null) { return null; } return accountIcon.loadDrawable(context); } - - @Nullable - private static Drawable createIconDrawableLollipopMr1( - PhoneAccount phoneAccount, Context context) { - try { - return (Drawable) - PhoneAccount.class - .getMethod("createIconDrawable", Context.class) - .invoke(phoneAccount, context); - } catch (ReflectiveOperationException e) { - return null; - } catch (Throwable t) { - Log.e( - TAG, - "Unexpected exception when attempting to call " - + "android.telecom.PhoneAccount#createIconDrawable", - t); - return null; - } - } } diff --git a/java/com/android/contacts/common/compat/PhoneNumberUtilsCompat.java b/java/com/android/contacts/common/compat/PhoneNumberUtilsCompat.java index 960b340d8a..a6cfe07cde 100644 --- a/java/com/android/contacts/common/compat/PhoneNumberUtilsCompat.java +++ b/java/com/android/contacts/common/compat/PhoneNumberUtilsCompat.java @@ -17,13 +17,7 @@ package com.android.contacts.common.compat; import android.telephony.PhoneNumberUtils; -import android.text.Spannable; -import android.text.TextUtils; import android.text.style.TtsSpan; -import com.android.dialer.compat.CompatUtils; -import com.google.i18n.phonenumbers.NumberParseException; -import com.google.i18n.phonenumbers.PhoneNumberUtil; -import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; /** * This class contains static utility methods extracted from PhoneNumberUtils, and the methods were @@ -37,138 +31,16 @@ public class PhoneNumberUtilsCompat { /** Not instantiable. */ private PhoneNumberUtilsCompat() {} - public static String normalizeNumber(String phoneNumber) { - if (CompatUtils.isLollipopCompatible()) { - return PhoneNumberUtils.normalizeNumber(phoneNumber); - } else { - return normalizeNumberInternal(phoneNumber); - } - } - - /** Implementation copied from {@link PhoneNumberUtils#normalizeNumber} */ - private static String normalizeNumberInternal(String phoneNumber) { - if (TextUtils.isEmpty(phoneNumber)) { - return ""; - } - StringBuilder sb = new StringBuilder(); - int len = phoneNumber.length(); - for (int i = 0; i < len; i++) { - char c = phoneNumber.charAt(i); - // Character.digit() supports ASCII and Unicode digits (fullwidth, Arabic-Indic, etc.) - int digit = Character.digit(c, 10); - if (digit != -1) { - sb.append(digit); - } else if (sb.length() == 0 && c == '+') { - sb.append(c); - } else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { - return normalizeNumber(PhoneNumberUtils.convertKeypadLettersToDigits(phoneNumber)); - } - } - return sb.toString(); - } - public static String formatNumber( String phoneNumber, String phoneNumberE164, String defaultCountryIso) { - if (CompatUtils.isLollipopCompatible()) { return PhoneNumberUtils.formatNumber(phoneNumber, phoneNumberE164, defaultCountryIso); - } else { - // This method was deprecated in API level 21, so it's only used on pre-L SDKs. - return PhoneNumberUtils.formatNumber(phoneNumber); - } } public static CharSequence createTtsSpannable(CharSequence phoneNumber) { - if (CompatUtils.isMarshmallowCompatible()) { - return PhoneNumberUtils.createTtsSpannable(phoneNumber); - } else { - return createTtsSpannableInternal(phoneNumber); - } + return PhoneNumberUtils.createTtsSpannable(phoneNumber); } public static TtsSpan createTtsSpan(String phoneNumber) { - if (CompatUtils.isMarshmallowCompatible()) { - return PhoneNumberUtils.createTtsSpan(phoneNumber); - } else if (CompatUtils.isLollipopCompatible()) { - return createTtsSpanLollipop(phoneNumber); - } else { - return null; - } - } - - /** Copied from {@link PhoneNumberUtils#createTtsSpannable} */ - private static CharSequence createTtsSpannableInternal(CharSequence phoneNumber) { - if (phoneNumber == null) { - return null; - } - Spannable spannable = Spannable.Factory.getInstance().newSpannable(phoneNumber); - addTtsSpanInternal(spannable, 0, spannable.length()); - return spannable; - } - - /** Compat method for addTtsSpan, see {@link PhoneNumberUtils#addTtsSpan} */ - public static void addTtsSpan(Spannable s, int start, int endExclusive) { - if (CompatUtils.isMarshmallowCompatible()) { - PhoneNumberUtils.addTtsSpan(s, start, endExclusive); - } else { - addTtsSpanInternal(s, start, endExclusive); - } - } - - /** Copied from {@link PhoneNumberUtils#addTtsSpan} */ - private static void addTtsSpanInternal(Spannable s, int start, int endExclusive) { - s.setSpan( - createTtsSpan(s.subSequence(start, endExclusive).toString()), - start, - endExclusive, - Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - } - - /** Copied from {@link PhoneNumberUtils#createTtsSpan} */ - private static TtsSpan createTtsSpanLollipop(String phoneNumberString) { - if (phoneNumberString == null) { - return null; - } - - // Parse the phone number - final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance(); - PhoneNumber phoneNumber = null; - try { - // Don't supply a defaultRegion so this fails for non-international numbers because - // we don't want to TalkBalk to read a country code (e.g. +1) if it is not already - // present - phoneNumber = phoneNumberUtil.parse(phoneNumberString, /* defaultRegion */ null); - } catch (NumberParseException ignored) { - } - - // Build a telephone tts span - final TtsSpan.TelephoneBuilder builder = new TtsSpan.TelephoneBuilder(); - if (phoneNumber == null) { - // Strip separators otherwise TalkBack will be silent - // (this behavior was observed with TalkBalk 4.0.2 from their alpha channel) - builder.setNumberParts(splitAtNonNumerics(phoneNumberString)); - } else { - if (phoneNumber.hasCountryCode()) { - builder.setCountryCode(Integer.toString(phoneNumber.getCountryCode())); - } - builder.setNumberParts(Long.toString(phoneNumber.getNationalNumber())); - } - return builder.build(); - } - - /** - * Split a phone number using spaces, ignoring anything that is not a digit - * - * @param number A {@code CharSequence} before splitting, e.g., "+20(123)-456#" - * @return A {@code String} after splitting, e.g., "20 123 456". - */ - private static String splitAtNonNumerics(CharSequence number) { - StringBuilder sb = new StringBuilder(number.length()); - for (int i = 0; i < number.length(); i++) { - sb.append(PhoneNumberUtils.isISODigit(number.charAt(i)) ? number.charAt(i) : " "); - } - // It is very important to remove extra spaces. At time of writing, any leading or trailing - // spaces, or any sequence of more than one space, will confuse TalkBack and cause the TTS - // span to be non-functional! - return sb.toString().replaceAll(" +", " ").trim(); + return PhoneNumberUtils.createTtsSpan(phoneNumber); } } diff --git a/java/com/android/contacts/common/compat/TelephonyManagerCompat.java b/java/com/android/contacts/common/compat/TelephonyManagerCompat.java index 7e4803ca5e..4a16fb8555 100644 --- a/java/com/android/contacts/common/compat/TelephonyManagerCompat.java +++ b/java/com/android/contacts/common/compat/TelephonyManagerCompat.java @@ -27,7 +27,6 @@ import android.telecom.PhoneAccountHandle; import android.telephony.TelephonyManager; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; -import com.android.dialer.compat.CompatUtils; import java.lang.reflect.InvocationTargetException; public class TelephonyManagerCompat { @@ -48,31 +47,6 @@ public class TelephonyManagerCompat { private static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE"; - /** - * @param telephonyManager The telephony manager instance to use for method calls. - * @return true if the current device is "voice capable". - *

"Voice capable" means that this device supports circuit-switched (i.e. voice) phone - * calls over the telephony network, and is allowed to display the in-call UI while a cellular - * voice call is active. This will be false on "data only" devices which can't make voice - * calls and don't support any in-call UI. - *

Note: the meaning of this flag is subtly different from the - * PackageManager.FEATURE_TELEPHONY system feature, which is available on any device with a - * telephony radio, even if the device is data-only. - */ - public static boolean isVoiceCapable(@Nullable TelephonyManager telephonyManager) { - if (telephonyManager == null) { - return false; - } - if (CompatUtils.isLollipopMr1Compatible() - || CompatUtils.isMethodAvailable(TELEPHONY_MANAGER_CLASS, "isVoiceCapable")) { - // isVoiceCapable was unhidden in L-MR1 - return telephonyManager.isVoiceCapable(); - } - final int phoneType = telephonyManager.getPhoneType(); - return phoneType == TelephonyManager.PHONE_TYPE_CDMA - || phoneType == TelephonyManager.PHONE_TYPE_GSM; - } - /** * Returns the number of phones available. Returns 1 for Single standby mode (Single SIM * functionality) Returns 2 for Dual standby mode.(Dual SIM functionality) @@ -85,31 +59,7 @@ public class TelephonyManagerCompat { if (telephonyManager == null) { return 1; } - if (CompatUtils.isMarshmallowCompatible() - || CompatUtils.isMethodAvailable(TELEPHONY_MANAGER_CLASS, "getPhoneCount")) { - return telephonyManager.getPhoneCount(); - } - return 1; - } - - /** - * Returns the unique device ID of a subscription, for example, the IMEI for GSM and the MEID for - * CDMA phones. Return null if device ID is not available. - * - *

Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} - * - * @param telephonyManager The telephony manager instance to use for method calls. - * @param slotId of which deviceID is returned - */ - public static String getDeviceId(@Nullable TelephonyManager telephonyManager, int slotId) { - if (telephonyManager == null) { - return null; - } - if (CompatUtils.isMarshmallowCompatible() - || CompatUtils.isMethodAvailable(TELEPHONY_MANAGER_CLASS, "getDeviceId", Integer.class)) { - return telephonyManager.getDeviceId(slotId); - } - return null; + return telephonyManager.getPhoneCount(); } /** @@ -119,14 +69,7 @@ public class TelephonyManagerCompat { * @return {@code true} if the device supports TTY mode, and {@code false} otherwise. */ public static boolean isTtyModeSupported(@Nullable TelephonyManager telephonyManager) { - if (telephonyManager == null) { - return false; - } - if (CompatUtils.isMarshmallowCompatible() - || CompatUtils.isMethodAvailable(TELEPHONY_MANAGER_CLASS, "isTtyModeSupported")) { - return telephonyManager.isTtyModeSupported(); - } - return false; + return telephonyManager != null && telephonyManager.isTtyModeSupported(); } /** @@ -138,15 +81,7 @@ public class TelephonyManagerCompat { */ public static boolean isHearingAidCompatibilitySupported( @Nullable TelephonyManager telephonyManager) { - if (telephonyManager == null) { - return false; - } - if (CompatUtils.isMarshmallowCompatible() - || CompatUtils.isMethodAvailable( - TELEPHONY_MANAGER_CLASS, "isHearingAidCompatibilitySupported")) { - return telephonyManager.isHearingAidCompatibilitySupported(); - } - return false; + return telephonyManager != null && telephonyManager.isHearingAidCompatibilitySupported(); } /** diff --git a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java b/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java index 5687f6fbf0..43eae589d7 100644 --- a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java +++ b/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java @@ -15,274 +15,18 @@ */ package com.android.contacts.common.compat.telecom; -import android.app.Activity; -import android.content.Intent; -import android.net.Uri; import android.support.annotation.Nullable; -import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; -import android.telephony.PhoneNumberUtils; -import android.telephony.TelephonyManager; -import android.text.TextUtils; -import com.android.dialer.compat.CompatUtils; -import java.util.ArrayList; -import java.util.List; /** Compatibility class for {@link android.telecom.TelecomManager}. */ public class TelecomManagerCompat { - public static final String TELECOM_MANAGER_CLASS = "android.telecom.TelecomManager"; - // TODO: remove once this is available in android.telecom.Call // b/33779976 public static final String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS = "android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS"; - /** - * Places a new outgoing call to the provided address using the system telecom service with the - * specified intent. - * - * @param activity {@link Activity} used to start another activity for the given intent - * @param telecomManager the {@link TelecomManager} used to place a call, if possible - * @param intent the intent for the call - */ - public static void placeCall( - @Nullable Activity activity, - @Nullable TelecomManager telecomManager, - @Nullable Intent intent) { - if (activity == null || telecomManager == null || intent == null) { - return; - } - if (CompatUtils.isMarshmallowCompatible()) { - telecomManager.placeCall(intent.getData(), intent.getExtras()); - return; - } - activity.startActivityForResult(intent, 0); - } - - /** - * Get the URI for running an adn query. - * - * @param telecomManager the {@link TelecomManager} used for method calls, if possible. - * @param accountHandle The handle for the account to derive an adn query URI for or {@code null} - * to return a URI which will use the default account. - * @return The URI (with the content:// scheme) specific to the specified {@link PhoneAccount} for - * the the content retrieve. - */ - public static Uri getAdnUriForPhoneAccount( - @Nullable TelecomManager telecomManager, PhoneAccountHandle accountHandle) { - if (telecomManager != null - && (CompatUtils.isMarshmallowCompatible() - || CompatUtils.isMethodAvailable( - TELECOM_MANAGER_CLASS, "getAdnUriForPhoneAccount", PhoneAccountHandle.class))) { - return telecomManager.getAdnUriForPhoneAccount(accountHandle); - } - return Uri.parse("content://icc/adn"); - } - - /** - * Returns a list of {@link PhoneAccountHandle}s which can be used to make and receive phone - * calls. The returned list includes only those accounts which have been explicitly enabled by the - * user. - * - * @param telecomManager the {@link TelecomManager} used for method calls, if possible. - * @return A list of PhoneAccountHandle objects. - */ - public static List getCallCapablePhoneAccounts( - @Nullable TelecomManager telecomManager) { - if (telecomManager != null - && (CompatUtils.isMarshmallowCompatible() - || CompatUtils.isMethodAvailable( - TELECOM_MANAGER_CLASS, "getCallCapablePhoneAccounts"))) { - return telecomManager.getCallCapablePhoneAccounts(); - } - return new ArrayList<>(); - } - - /** - * Used to determine the currently selected default dialer package. - * - * @param telecomManager the {@link TelecomManager} used for method calls, if possible. - * @return package name for the default dialer package or null if no package has been selected as - * the default dialer. - */ - @Nullable - public static String getDefaultDialerPackage(@Nullable TelecomManager telecomManager) { - if (telecomManager != null && CompatUtils.isDefaultDialerCompatible()) { - return telecomManager.getDefaultDialerPackage(); - } - return null; - } - - /** - * Return the {@link PhoneAccount} which will be used to place outgoing calls to addresses with - * the specified {@code uriScheme}. This PhoneAccount will always be a member of the list which is - * returned from invoking {@link TelecomManager#getCallCapablePhoneAccounts()}. The specific - * account returned depends on the following priorities: - * - *

1. If the user-selected default PhoneAccount supports the specified scheme, it will be - * returned. 2. If there exists only one PhoneAccount that supports the specified scheme, it will - * be returned. - * - *

If no PhoneAccount fits the criteria above, this method will return {@code null}. - * - * @param telecomManager the {@link TelecomManager} used for method calls, if possible. - * @param uriScheme The URI scheme. - * @return The {@link PhoneAccountHandle} corresponding to the account to be used. - */ - @Nullable - public static PhoneAccountHandle getDefaultOutgoingPhoneAccount( - @Nullable TelecomManager telecomManager, @Nullable String uriScheme) { - if (telecomManager != null - && (CompatUtils.isMarshmallowCompatible() - || CompatUtils.isMethodAvailable( - TELECOM_MANAGER_CLASS, "getDefaultOutgoingPhoneAccount", String.class))) { - return telecomManager.getDefaultOutgoingPhoneAccount(uriScheme); - } - return null; - } - - /** - * Return the line 1 phone number for given phone account. - * - * @param telecomManager the {@link TelecomManager} to use in the event that {@link - * TelecomManager#getLine1Number(PhoneAccountHandle)} is available - * @param telephonyManager the {@link TelephonyManager} to use if TelecomManager#getLine1Number is - * unavailable - * @param phoneAccountHandle the phoneAccountHandle upon which to check the line one number - * @return the line one number - */ - @Nullable - public static String getLine1Number( - @Nullable TelecomManager telecomManager, - @Nullable TelephonyManager telephonyManager, - @Nullable PhoneAccountHandle phoneAccountHandle) { - if (telecomManager != null && CompatUtils.isMarshmallowCompatible()) { - return telecomManager.getLine1Number(phoneAccountHandle); - } - if (telephonyManager != null) { - return telephonyManager.getLine1Number(); - } - return null; - } - - /** - * Return whether a given phone number is the configured voicemail number for a particular phone - * account. - * - * @param telecomManager the {@link TelecomManager} to use for checking the number. - * @param accountHandle The handle for the account to check the voicemail number against - * @param number The number to look up. - */ - public static boolean isVoiceMailNumber( - @Nullable TelecomManager telecomManager, - @Nullable PhoneAccountHandle accountHandle, - @Nullable String number) { - if (telecomManager != null - && (CompatUtils.isMarshmallowCompatible() - || CompatUtils.isMethodAvailable( - TELECOM_MANAGER_CLASS, - "isVoiceMailNumber", - PhoneAccountHandle.class, - String.class))) { - return telecomManager.isVoiceMailNumber(accountHandle, number); - } - return PhoneNumberUtils.isVoiceMailNumber(number); - } - - /** - * Return the {@link PhoneAccount} for a specified {@link PhoneAccountHandle}. Object includes - * resources which can be used in a user interface. - * - * @param telecomManager the {@link TelecomManager} used for method calls, if possible. - * @param account The {@link PhoneAccountHandle}. - * @return The {@link PhoneAccount} object or null if it doesn't exist. - */ - @Nullable - public static PhoneAccount getPhoneAccount( - @Nullable TelecomManager telecomManager, @Nullable PhoneAccountHandle accountHandle) { - if (telecomManager != null - && (CompatUtils.isMethodAvailable( - TELECOM_MANAGER_CLASS, "getPhoneAccount", PhoneAccountHandle.class))) { - return telecomManager.getPhoneAccount(accountHandle); - } - return null; - } - - /** - * Return the voicemail number for a given phone account. - * - * @param telecomManager The {@link TelecomManager} object to use for retrieving the voicemail - * number if accountHandle is specified. - * @param telephonyManager The {@link TelephonyManager} object to use for retrieving the voicemail - * number if accountHandle is null. - * @param accountHandle The handle for the phone account. - * @return The voicemail number for the phone account, and {@code null} if one has not been - * configured. - */ - @Nullable - public static String getVoiceMailNumber( - @Nullable TelecomManager telecomManager, - @Nullable TelephonyManager telephonyManager, - @Nullable PhoneAccountHandle accountHandle) { - if (telecomManager != null - && (CompatUtils.isMethodAvailable( - TELECOM_MANAGER_CLASS, "getVoiceMailNumber", PhoneAccountHandle.class))) { - return telecomManager.getVoiceMailNumber(accountHandle); - } else if (telephonyManager != null) { - return telephonyManager.getVoiceMailNumber(); - } - return null; - } - - /** - * Processes the specified dial string as an MMI code. MMI codes are any sequence of characters - * entered into the dialpad that contain a "*" or "#". Some of these sequences launch special - * behavior through handled by Telephony. - * - * @param telecomManager The {@link TelecomManager} object to use for handling MMI. - * @param dialString The digits to dial. - * @return {@code true} if the digits were processed as an MMI code, {@code false} otherwise. - */ - public static boolean handleMmi( - @Nullable TelecomManager telecomManager, - @Nullable String dialString, - @Nullable PhoneAccountHandle accountHandle) { - if (telecomManager == null || TextUtils.isEmpty(dialString)) { - return false; - } - if (CompatUtils.isMarshmallowCompatible()) { - return telecomManager.handleMmi(dialString, accountHandle); - } - - Object handleMmiResult = - CompatUtils.invokeMethod( - telecomManager, - "handleMmi", - new Class[] {PhoneAccountHandle.class, String.class}, - new Object[] {accountHandle, dialString}); - if (handleMmiResult != null) { - return (boolean) handleMmiResult; - } - - return telecomManager.handleMmi(dialString); - } - - /** - * Silences the ringer if a ringing call exists. Noop if {@link TelecomManager#silenceRinger()} is - * unavailable. - * - * @param telecomManager the TelecomManager to use to silence the ringer. - */ - public static void silenceRinger(@Nullable TelecomManager telecomManager) { - if (telecomManager != null - && (CompatUtils.isMarshmallowCompatible() - || CompatUtils.isMethodAvailable(TELECOM_MANAGER_CLASS, "silenceRinger"))) { - telecomManager.silenceRinger(); - } - } - /** * Returns the current SIM call manager. Apps must be prepared for this method to return null, * indicating that there currently exists no registered SIM call manager. @@ -292,9 +36,7 @@ public class TelecomManagerCompat { */ @Nullable public static PhoneAccountHandle getSimCallManager(TelecomManager telecomManager) { - if (telecomManager != null - && (CompatUtils.isMarshmallowCompatible() - || CompatUtils.isMethodAvailable(TELECOM_MANAGER_CLASS, "getSimCallManager"))) { + if (telecomManager != null) { return telecomManager.getSimCallManager(); } return null; diff --git a/java/com/android/contacts/common/dialog/CallSubjectDialog.java b/java/com/android/contacts/common/dialog/CallSubjectDialog.java index 0e79371028..88fac0256d 100644 --- a/java/com/android/contacts/common/dialog/CallSubjectDialog.java +++ b/java/com/android/contacts/common/dialog/CallSubjectDialog.java @@ -45,7 +45,7 @@ import android.widget.QuickContactBadge; import android.widget.TextView; import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.R; -import com.android.contacts.common.compat.telecom.TelecomManagerCompat; +import com.android.contacts.common.lettertiles.LetterTileDrawable; import com.android.dialer.animation.AnimUtils; import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallIntentBuilder; @@ -154,11 +154,7 @@ public class CallSubjectDialog extends Activity { .setCallSubject(subject) .build(); - TelecomManagerCompat.placeCall( - CallSubjectDialog.this, - (TelecomManager) getSystemService(Context.TELECOM_SERVICE), - intent); - + getSystemService(TelecomManager.class).placeCall(intent.getData(), intent.getExtras()); mSubjectHistory.add(subject); saveSubjectHistory(mSubjectHistory); finish(); @@ -202,7 +198,7 @@ public class CallSubjectDialog extends Activity { number /* number */, null /* displayNumber */, null /* numberLabel */, - ContactPhotoManager.TYPE_DEFAULT, + LetterTileDrawable.TYPE_DEFAULT, null /* phoneAccountHandle */); } @@ -356,7 +352,7 @@ public class CallSubjectDialog extends Activity { mNumber = arguments.getString(ARG_NUMBER); mDisplayNumber = arguments.getString(ARG_DISPLAY_NUMBER); mNumberLabel = arguments.getString(ARG_NUMBER_LABEL); - mContactType = arguments.getInt(ARG_CONTACT_TYPE, ContactPhotoManager.TYPE_DEFAULT); + mContactType = arguments.getInt(ARG_CONTACT_TYPE, LetterTileDrawable.TYPE_DEFAULT); mPhoneAccountHandle = arguments.getParcelable(ARG_PHONE_ACCOUNT_HANDLE); } diff --git a/java/com/android/contacts/common/format/FormatUtils.java b/java/com/android/contacts/common/format/FormatUtils.java deleted file mode 100644 index 727c15b830..0000000000 --- a/java/com/android/contacts/common/format/FormatUtils.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.contacts.common.format; - -import android.database.CharArrayBuffer; -import android.graphics.Typeface; -import android.support.annotation.VisibleForTesting; -import android.text.SpannableString; -import android.text.style.StyleSpan; -import java.util.Arrays; - -/** Assorted utility methods related to text formatting in Contacts. */ -public class FormatUtils { - - /** - * Finds the earliest point in buffer1 at which the first part of buffer2 matches. For example, - * overlapPoint("abcd", "cdef") == 2. - */ - public static int overlapPoint(CharArrayBuffer buffer1, CharArrayBuffer buffer2) { - if (buffer1 == null || buffer2 == null) { - return -1; - } - return overlapPoint( - Arrays.copyOfRange(buffer1.data, 0, buffer1.sizeCopied), - Arrays.copyOfRange(buffer2.data, 0, buffer2.sizeCopied)); - } - - /** - * Finds the earliest point in string1 at which the first part of string2 matches. For example, - * overlapPoint("abcd", "cdef") == 2. - */ - @VisibleForTesting - public static int overlapPoint(String string1, String string2) { - if (string1 == null || string2 == null) { - return -1; - } - return overlapPoint(string1.toCharArray(), string2.toCharArray()); - } - - /** - * Finds the earliest point in array1 at which the first part of array2 matches. For example, - * overlapPoint("abcd", "cdef") == 2. - */ - public static int overlapPoint(char[] array1, char[] array2) { - if (array1 == null || array2 == null) { - return -1; - } - int count1 = array1.length; - int count2 = array2.length; - - // Ignore matching tails of the two arrays. - while (count1 > 0 && count2 > 0 && array1[count1 - 1] == array2[count2 - 1]) { - count1--; - count2--; - } - - int size = count2; - for (int i = 0; i < count1; i++) { - if (i + size > count1) { - size = count1 - i; - } - int j; - for (j = 0; j < size; j++) { - if (array1[i + j] != array2[j]) { - break; - } - } - if (j == size) { - return i; - } - } - - return -1; - } - - /** - * Applies the given style to a range of the input CharSequence. - * - * @param style The style to apply (see the style constants in {@link Typeface}). - * @param input The CharSequence to style. - * @param start Starting index of the range to style (will be clamped to be a minimum of 0). - * @param end Ending index of the range to style (will be clamped to a maximum of the input - * length). - * @param flags Bitmask for configuring behavior of the span. See {@link android.text.Spanned}. - * @return The styled CharSequence. - */ - public static CharSequence applyStyleToSpan( - int style, CharSequence input, int start, int end, int flags) { - // Enforce bounds of the char sequence. - start = Math.max(0, start); - end = Math.min(input.length(), end); - SpannableString text = new SpannableString(input); - text.setSpan(new StyleSpan(style), start, end, flags); - return text; - } - - @VisibleForTesting - public static void copyToCharArrayBuffer(String text, CharArrayBuffer buffer) { - if (text != null) { - char[] data = buffer.data; - if (data == null || data.length < text.length()) { - buffer.data = text.toCharArray(); - } else { - text.getChars(0, text.length(), data, 0); - } - buffer.sizeCopied = text.length(); - } else { - buffer.sizeCopied = 0; - } - } - - /** Returns a String that represents the content of the given {@link CharArrayBuffer}. */ - @VisibleForTesting - public static String charArrayBufferToString(CharArrayBuffer buffer) { - return new String(buffer.data, 0, buffer.sizeCopied); - } - - /** - * Finds the index of the first word that starts with the given prefix. - * - *

If not found, returns -1. - * - * @param text the text in which to search for the prefix - * @param prefix the text to find, in upper case letters - */ - public static int indexOfWordPrefix(CharSequence text, String prefix) { - if (prefix == null || text == null) { - return -1; - } - - int textLength = text.length(); - int prefixLength = prefix.length(); - - if (prefixLength == 0 || textLength < prefixLength) { - return -1; - } - - int i = 0; - while (i < textLength) { - // Skip non-word characters - while (i < textLength && !Character.isLetterOrDigit(text.charAt(i))) { - i++; - } - - if (i + prefixLength > textLength) { - return -1; - } - - // Compare the prefixes - int j; - for (j = 0; j < prefixLength; j++) { - if (Character.toUpperCase(text.charAt(i + j)) != prefix.charAt(j)) { - break; - } - } - if (j == prefixLength) { - return i; - } - - // Skip this word - while (i < textLength && Character.isLetterOrDigit(text.charAt(i))) { - i++; - } - } - - return -1; - } -} diff --git a/java/com/android/contacts/common/format/TextHighlighter.java b/java/com/android/contacts/common/format/TextHighlighter.java index 30c03fdf33..f397f0429b 100644 --- a/java/com/android/contacts/common/format/TextHighlighter.java +++ b/java/com/android/contacts/common/format/TextHighlighter.java @@ -24,8 +24,6 @@ import android.widget.TextView; /** Highlights the text in a text field. */ public class TextHighlighter { - private static final boolean DEBUG = false; - private final String TAG = TextHighlighter.class.getSimpleName(); private int mTextStyle; private CharacterStyle mTextStyleSpan; @@ -81,7 +79,7 @@ public class TextHighlighter { } final String trimmedPrefix = prefix.substring(prefixStart); - int index = FormatUtils.indexOfWordPrefix(text, trimmedPrefix); + int index = indexOfWordPrefix(text, trimmedPrefix); if (index != -1) { final SpannableString result = new SpannableString(text); result.setSpan(mTextStyleSpan, index, index + trimmedPrefix.length(), 0 /* flags */); @@ -90,4 +88,55 @@ public class TextHighlighter { return text; } } + + /** + * Finds the index of the first word that starts with the given prefix. + * + *

If not found, returns -1. + * + * @param text the text in which to search for the prefix + * @param prefix the text to find, in upper case letters + */ + public static int indexOfWordPrefix(CharSequence text, String prefix) { + if (prefix == null || text == null) { + return -1; + } + + int textLength = text.length(); + int prefixLength = prefix.length(); + + if (prefixLength == 0 || textLength < prefixLength) { + return -1; + } + + int i = 0; + while (i < textLength) { + // Skip non-word characters + while (i < textLength && !Character.isLetterOrDigit(text.charAt(i))) { + i++; + } + + if (i + prefixLength > textLength) { + return -1; + } + + // Compare the prefixes + int j; + for (j = 0; j < prefixLength; j++) { + if (Character.toUpperCase(text.charAt(i + j)) != prefix.charAt(j)) { + break; + } + } + if (j == prefixLength) { + return i; + } + + // Skip this word + while (i < textLength && Character.isLetterOrDigit(text.charAt(i))) { + i++; + } + } + + return -1; + } } diff --git a/java/com/android/contacts/common/format/testing/SpannedTestUtils.java b/java/com/android/contacts/common/format/testing/SpannedTestUtils.java deleted file mode 100644 index 293d9d5adf..0000000000 --- a/java/com/android/contacts/common/format/testing/SpannedTestUtils.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.contacts.common.format.testing; - -import android.test.suitebuilder.annotation.SmallTest; -import android.text.Html; -import android.text.SpannableString; -import android.text.Spanned; -import android.text.TextUtils; -import android.text.style.StyleSpan; -import android.widget.TextView; -import junit.framework.Assert; - -/** Utility class to check the value of spanned text in text views. */ -@SmallTest -public class SpannedTestUtils { - - /** - * Checks that the text contained in the text view matches the given HTML text. - * - * @param expectedHtmlText the expected text to be in the text view - * @param textView the text view from which to get the text - */ - public static void checkHtmlText(String expectedHtmlText, TextView textView) { - String actualHtmlText = Html.toHtml((Spanned) textView.getText()); - if (TextUtils.isEmpty(expectedHtmlText)) { - // If the text is empty, it does not add the

bits to it. - Assert.assertEquals("", actualHtmlText); - } else { - Assert.assertEquals("

" + expectedHtmlText + "

\n", actualHtmlText); - } - } - - /** - * Assert span exists in the correct location. - * - * @param seq The spannable string to check. - * @param start The starting index. - * @param end The ending index. - */ - public static void assertPrefixSpan(CharSequence seq, int start, int end) { - Assert.assertTrue(seq instanceof Spanned); - Spanned spannable = (Spanned) seq; - - if (start > 0) { - Assert.assertEquals(0, getNumForegroundColorSpansBetween(spannable, 0, start - 1)); - } - Assert.assertEquals(1, getNumForegroundColorSpansBetween(spannable, start, end)); - Assert.assertEquals( - 0, getNumForegroundColorSpansBetween(spannable, end + 1, spannable.length() - 1)); - } - - private static int getNumForegroundColorSpansBetween(Spanned value, int start, int end) { - return value.getSpans(start, end, StyleSpan.class).length; - } - - /** - * Asserts that the given character sequence is not a Spanned object and text is correct. - * - * @param seq The sequence to check. - * @param expected The expected text. - */ - public static void assertNotSpanned(CharSequence seq, String expected) { - Assert.assertFalse(seq instanceof Spanned); - Assert.assertEquals(expected, seq); - } - - public static int getNextTransition(SpannableString seq, int start) { - return seq.nextSpanTransition(start, seq.length(), StyleSpan.class); - } -} diff --git a/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java b/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java index 88522c44bb..5e77b696b9 100644 --- a/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java +++ b/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java @@ -30,8 +30,10 @@ import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.support.annotation.IntDef; import android.support.annotation.Nullable; +import android.telecom.TelecomManager; import android.text.TextUtils; import com.android.contacts.common.R; +import com.android.contacts.common.lettertiles.LetterTileDrawable.ContactType; import com.android.dialer.common.Assert; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -406,4 +408,30 @@ public class LetterTileDrawable extends Drawable { } return this; } + + /** + * Returns the appropriate LetterTileDrawable.TYPE_ based on the given primitive conditions. + * + *

If no special state is detected, yields TYPE_DEFAULT + */ + public static @ContactType int getContactTypeFromPrimitives( + boolean isVoicemailNumber, + boolean isSpam, + boolean isBusiness, + int numberPresentation, + boolean isConference) { + if (isVoicemailNumber) { + return LetterTileDrawable.TYPE_VOICEMAIL; + } else if (isSpam) { + return LetterTileDrawable.TYPE_SPAM; + } else if (isBusiness) { + return LetterTileDrawable.TYPE_BUSINESS; + } else if (numberPresentation == TelecomManager.PRESENTATION_RESTRICTED) { + return LetterTileDrawable.TYPE_GENERIC_AVATAR; + } else if (isConference) { + return LetterTileDrawable.TYPE_CONFERENCE; + } else { + return LetterTileDrawable.TYPE_DEFAULT; + } + } } diff --git a/java/com/android/contacts/common/list/ContactEntryListAdapter.java b/java/com/android/contacts/common/list/ContactEntryListAdapter.java index 18bbae3824..064214ef2c 100644 --- a/java/com/android/contacts/common/list/ContactEntryListAdapter.java +++ b/java/com/android/contacts/common/list/ContactEntryListAdapter.java @@ -26,7 +26,6 @@ import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Directory; import android.text.TextUtils; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -39,7 +38,10 @@ import com.android.contacts.common.ContactsUtils; import com.android.contacts.common.R; import com.android.contacts.common.compat.DirectoryCompat; import com.android.contacts.common.util.SearchUtil; +import com.android.dialer.common.LogUtil; import com.android.dialer.compat.CompatUtils; +import com.android.dialer.logging.InteractionEvent; +import com.android.dialer.logging.Logger; import java.util.HashSet; /** @@ -354,7 +356,7 @@ public abstract class ContactEntryListAdapter extends IndexerListAdapter { if (cursor.getCount() == 0) { // Directory table must have at least local directory, without which this adapter will // enter very weird state. - Log.e( + LogUtil.e( TAG, "Directory search loader returned an empty cursor, which implies we have " + "no directory entries.", @@ -678,6 +680,9 @@ public abstract class ContactEntryListAdapter extends IndexerListAdapter { // mimetype here is reasonable. quickContact.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE); } + Logger.get(mContext) + .logQuickContactOnTouch( + quickContact, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_SEARCH, true); if (photoId != 0 || photoUriColumn == -1) { getPhotoLoader().loadThumbnail(quickContact, photoId, mDarkTheme, mCircularPhotos, null); diff --git a/java/com/android/contacts/common/list/ContactEntryListFragment.java b/java/com/android/contacts/common/list/ContactEntryListFragment.java index 278175c0bd..146986f75a 100644 --- a/java/com/android/contacts/common/list/ContactEntryListFragment.java +++ b/java/com/android/contacts/common/list/ContactEntryListFragment.java @@ -555,7 +555,6 @@ public abstract class ContactEntryListFragment(); - mNumberHighlightSequence = new ArrayList<>(); - } - - public ContactListItemView( - Context context, - AttributeSet attrs, - boolean supportVideoCallIcon, - boolean supportCallAndShare) { + public ContactListItemView(Context context, AttributeSet attrs, boolean supportVideoCallIcon) { this(context, attrs); mSupportVideoCall = supportVideoCallIcon; - mSupportCallAndShare = supportCallAndShare; } public ContactListItemView(Context context, AttributeSet attrs) { @@ -284,19 +273,20 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj mNameHighlightSequence = new ArrayList<>(); mNumberHighlightSequence = new ArrayList<>(); + mCallToActionView = new ImageView(getContext()); + mCallToActionView.setId(R.id.call_to_action); + mCallToActionView.setLayoutParams(new LayoutParams(mCallToActionSize, mCallToActionSize)); + mCallToActionView.setScaleType(ScaleType.CENTER); + mCallToActionView.setImageTintList( + ContextCompat.getColorStateList(getContext(), R.color.search_video_call_icon_tint)); + addView(mCallToActionView); + setLayoutDirection(View.LAYOUT_DIRECTION_LOCALE); } - public static PhotoPosition getDefaultPhotoPosition(boolean opposite) { - final Locale locale = Locale.getDefault(); - final int layoutDirection = TextUtils.getLayoutDirectionFromLocale(locale); - switch (layoutDirection) { - case View.LAYOUT_DIRECTION_RTL: - return (opposite ? PhotoPosition.LEFT : PhotoPosition.RIGHT); - case View.LAYOUT_DIRECTION_LTR: - default: - return (opposite ? PhotoPosition.RIGHT : PhotoPosition.LEFT); - } + public static PhotoPosition getDefaultPhotoPosition() { + int layoutDirection = TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()); + return layoutDirection == View.LAYOUT_DIRECTION_RTL ? PhotoPosition.RIGHT : PhotoPosition.LEFT; } /** @@ -333,35 +323,47 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj * @param position The position in the adapter of the call to action. */ public void setCallToAction(@CallToAction int action, Listener listener, int position) { - int drawable; + mCallToAction = action; + mPosition = position; + + Drawable drawable; int description; OnClickListener onClickListener; - if (action == CALL_AND_SHARE && mSupportCallAndShare) { - drawable = R.drawable.ic_call_and_share; - description = R.string.description_search_video_call; + if (action == CALL_AND_SHARE) { + drawable = getContext().getResources().getDrawable(R.drawable.ic_phone_attach); + drawable.setAutoMirrored(true); + description = R.string.description_search_call_and_share; onClickListener = v -> listener.onCallAndShareIconClicked(position); } else if (action == VIDEO && mSupportVideoCall) { - drawable = R.drawable.ic_search_video_call; - description = R.string.description_search_call_and_share; + drawable = + getContext().getResources().getDrawable(R.drawable.quantum_ic_videocam_vd_theme_24); + drawable.setAutoMirrored(true); + description = R.string.description_search_video_call; onClickListener = v -> listener.onVideoCallIconClicked(position); + } else if (action == LIGHTBRINGER) { + drawable = + getContext().getResources().getDrawable(R.drawable.quantum_ic_videocam_vd_theme_24); + drawable.setAutoMirrored(true); + description = R.string.description_search_video_call; + onClickListener = v -> listener.onLightbringerIconClicked(position); } else { - if (mCallToAction != null) { - mCallToAction.setVisibility(View.GONE); - mCallToAction.setOnClickListener(null); - } + mCallToActionView.setVisibility(View.GONE); + mCallToActionView.setOnClickListener(null); return; } - if (mCallToAction == null) { - mCallToAction = new ImageView(getContext()); - mCallToAction.setLayoutParams(new LayoutParams(mCallToActionSize, mCallToActionSize)); - mCallToAction.setScaleType(ScaleType.CENTER); - addView(mCallToAction); - } - mCallToAction.setContentDescription(getContext().getString(description)); - mCallToAction.setOnClickListener(onClickListener); - mCallToAction.setImageResource(drawable); - mCallToAction.setVisibility(View.VISIBLE); + mCallToActionView.setContentDescription(getContext().getString(description)); + mCallToActionView.setOnClickListener(onClickListener); + mCallToActionView.setImageDrawable(drawable); + mCallToActionView.setVisibility(View.VISIBLE); + } + + public @CallToAction int getCallToAction() { + return mCallToAction; + } + + public int getPosition() { + return mPosition; } /** @@ -376,18 +378,6 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj mSupportVideoCall = supportVideoCall; } - /** - * Sets whether the view supports a call and share icon. This is independent of whether the view - * is actually showing an icon. Support for the icon ensures that the layout leaves space for it, - * should it be shown. - * - * @param supportCallAndShare {@code true} if the call and share icon is supported, {@code false} - * otherwise. - */ - public void setSupportCallAndShareIcon(boolean supportCallAndShare) { - mSupportCallAndShare = supportCallAndShare; - } - @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // We will match parent's width and wrap content vertically, but make sure @@ -423,9 +413,7 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj effectiveWidth -= mHeaderWidth + mGapBetweenImageAndText; } - if (mSupportVideoCall || mSupportCallAndShare) { - effectiveWidth -= (mCallToActionSize + mCallToActionMargin); - } + effectiveWidth -= (mCallToActionSize + mCallToActionMargin); // Go over all visible text views and measure actual width of each of them. // Also calculate their heights to get the total height for this entire view. @@ -496,11 +484,9 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj mStatusTextViewHeight = mPresenceIcon.getMeasuredHeight(); } - if ((mSupportVideoCall || mSupportCallAndShare) && isVisible(mCallToAction)) { - mCallToAction.measure( - MeasureSpec.makeMeasureSpec(mCallToActionSize, MeasureSpec.EXACTLY), - MeasureSpec.makeMeasureSpec(mCallToActionSize, MeasureSpec.EXACTLY)); - } + mCallToActionView.measure( + MeasureSpec.makeMeasureSpec(mCallToActionSize, MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(mCallToActionSize, MeasureSpec.EXACTLY)); if (isVisible(mWorkProfileIcon)) { mWorkProfileIcon.measure( @@ -629,34 +615,30 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj leftBound += mTextIndent; } - if (mSupportVideoCall || mSupportCallAndShare) { - // Place the call to action at the end of the list (e.g. take into account RTL mode). - if (isVisible(mCallToAction)) { - // Center the icon vertically - final int callToActionTop = topBound + (height - topBound - mCallToActionSize) / 2; + // Place the call to action at the end of the list (e.g. take into account RTL mode). + // Center the icon vertically + final int callToActionTop = topBound + (height - topBound - mCallToActionSize) / 2; - if (!isLayoutRtl) { - // When photo is on left, icon is placed on the right edge. - mCallToAction.layout( - rightBound - mCallToActionSize, - callToActionTop, - rightBound, - callToActionTop + mCallToActionSize); - } else { - // When photo is on right, icon is placed on the left edge. - mCallToAction.layout( - leftBound, - callToActionTop, - leftBound + mCallToActionSize, - callToActionTop + mCallToActionSize); - } - } + if (!isLayoutRtl) { + // When photo is on left, icon is placed on the right edge. + mCallToActionView.layout( + rightBound - mCallToActionSize, + callToActionTop, + rightBound, + callToActionTop + mCallToActionSize); + } else { + // When photo is on right, icon is placed on the left edge. + mCallToActionView.layout( + leftBound, + callToActionTop, + leftBound + mCallToActionSize, + callToActionTop + mCallToActionSize); + } - if (mPhotoPosition == PhotoPosition.LEFT) { - rightBound -= (mCallToActionSize + mCallToActionMargin); - } else { - leftBound += mCallToActionSize + mCallToActionMargin; - } + if (mPhotoPosition == PhotoPosition.LEFT) { + rightBound -= (mCallToActionSize + mCallToActionMargin); + } else { + leftBound += mCallToActionSize + mCallToActionMargin; } // Center text vertically, then apply the top offset. @@ -901,9 +883,7 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj } if (mQuickContact == null) { mQuickContact = new QuickContactBadge(getContext()); - if (CompatUtils.isLollipopCompatible()) { - mQuickContact.setOverlay(null); - } + mQuickContact.setOverlay(null); mQuickContact.setLayoutParams(getDefaultPhotoLayoutParams()); if (mNameTextView != null) { mQuickContact.setContentDescription( @@ -1008,9 +988,7 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj mNameTextView.setGravity(Gravity.CENTER_VERTICAL); mNameTextView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START); mNameTextView.setId(R.id.cliv_name_textview); - if (CompatUtils.isLollipopCompatible()) { - mNameTextView.setElegantTextHeight(false); - } + mNameTextView.setElegantTextHeight(false); addView(mNameTextView); } return mNameTextView; @@ -1056,6 +1034,7 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj * exists. */ public void setPhoneNumber(String text) { + mPhoneNumber = text; if (text == null) { if (mDataView != null) { mDataView.setVisibility(View.GONE); @@ -1086,6 +1065,10 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj } } + public String getPhoneNumber() { + return mPhoneNumber; + } + private void setMarqueeText(TextView textView, CharSequence text) { if (getTextEllipsis() == TruncateAt.MARQUEE) { // To show MARQUEE correctly (with END effect during non-active state), we need @@ -1109,9 +1092,7 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj mDataView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START); mDataView.setActivated(isActivated()); mDataView.setId(R.id.cliv_data_view); - if (CompatUtils.isLollipopCompatible()) { - mDataView.setElegantTextHeight(false); - } + mDataView.setElegantTextHeight(false); addView(mDataView); } return mDataView; @@ -1469,28 +1450,17 @@ public class ContactListItemView extends ViewGroup implements SelectionBoundsAdj forceLayout(); } - public void setPhotoPosition(PhotoPosition photoPosition) { - mPhotoPosition = photoPosition; - } - /** * Set drawable resources directly for the drawable resource of the photo view. * - * @param drawableId Id of drawable resource. + * @param drawable A drawable resource. */ - public void setDrawableResource(int drawableId) { + public void setDrawable(Drawable drawable) { ImageView photo = getPhotoView(); photo.setScaleType(ImageView.ScaleType.CENTER); - final Drawable drawable = ContextCompat.getDrawable(getContext(), drawableId); - final int iconColor = ContextCompat.getColor(getContext(), R.color.search_shortcut_icon_color); - if (CompatUtils.isLollipopCompatible()) { - photo.setImageDrawable(drawable); - photo.setImageTintList(ColorStateList.valueOf(iconColor)); - } else { - final Drawable drawableWrapper = DrawableCompat.wrap(drawable).mutate(); - DrawableCompat.setTint(drawableWrapper, iconColor); - photo.setImageDrawable(drawableWrapper); - } + int iconColor = ContextCompat.getColor(getContext(), R.color.search_shortcut_icon_color); + photo.setImageDrawable(drawable); + photo.setImageTintList(ColorStateList.valueOf(iconColor)); } @Override diff --git a/java/com/android/contacts/common/list/ContactTileView.java b/java/com/android/contacts/common/list/ContactTileView.java index 9273b0583f..15582d6849 100644 --- a/java/com/android/contacts/common/list/ContactTileView.java +++ b/java/com/android/contacts/common/list/ContactTileView.java @@ -19,7 +19,6 @@ import android.content.Context; import android.graphics.Rect; import android.net.Uri; import android.util.AttributeSet; -import android.util.Log; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; @@ -28,6 +27,9 @@ import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest; import com.android.contacts.common.MoreContactUtils; import com.android.contacts.common.R; +import com.android.dialer.callintent.CallInitiationType; +import com.android.dialer.callintent.CallSpecificAppData; +import com.android.dialer.common.LogUtil; /** A ContactTile displays a contact's picture and name */ public abstract class ContactTileView extends FrameLayout { @@ -60,8 +62,14 @@ public abstract class ContactTileView extends FrameLayout { if (mListener == null) { return; } + CallSpecificAppData callSpecificAppData = + CallSpecificAppData.newBuilder() + .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL) + .build(); mListener.onContactSelected( - getLookupUri(), MoreContactUtils.getTargetRectFromView(ContactTileView.this)); + getLookupUri(), + MoreContactUtils.getTargetRectFromView(ContactTileView.this), + callSpecificAppData); } }; } @@ -97,7 +105,7 @@ public abstract class ContactTileView extends FrameLayout { } } else { - Log.w(TAG, "contactPhotoManager not set"); + LogUtil.w(TAG, "contactPhotoManager not set"); } } else { setVisibility(View.INVISIBLE); @@ -163,9 +171,10 @@ public abstract class ContactTileView extends FrameLayout { public interface Listener { /** Notification that the contact was selected; no specific action is dictated. */ - void onContactSelected(Uri contactLookupUri, Rect viewRect); + void onContactSelected( + Uri contactLookupUri, Rect viewRect, CallSpecificAppData callSpecificAppData); /** Notification that the specified number is to be called. */ - void onCallNumberDirectly(String phoneNumber); + void onCallNumberDirectly(String phoneNumber, CallSpecificAppData callSpecificAppData); } } diff --git a/java/com/android/contacts/common/list/PhoneNumberListAdapter.java b/java/com/android/contacts/common/list/PhoneNumberListAdapter.java index 9a490d78a8..65e6f2da2d 100644 --- a/java/com/android/contacts/common/list/PhoneNumberListAdapter.java +++ b/java/com/android/contacts/common/list/PhoneNumberListAdapter.java @@ -30,7 +30,6 @@ import android.provider.ContactsContract.Directory; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; -import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest; import com.android.contacts.common.ContactsUtils; import com.android.contacts.common.R; @@ -38,15 +37,17 @@ import com.android.contacts.common.compat.CallableCompat; import com.android.contacts.common.compat.DirectoryCompat; import com.android.contacts.common.compat.PhoneCompat; import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor; +import com.android.contacts.common.lettertiles.LetterTileDrawable; import com.android.contacts.common.list.ContactListItemView.CallToAction; import com.android.contacts.common.preference.ContactsPreferences; import com.android.contacts.common.util.Constants; -import com.android.dialer.callcomposer.CallComposerContact; import com.android.dialer.common.LogUtil; import com.android.dialer.compat.CompatUtils; +import com.android.dialer.dialercontact.DialerContact; import com.android.dialer.enrichedcall.EnrichedCallCapabilities; import com.android.dialer.enrichedcall.EnrichedCallComponent; import com.android.dialer.enrichedcall.EnrichedCallManager; +import com.android.dialer.lightbringer.LightbringerComponent; import com.android.dialer.location.GeoUtil; import com.android.dialer.util.CallUtil; import java.util.ArrayList; @@ -68,16 +69,15 @@ public class PhoneNumberListAdapter extends ContactEntryListAdapter { // A list of extended directories to add to the directories from the database private final List mExtendedDirectories; private final CharSequence mUnknownNameText; - private final boolean mCallAndShareEnabled; + private final boolean mIsPresenceEnabled; + protected final boolean mIsImsVideoEnabled; + // Extended directories will have ID's that are higher than any of the id's from the database, // so that we can identify them and set them up properly. If no extended directories // exist, this will be Long.MAX_VALUE private long mFirstExtendedDirectoryId = Long.MAX_VALUE; - private ContactListItemView.PhotoPosition mPhotoPosition; private boolean mUseCallableUri; private Listener mListener; - private boolean mIsVideoEnabled; - private boolean mIsPresenceEnabled; public PhoneNumberListAdapter(Context context) { super(context); @@ -88,11 +88,8 @@ public class PhoneNumberListAdapter extends ContactEntryListAdapter { PhoneDirectoryExtenderAccessor.get(mContext).getExtendedDirectories(mContext); int videoCapabilities = CallUtil.getVideoCallingAvailability(context); - mIsVideoEnabled = (videoCapabilities & CallUtil.VIDEO_CALLING_ENABLED) != 0; + mIsImsVideoEnabled = CallUtil.isVideoEnabled(context); mIsPresenceEnabled = (videoCapabilities & CallUtil.VIDEO_CALLING_PRESENCE) != 0; - - // TODO - mCallAndShareEnabled = true; } @Override @@ -249,10 +246,10 @@ public class PhoneNumberListAdapter extends ContactEntryListAdapter { return item != null ? item.getString(PhoneQuery.LOOKUP_KEY) : null; } - public CallComposerContact getCallComposerContact(int position) { + public DialerContact getDialerContact(int position) { Cursor cursor = (Cursor) getItem(position); if (cursor == null) { - LogUtil.e("PhoneNumberListAdapter.getCallComposerContact", "cursor was null."); + LogUtil.e("PhoneNumberListAdapter.getDialerContact", "cursor was null."); return null; } @@ -263,11 +260,11 @@ public class PhoneNumberListAdapter extends ContactEntryListAdapter { Contacts.getLookupUri( cursor.getLong(PhoneQuery.CONTACT_ID), cursor.getString(PhoneQuery.LOOKUP_KEY)); - CallComposerContact.Builder contact = CallComposerContact.newBuilder(); + DialerContact.Builder contact = DialerContact.newBuilder(); contact .setNumber(number) .setPhotoId(cursor.getLong(PhoneQuery.PHOTO_ID)) - .setContactType(ContactPhotoManager.TYPE_DEFAULT) + .setContactType(LetterTileDrawable.TYPE_DEFAULT) .setNameOrNumber(displayName) .setNumberLabel( Phone.getTypeLabel( @@ -297,7 +294,6 @@ public class PhoneNumberListAdapter extends ContactEntryListAdapter { ContactListItemView view = super.newView(context, partition, cursor, position, parent); view.setUnknownNameText(mUnknownNameText); view.setQuickContactEnabled(isQuickContactEnabled()); - view.setPhotoPosition(mPhotoPosition); return view; } @@ -401,13 +397,17 @@ public class PhoneNumberListAdapter extends ContactEntryListAdapter { int carrierPresence = cursor.getInt(PhoneQuery.CARRIER_PRESENCE); boolean isPresent = (carrierPresence & Phone.CARRIER_PRESENCE_VT_CAPABLE) != 0; - boolean isVideoIconShown = mIsVideoEnabled && (!mIsPresenceEnabled || isPresent); + boolean isVideoIconShown = mIsImsVideoEnabled && (!mIsPresenceEnabled || isPresent); if (isVideoIconShown) { action = ContactListItemView.VIDEO; } } - if (isCallAndShareEnabled() && action == ContactListItemView.NONE && number != null) { + if (LightbringerComponent.get(mContext).getLightbringer().isReachable(mContext, number)) { + action = ContactListItemView.LIGHTBRINGER; + } + + if (action == ContactListItemView.NONE) { EnrichedCallManager manager = EnrichedCallComponent.get(mContext).getEnrichedCallManager(); EnrichedCallCapabilities capabilities = manager.getCapabilities(number); if (capabilities != null && capabilities.supportsCallComposer()) { @@ -481,14 +481,6 @@ public class PhoneNumberListAdapter extends ContactEntryListAdapter { } } - public ContactListItemView.PhotoPosition getPhotoPosition() { - return mPhotoPosition; - } - - public void setPhotoPosition(ContactListItemView.PhotoPosition photoPosition) { - mPhotoPosition = photoPosition; - } - public void setUseCallableUri(boolean useCallableUri) { mUseCallableUri = useCallableUri; } @@ -570,14 +562,12 @@ public class PhoneNumberListAdapter extends ContactEntryListAdapter { mListener = listener; } - public boolean isCallAndShareEnabled() { - return mCallAndShareEnabled; - } - public interface Listener { void onVideoCallIconClicked(int position); + void onLightbringerIconClicked(int position); + void onCallAndShareIconClicked(int position); } @@ -642,18 +632,14 @@ public class PhoneNumberListAdapter extends ContactEntryListAdapter { static { final List projectionList = new ArrayList<>(Arrays.asList(PROJECTION_PRIMARY_INTERNAL)); - if (CompatUtils.isMarshmallowCompatible()) { - projectionList.add(Phone.CARRIER_PRESENCE); // 9 - } + projectionList.add(Phone.CARRIER_PRESENCE); // 9 PROJECTION_PRIMARY = projectionList.toArray(new String[projectionList.size()]); } static { final List projectionList = new ArrayList<>(Arrays.asList(PROJECTION_ALTERNATIVE_INTERNAL)); - if (CompatUtils.isMarshmallowCompatible()) { - projectionList.add(Phone.CARRIER_PRESENCE); // 9 - } + projectionList.add(Phone.CARRIER_PRESENCE); // 9 PROJECTION_ALTERNATIVE = projectionList.toArray(new String[projectionList.size()]); } } diff --git a/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java b/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java index 8f25f82a57..79e670010c 100644 --- a/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java +++ b/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java @@ -29,15 +29,18 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import com.android.contacts.common.R; +import com.android.contacts.common.list.PhoneNumberListAdapter.Listener; import com.android.contacts.common.util.AccountFilterUtil; -import com.android.dialer.callcomposer.CallComposerContact; import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallInitiationType.Type; import com.android.dialer.callintent.CallSpecificAppData; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; +import com.android.dialer.dialercontact.DialerContact; import com.android.dialer.enrichedcall.EnrichedCallComponent; import com.android.dialer.enrichedcall.EnrichedCallManager; +import com.android.dialer.lightbringer.LightbringerComponent; +import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.dialer.protos.ProtoParsers; import java.util.Set; @@ -61,9 +64,6 @@ public class PhoneNumberPickerFragment extends ContactEntryListFragment mLoadFinishedListeners = new ArraySet<>(); private CursorReranker mCursorReranker; @@ -71,7 +71,7 @@ public class PhoneNumberPickerFragment extends ContactEntryListFragment in the future private static final int[] ATTRS = @@ -54,20 +59,6 @@ public class ViewPagerTabs extends HorizontalScrollView implements ViewPager.OnP android.R.attr.textAllCaps }; - static { - if (CompatUtils.isLollipopCompatible()) { - VIEW_BOUNDS_OUTLINE_PROVIDER = - new ViewOutlineProvider() { - @Override - public void getOutline(View view, Outline outline) { - outline.setRect(0, 0, view.getWidth(), view.getHeight()); - } - }; - } else { - VIEW_BOUNDS_OUTLINE_PROVIDER = null; - } - } - /** * Linearlayout that will contain the TextViews serving as tabs. This is the only child of the * parent HorizontalScrollView. @@ -111,10 +102,8 @@ public class ViewPagerTabs extends HorizontalScrollView implements ViewPager.OnP new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT)); a.recycle(); - if (CompatUtils.isLollipopCompatible()) { - // enable shadow casting from view bounds - setOutlineProvider(VIEW_BOUNDS_OUTLINE_PROVIDER); - } + // enable shadow casting from view bounds + setOutlineProvider(VIEW_BOUNDS_OUTLINE_PROVIDER); } public void setViewPager(ViewPager viewPager) { diff --git a/java/com/android/contacts/common/location/CountryDetector.java b/java/com/android/contacts/common/location/CountryDetector.java deleted file mode 100644 index 7d9e42b38e..0000000000 --- a/java/com/android/contacts/common/location/CountryDetector.java +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.contacts.common.location; - -import android.app.PendingIntent; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.location.Geocoder; -import android.location.Location; -import android.location.LocationManager; -import android.preference.PreferenceManager; -import android.telephony.TelephonyManager; -import android.text.TextUtils; -import android.util.Log; -import com.android.dialer.util.PermissionsUtil; -import java.util.Locale; - -/** - * This class is used to detect the country where the user is. It is a simplified version of the - * country detector service in the framework. The sources of country location are queried in the - * following order of reliability: - * - *

    - *
  • Mobile network - *
  • Location manager - *
  • SIM's country - *
  • User's default locale - *
- * - * As far as possible this class tries to replicate the behavior of the system's country detector - * service: 1) Order in priority of sources of country location 2) Mobile network information - * provided by CDMA phones is ignored 3) Location information is updated every 12 hours (instead of - * 24 hours in the system) 4) Location updates only uses the {@link - * LocationManager#PASSIVE_PROVIDER} to avoid active use of the GPS 5) If a location is successfully - * obtained and geocoded, we never fall back to use of the SIM's country (for the system, the - * fallback never happens without a reboot) 6) Location is not used if the device does not implement - * a {@link android.location.Geocoder} - */ -public class CountryDetector { - - public static final String KEY_PREFERENCE_TIME_UPDATED = "preference_time_updated"; - public static final String KEY_PREFERENCE_CURRENT_COUNTRY = "preference_current_country"; - private static final String TAG = "CountryDetector"; - // Wait 12 hours between updates - private static final long TIME_BETWEEN_UPDATES_MS = 1000L * 60 * 60 * 12; - // Minimum distance before an update is triggered, in meters. We don't need this to be too - // exact because all we care about is what country the user is in. - private static final long DISTANCE_BETWEEN_UPDATES_METERS = 5000; - private static CountryDetector sInstance; - private final TelephonyManager mTelephonyManager; - private final LocationManager mLocationManager; - private final LocaleProvider mLocaleProvider; - // Used as a default country code when all the sources of country data have failed in the - // exceedingly rare event that the device does not have a default locale set for some reason. - private static final String DEFAULT_COUNTRY_ISO = "US"; - private final Context mContext; - - private CountryDetector(Context context) { - this( - context, - (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE), - (LocationManager) context.getSystemService(Context.LOCATION_SERVICE), - new LocaleProvider()); - } - - private CountryDetector( - Context context, - TelephonyManager telephonyManager, - LocationManager locationManager, - LocaleProvider localeProvider) { - mTelephonyManager = telephonyManager; - mLocationManager = locationManager; - mLocaleProvider = localeProvider; - mContext = context; - - registerForLocationUpdates(context, mLocationManager); - } - - public static void registerForLocationUpdates(Context context, LocationManager locationManager) { - if (!PermissionsUtil.hasLocationPermissions(context)) { - Log.w(TAG, "No location permissions, not registering for location updates."); - return; - } - - if (!Geocoder.isPresent()) { - // Certain devices do not have an implementation of a geocoder - in that case there is - // no point trying to get location updates because we cannot retrieve the country based - // on the location anyway. - return; - } - final Intent activeIntent = new Intent(context, LocationChangedReceiver.class); - final PendingIntent pendingIntent = - PendingIntent.getBroadcast(context, 0, activeIntent, PendingIntent.FLAG_UPDATE_CURRENT); - - locationManager.requestLocationUpdates( - LocationManager.PASSIVE_PROVIDER, - TIME_BETWEEN_UPDATES_MS, - DISTANCE_BETWEEN_UPDATES_METERS, - pendingIntent); - } - - /** - * Returns the instance of the country detector. {@link #initialize(Context)} must have been - * called previously. - * - * @return the initialized country detector. - */ - public static synchronized CountryDetector getInstance(Context context) { - if (sInstance == null) { - sInstance = new CountryDetector(context.getApplicationContext()); - } - return sInstance; - } - - /** Factory method for {@link CountryDetector} that allows the caller to provide mock objects. */ - public CountryDetector getInstanceForTest( - Context context, - TelephonyManager telephonyManager, - LocationManager locationManager, - LocaleProvider localeProvider, - Geocoder geocoder) { - return new CountryDetector(context, telephonyManager, locationManager, localeProvider); - } - - public String getCurrentCountryIso() { - String result = null; - if (isNetworkCountryCodeAvailable()) { - result = getNetworkBasedCountryIso(); - } - if (TextUtils.isEmpty(result)) { - result = getLocationBasedCountryIso(); - } - if (TextUtils.isEmpty(result)) { - result = getSimBasedCountryIso(); - } - if (TextUtils.isEmpty(result)) { - result = getLocaleBasedCountryIso(); - } - if (TextUtils.isEmpty(result)) { - result = DEFAULT_COUNTRY_ISO; - } - return result.toUpperCase(Locale.US); - } - - /** @return the country code of the current telephony network the user is connected to. */ - private String getNetworkBasedCountryIso() { - return mTelephonyManager.getNetworkCountryIso(); - } - - /** @return the geocoded country code detected by the {@link LocationManager}. */ - private String getLocationBasedCountryIso() { - if (!Geocoder.isPresent() || !PermissionsUtil.hasLocationPermissions(mContext)) { - return null; - } - final SharedPreferences sharedPreferences = - PreferenceManager.getDefaultSharedPreferences(mContext); - return sharedPreferences.getString(KEY_PREFERENCE_CURRENT_COUNTRY, null); - } - - /** @return the country code of the SIM card currently inserted in the device. */ - private String getSimBasedCountryIso() { - return mTelephonyManager.getSimCountryIso(); - } - - /** @return the country code of the user's currently selected locale. */ - private String getLocaleBasedCountryIso() { - Locale defaultLocale = mLocaleProvider.getDefaultLocale(); - if (defaultLocale != null) { - return defaultLocale.getCountry(); - } - return null; - } - - private boolean isNetworkCountryCodeAvailable() { - // On CDMA TelephonyManager.getNetworkCountryIso() just returns the SIM's country code. - // In this case, we want to ignore the value returned and fallback to location instead. - return mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM; - } - - /** - * Class that can be used to return the user's default locale. This is in its own class so that it - * can be mocked out. - */ - public static class LocaleProvider { - - public Locale getDefaultLocale() { - return Locale.getDefault(); - } - } - - public static class LocationChangedReceiver extends BroadcastReceiver { - - @Override - public void onReceive(final Context context, Intent intent) { - if (!intent.hasExtra(LocationManager.KEY_LOCATION_CHANGED)) { - return; - } - - final Location location = - (Location) intent.getExtras().get(LocationManager.KEY_LOCATION_CHANGED); - - UpdateCountryService.updateCountry(context, location); - } - } -} diff --git a/java/com/android/contacts/common/location/UpdateCountryService.java b/java/com/android/contacts/common/location/UpdateCountryService.java deleted file mode 100644 index f23e09e205..0000000000 --- a/java/com/android/contacts/common/location/UpdateCountryService.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.contacts.common.location; - -import android.app.IntentService; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; -import android.location.Address; -import android.location.Geocoder; -import android.location.Location; -import android.preference.PreferenceManager; -import android.util.Log; -import java.io.IOException; -import java.util.List; - -/** - * Service used to perform asynchronous geocoding from within a broadcast receiver. Given a {@link - * Location}, convert it into a country code, and save it in shared preferences. - */ -public class UpdateCountryService extends IntentService { - - private static final String TAG = UpdateCountryService.class.getSimpleName(); - - private static final String ACTION_UPDATE_COUNTRY = "saveCountry"; - - private static final String KEY_INTENT_LOCATION = "location"; - - public UpdateCountryService() { - super(TAG); - } - - public static void updateCountry(Context context, Location location) { - final Intent serviceIntent = new Intent(context, UpdateCountryService.class); - serviceIntent.setAction(ACTION_UPDATE_COUNTRY); - serviceIntent.putExtra(UpdateCountryService.KEY_INTENT_LOCATION, location); - context.startService(serviceIntent); - } - - @Override - protected void onHandleIntent(Intent intent) { - if (intent == null) { - Log.d(TAG, "onHandleIntent: could not handle null intent"); - return; - } - if (ACTION_UPDATE_COUNTRY.equals(intent.getAction())) { - final Location location = intent.getParcelableExtra(KEY_INTENT_LOCATION); - final String country = getCountryFromLocation(getApplicationContext(), location); - - if (country == null) { - return; - } - - final SharedPreferences prefs = - PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - - final Editor editor = prefs.edit(); - editor.putLong(CountryDetector.KEY_PREFERENCE_TIME_UPDATED, System.currentTimeMillis()); - editor.putString(CountryDetector.KEY_PREFERENCE_CURRENT_COUNTRY, country); - editor.commit(); - } - } - - /** - * Given a {@link Location}, return a country code. - * - * @return the ISO 3166-1 two letter country code - */ - private String getCountryFromLocation(Context context, Location location) { - final Geocoder geocoder = new Geocoder(context); - String country = null; - try { - double latitude = location.getLatitude(); - // Latitude has to be between 90 and -90 (latitude of north and south poles wrt equator) - if (latitude <= 90 && latitude >= -90) { - final List
addresses = - geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1); - if (addresses != null && addresses.size() > 0) { - country = addresses.get(0).getCountryCode(); - } - } else { - Log.w(TAG, "Invalid latitude"); - } - } catch (IOException e) { - Log.w(TAG, "Exception occurred when getting geocoded country from location"); - } - return country; - } -} diff --git a/java/com/android/contacts/common/model/ContactLoader.java b/java/com/android/contacts/common/model/ContactLoader.java index 55464b1611..7ef3b73a09 100644 --- a/java/com/android/contacts/common/model/ContactLoader.java +++ b/java/com/android/contacts/common/model/ContactLoader.java @@ -522,6 +522,7 @@ public class ContactLoader extends AsyncTaskLoader { cursorColumnToContentValues(cursor, cv, ContactQuery.TIMES_USED); cursorColumnToContentValues(cursor, cv, ContactQuery.LAST_TIME_USED); cursorColumnToContentValues(cursor, cv, ContactQuery.CARRIER_PRESENCE); + return cv; } diff --git a/java/com/android/contacts/common/model/account/BaseAccountType.java b/java/com/android/contacts/common/model/account/BaseAccountType.java index 8e9ba738cf..ccdad36419 100644 --- a/java/com/android/contacts/common/model/account/BaseAccountType.java +++ b/java/com/android/contacts/common/model/account/BaseAccountType.java @@ -307,7 +307,7 @@ public abstract class BaseAccountType extends AccountType { DataKind kind = addKind( new DataKind(Phone.CONTENT_ITEM_TYPE, R.string.phoneLabelsGroup, Weight.PHONE, true)); - kind.iconAltRes = R.drawable.quantum_ic_message_white_24; + kind.iconAltRes = R.drawable.quantum_ic_message_vd_theme_24; kind.iconAltDescriptionRes = R.string.sms; kind.actionHeader = new PhoneActionInflater(); kind.actionAltHeader = new PhoneActionAltInflater(); @@ -1228,7 +1228,7 @@ public abstract class BaseAccountType extends AccountType { new PhoneActionInflater(), new SimpleInflater(Phone.NUMBER)); - kind.iconAltRes = R.drawable.quantum_ic_message_white_24; + kind.iconAltRes = R.drawable.quantum_ic_message_vd_theme_24; kind.iconAltDescriptionRes = R.string.sms; kind.actionAltHeader = new PhoneActionAltInflater(); diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_ab_search.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_ab_search.png deleted file mode 100644 index d86b2195afb90f0a4fbc29808538530ad76b764d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1115 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9>jA5L~c#`DCC7XMsm#F_88EW4Dvpb_@*6+MX_sArXh)&N#i=w@~Ex{@-()U$|BB zxFkN1;yBteX;Sznt=1H$&V>_=3_ptRa5XeM7Kr~lnsy$6bmGL3@vyf-embnQyRnNnYtfU~zAJJfF~wEw{QgX0fZ zLi4paPKUS7q7lym7z()Ou!b?p9?(h9EYOMAaQznd$%D7pidavd;nM4Ga5bCulkFhW z<%V@EuN-U=c01(F?Ph#tX<(ic!+$-HS?Zy}^h3ME&FXI`MlpW6d~W;e!kbbFZR@r@ znLC?(4}bReAC9XHu6XUspRnbCo&Cg;`*z>GcS`TpW}lv?#Xl#0>hArg)3UWAHCT(@ zYCGM3ydg5thqHFy9Qt81?#=~KLnnw*}N^1P4t&chOb0je(uugR-rP<6Wkx%KX6J#g{PS_ z@9o8(nIASSHoKR>uCeRi+67~y)5_4Ml`@j_G2d==ZtC83vMpT?OREZLLQ8}cEK!-DtEmdWB* zodfll+z)+^SFANz6}5^hM7=<+;`sd{mfg$p9{?-;Ey)m9O4u1%zh3IwPll zFWn|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9>jA5L~c#`DCC7XMsm#F_88EW4Dvpc0l7zJY5_^A`ZWue%kM_fq-kjZ~!;=zwJ4< zL|a9ZPWvBVvg6sfAavn$*5nOdmyY?#bUo3IEL8jWB;}aDhSn?f>9+!cCeP1bT%5UX za+K+T6$|IFh~8CdC=Att z@sg8<2Yn8gq0#xoA@iqGcE&2!XZt2^cKItc@0;L$mNSj4 z9~iG3kS<`~!xX&v_$nj&?FXd3=@?ocF3S|GoWA9%!Kb=7l~|LrkyjrWzF#@{!!gVD zeMQe2BsZLzv1zNn&+FN`bE^!~mfNv}Zg;Ttv^s6~#@fkLciB(1V@#$@A^YCCt6XV5 zc4L97Q}5>1w;ZaT=83n0Os*JaWNwqR?RWhDf58s+u6+isuFfxnxwFir#IH|r2L_~S ziEBhjN@7W>RdP`(kYX@0Ff`FMFw-?K4ly*fGO@5SG1WCNw=yu$k$Z6jMMG|WN@iLm zrUqjRhz7Gji-kZ9k{}y`^V3So6N^$A98>a>QWZRN6Vp?JQWH}u3s0tkVw=I!)z4*} HQ$iB}@Q>gm diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_business_white_120dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_business_white_120dp.png deleted file mode 100644 index d5942dcad2de787175d0dd426ed91096e2b77e28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2477 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 DfOg<$ diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_create_24dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_create_24dp.png deleted file mode 100644 index 540ab4deeaf68d799ce6b01a2b7679a7c78b1e8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge8NP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt0RKru zK~zY`-PXGb!Y~vD;Pj#uTzoJmH}UoazKesi)V5kT5!At1oO~iF{0^!1mec06b@9)X z5I#84$c4~Oyd3sub6pYpbtq#E@PUZZs_ZuTEa+b_N5MR^zTuYk<`36 zkIzVI!GkP>P{-#$>S_SMg{cp*7#dn8p4&%{G5vs}LA)4{anJm004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_008|-L_t(Y$L*C(4#7Ya$1C9mZXiu#hp-WQZr}i%rDxy< zg0|rrA~=YzYP)OxUivYa(W#bnL;8Qa-+S|0yqRPaD8-agib|1K8Z6jU22_DJv4sl< z8=A-=(r`tb3#V%0#`ra`SU zj&nvM^Ag@%ze+2{2n{45?+W>WJDFS~{wrqD5?(lJ37Rj%7f;ex1w5tg)p*VtHK zNZoK|F6Er4jXmCFhgL9G#Zk&5(EuK@;-MeRj^#WQoscJoV74yjp~%lA@}o6KxxAH@ jwCUnS>Nn?6iAcGF)wM*w~dvnPOyv>Jv>8&ic-9^XImeQXovWU#2Fs2AMWR>W&ywN9GOk zb$|+ROL~n6G)~rRhAsdxb&m8A5on#PHl3h$(pN>GI9Vk+K@QSmB2cm^EIL7!WWz|M zsGy?`;P?ibgjEKzW`djA@Lm}_KhaYoL3cBD? zaqD@X1++1Tcto$zGop`q2}~4)TA(1`zb$sOnkBj!UTkwO2Df$vT>M;0%uDv}_%Xzu zMO>xT5X$rw(}q!Y?TD|VCyXE`+Y2(vAokyFv>RO*z##h3fr|hCAK8pg#>GxlSJt?| P00000NkvXXu0mjf&tK(D diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_info_outline_24dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_info_outline_24dp.png deleted file mode 100644 index c7b1113cfef22bcec86ead7ae67be12326276cab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmVW+#V#f>U=9~3v zy5k#|%`o-bRp5gvNWBjKU}@RX_o(#cOX<;tO*2A$>f4JBeW-BBCp2Wv4dAi~>H>ZU-{cI? zse=}k;97{XqEJ|gdQ)z}NLv+h2nN-m6riYd=e>Y~D%A1;c7!A-*ac%VF|-AqWJ2?3 zQF6~!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ueoXKL{?^yL>WGgtNdSvKUBvfU(=jY&)Rw?>$`{Lp+Wzy|%yKCs2g_!}&8CTwI)8 zOsp18&r#Bsni{rRanU8s93}4~{Yh56Zb$4FsDD`>aq&c()8YUP6D2dFvh;b6=4H$M zzPD#);q2*_`R~5}w!L3`Ztwc^zOCD~U6YXKYoA+P&E4?b(6RCJk4Dj&!@@nYJ-(lr z?8q_mK|;gaV`kqT1vaEJ*024?^y*<%!+)L+zH5%}UUhQQOcv9x$#V|$cC0<}*>0PG z!_|=0VNGmb%?m{qGt_iGH)Wi5a)JEp^ADnqd`o06&z3yLGGnRT`mY~qME1)+_DwO$ z48DINj#<9t7k7oALv775t$j!SWnHt`5;>*z?aZ>17W4R-YZ_J^eiYUuv%hEaGTV5s z;t%Z`vS-ca*!1i04&jY96Sg~jUEp0A&h|4_cEu%wm8S(#TH}{GDs4^m|8!r;C08<~ zA^paLKlcw>#;m=4rR-9fU`m6boQux(FS|@GCKt~+w!15I+R{ZDMxOlgOFivWd2b1> ze6c>MK2)T2la4fJl&H(ApB!;hqfEGOO}q6y_pQD6T-VAf^A9FTi&vc7J8SOe=qm}K zaqkN`+YkMpEcn~t^s35t%`qSRFTG{m|EN-$y=lYsl#6FNb51;x)q50i<)Ov5$ELqr z14I6&8N8nx=3O BP#XXM diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_group_dk.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_group_dk.png deleted file mode 100644 index 06bd18fbb32cb70607f68fd2ec8318e54e9da1f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1954 zcmV;T2VMAyP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000JZ zNklV7PIJ!+t;V!oJfN=YCtiVu;H}tiswreKFDur= z^kOKoUmb}0m~l8uW<#gi|^SR z3s$0apbHwpXUJ^D-S`lWjq#pj{jOy7<#+|I!cXvmnA2W}5lbN!B79yujmz*}{UB`( zG0e2SwcB_IZ^ljWeToD3!Yl=bWRomte(1aYv-ogWd6?jXXexw$7-!*Er4srHp{e+O z3eG4nA}C8LGtGIpAwHK3=Sx|MyRi|E#y+K?O1=gu(jH*>Y~AH}Ax^_l*o#ShJYS1r z8VnAET9W6UiGSl4Ax{tM@N%3OJRd67OvCv2xQU4gts%m{6Fcx*`~bhipCqiqo1|2k zF~3mCYu_D4Srvx)3vR*9!S_2-THcReRd^s{{qy)>V{#W`xDprQn|NFC`(n^5rCRYI zR+tT=D!gzW?kEgBv~pDj!AhuYuqk2$hrFOF>hTlZ?PyBzxx`$SHW{qDwY>ynL3@$tn6_LPMX8A`=nOk zpo-5BIy~P09WtI}+7$1u&@3zPEG)Bs&KIBC!Q_#!#$mws2)D1h^oS$i*$6yfO@O zz&{^1;&~zHYh(Ty_^OlTgsd+=&}Nk7eIYwrv1tPCRv_g{^Vheywq zT7;(+YkN|?nU=C&yBK>g_}+q6#^og;eAnz_;0h^-4iD^3>Ni%8#+ZQD2Am(5-V^Ir zN#i_vRIjoC+HvvydjtkAhC=fZM@ zbe`QTwY~Xp@ff~=*GoZqI$jsv8J7a{{efw9UFSf&M#@O%NZsh5ZlE19EeqqW3Ztt! zozC{ac0M6BDZ6gBlx1!!AR=J1TE9~rc&=>(@{u?dzYA~X-w(s5rL;MWvOJGtQ`PBo zPQ_E~-#V8I#_(sUQ_R8o1}We-h2pnL*ClrZB)Y|(Rq!|^*1c6aZQU1ZE;YM&tq%xI z8Q$@>uyf9KxTq5ui_gL30gvec4E9O2<6iwhJQ~lH8nI@BR!Q;nDe01+yhNDumZIu( zI`cV{w50&rfbUDGt$BkmRm>em`G%o+#hAZes}JWArbG7|>Vd-YnbAr3v2+L@b(9>` zjw^&5wx%lu>2@jBW{TA)FU)2A^8WJjc?e$$+HO3pIo9M1bH3Cz%-q^FE*=g@fjquN zI&|lw=b@s^?;<=S_*J7kFc7ar%Iis~?MkVD3<}!Cq)PI_Q>8-pQ;dy|kM|}fCPr#J zi$dc(cD7WAaxtq8@so}Ejxb(#l+gylp@F&F>OSJo!l$HZ=?3DZ;e}yWog)Rxsq7+r z#@s1wv8mGUm*#s^ee%&jYz??(f1+r{>x=cL;1Vs-68)di{{Sql>z2Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000J3 zNklaDxyY>kk(YRYOn#DxS>FZrjEwA0l_Ub);0PC zRN^PMxPl~7K|;s`+|a}VLU4&vSNcVwwx%j7m{v^zD|ha_emKu_=iIk5ck6AC16e>-Cyzw$N@2n~Vo^yWNMMfd=q)tT)jFS&d7^CNZ@X zj4YagA)pfYYHY%3I01e99lyrD0G?VpYK<(4ff3-JhV9sfQ-(}?2tUV_xIVs98;fS5 zz0e5_@M$vJaTnf)CrAIJBK^K1^_6%LuEr1X>=@Hoj1X%Oivgc=r*JvmVc?|g5rUaA zkah?E#_O;vz9(3?7G^LoBAO)7d>E+yQ+R(!c@*$rG!dW=;bpk9X2KvKG#NjF!D$9& zamt$NNOL~E74P+i^QC0sE^NUAu}&?hdSAmBX$_HlN_QnTU_B0C5B?KlR${jjZ6+5Bzf)`-Ub6(?YstPXgt7+L;Sab4 zH^;u;P{Q&N`_&pqTmKB++ZddZx(XNJ>v&`J`%=)0m0WQjR+(u=Eyd~2#~qcRr!~-t z32zPX8Ty*GxI5Z28WKDj>PNdpaq2zsJ!#-qeI+UG#7WuL?RIB4<(Lx3ljBacK*s97 z#JKgvwI=sPn^w?iU`S>T8u*Q|3fvz232T+wCjB5wgf;k0jQz0^r`y5I?IF2I z^P`OCEAi_1?I+QGBruFOgn1BO#4jrB{bZn{*!Sn~Sv(G3(5M!%F4`OM_IO{7%R++f zZnrxt6IIlkz{PlNfVvZBDVce%L0HeR+muN3|7))ex%ad1{K|1`ia1)*xKwlB#&kPA~R1QH0 zmGb;wp{-p84yZr;L{aj2XGC( zrxap`l2GYy&EUuow5J7@lD(l>#xUoiVy4#f!&)-Bm7cSd4n*U(mov8Ssg+U>c0jb4vn6tln9Tl=1wa4W=e^EovQD?*!LE+ z(=IOy@O?9nfvXfJIzDW7+@P>}Ao_%PZN>#*(+6VyYQ;%AVJ?@4X5+%)d zJfyoW`qE)@|C5yJ^m&+UD}~tyVzEw0s?N}vl{2wishnrGDP?aSE*`|!@Jhu=&%oKC zoehd(zAJ26x7$reyjF=w=PK3cuxg+am{x>v*M!iudcEGxu655(K2ou%V zQIt0f%`3+IzRtj$Ycn0W-bf8plFyA!#SidAvmYggmE$UqqvrG#C*7&|+H|s-O$&2L zzrF>yVjkdYpq<9ko?}i%mgRNYg@@X17WvXbnGv+sf!2#&Mw93>HDGHV^fZ0z znomtr$_>N|@FSzII%frxq3jZT!rUQksi|d9FU|L;`pBc9wl(CM{o$f%tuNJ|g3Gi_ z%k+On{{y0A2ANs}?Hd3903~!qSaf7zbY(hYa%Ew3WdJfTF*7YNH!U+TR536*G&wpm zIV~_ZIxsNX{{rd&001R)MObuXVRU6WZEs|0W_bWIFflVNFgGnTFjO%xIy5&rH83qO zH##sd=bXl|0000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy07*qo IM6N<$f)`AK!vFvP diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_overflow_lt.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_overflow_lt.png deleted file mode 100644 index 1ba12950c81dd66dc20f2b1877211c8c4019e222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 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 R1P?wUfW=(0Yqq(5_iu=5hgbjr diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_remove_field_holo_light.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_remove_field_holo_light.png deleted file mode 100644 index 03fd2fb108bc599a117eb739751d9157ceb432c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1rX+877l!}s{b%+Ad7K3vkswhI zFm^kcZ3hx8D{xE)(qO#|6+TOsF)%Q4d%8G=Se%}Ed7~ebqlnwX{5u@Ijj>`;QQX|j ztS5epXS`RQ;h-SV6V$*eCY>@})+Mj@+?|=f?=M{OAShPt->SC8Z#RRPZm~&C;HW6k z-@2t+Ib^gv;Pg(J~CnsOAwz@WNb;Z`h3s1+aTbh}h6?}B(&N9ta zvR&G~Dc81HRf#PRR5Pv7`I`93*MGNIYU-M&JM(LzuPh4TduOt&;@AGwg5IX9RMI~h zTZffoNS=JPa@rK1ywEk}2b%YVve;|woVWMpLsj0x-SH(WDsxY44gTl)he7*mz1FG8 zR^NbOq*~${QIe8al4_M)lnSI6j0_A7bqy?lD8$g%%GA`#6v#EVGB99u?Bz$%kei>9 znO2EgLy3&(W}pU1kPX54X(i=}MX3yqDfvmM3ZA)%>8U}fi7AzZCsS>JiWody{an^L HB{Ts5WB9&8 diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_dk.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_dk.png deleted file mode 100644 index e8cb0f5fec5b5599df3d1c9a4fb1f513066bedac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1438 zcmZ8hdpOez82*`U&6w)3CWPfA zh}mrzR66}Y8#z({(~0gx0B9}9=x2ij9i=~Pj)9F;K6rKKQhyF-{G%m{7 zj_4CMwN&n!hx9|Tp3bYPr&QnDIEJp+vS$O%3H6)LGi;wQY4?f#b zyGcbeOjQZr70}K_h39~0DTjRw?HVFvz&e$_LDl@8z~Bt zrGFuK`Dyik6l7Cno+lyw_uPkER>(U`gSoFfnjugLp2Fx((6;7&o@juz#FN3MS@%A; z7f$BfM@u|KK@^9^vPt;W)=+ev!6mhVY^daz$dlqWRWgjFD6POQ6&>l{tP$ImphitM z3NTf0@l|}Gj1J8suml1{@oo>RP{0REJ^3A*c%#@*RvrAX%i}AKgY+nH8B|d=f!Qb) z^P6rRr`N!Wl44n(3?0?>7xt^RXK4k(2mAg!;#{=;d_gC0*t7g}QvBj&n91o^@HvMW z6-3QzhXgPAo||3TZD;8gD-fn{@8eSxRa~C@nljH@)RJGD5nyfB4iX~rLHe_)3hQ>u z!P%=PDa2Fui7Oh3ba2v9L2Ua8NM&Ee+u2UTjDk4pE$F%i&ghQ5(xQEU#4Ldw=*k{} zzt>yRWS`63*Rm1*@b&Gpztxv3yfovhlz>3o#Q(EFT*pN>& zTf&O`)c9+;(qz`P&jvMCLjvC3HZn1fTvCnGl+|IKo3-K&RCe6@*x7t{EY^ytCiHLG zm%CsrIyn5!rPyQ8R@rX_73OFmw9uTTFX!aE-hZf@h4f2+xI+Sa7d_h{>S zo2+QhRZGJe~9-F;}2#!&)^(XT-Fn$%;eP>fz4lBp=ni0nB( zp*|qgD974Q(L9oI8OKkCeJ3}BkLnc**v4%AnFHiA+}VONSK9>zOcdP($b?mQwFtu& zG=|MQ#31qn8(A@-k}&FayDK$-KZQm4y9xQG{s4=?)0!;I>ui4PN|i)a`r;PI$q<27 z7bE;j<`vU>cNy?j&one#cg$+OZN1gKMUSb{nyUUKtb`w-r;AgYZyS^6ag(P-*c!CV zlZ)dKO_CFZ5S^HZi8-sT7d75bKZT{s5^{q$>8cys(ify1XYU^uLXD$Y2FK8(0364d zU=11u28n$|YjU9M(z4Cz!Vnkp&mRVlyCB=OjCBiC6IITzh{$#_ie&V?lJ zM?I38Z?XojVzktrDKEP%;o>5TRkiK^g7}jUwQ$bP*>tnz?919a5xxo+7eznQ-I1rb zH{Lw|o=x7DglJB+s@s~|w`O0K%WjTNpUW#3Zx*&QdG7bQeyqCBH|=G)zxs`MsK!)H z=8gMAf&yFumj-pMV98aVD|BRMs?fxhGGBLoY%E!K)@x^UpSAkyyu+5wzZJ49pD$qD z`AKeie8C0FwT_;`KaVV0`e6!pnMP3Atf+-g#oJ@A27Oty{Yb*P=hJp)&G(M#Qd}9E z8@TZ4q}p|-rt9Z>zCHb|Y;JM=&r`|ELY$hH$%ICotG;`7-j3$oNeXjoJA58y^H&9K z&h~mHoUhrs^vX3R9)}6PkMXWIeKBKdd5wyH>fS8>^%^Hw7;~rRe%O=5;-Of4t^HP} z{1x-vPtDr-0y}kiS#CL%|NK>FqO)s(QQrEC>TYe~J*(TEXIU`#-$*N&#k}pN;VErt zL%X$mU$Jee$!A$Q?PZ`%yKTpftw{%0h)g-%_uFbe8-t@}ykMl}i8~WcR+&zoXRjX4 zHFp`q$->p@zi)+k?X=&Uy<0f%RA{IB0l(WkTcsLyzI!3Zzoa@qbMntiQ;h$WU7MmW z)bAy*_PfreW2v`Z9^1;^DzsDkoAoR6of_q5rQ^Of#{_6?m~HCOqQvNN$mh42?seai zcZ*)Ch}j(8a69YnUX2d9Pn&hMp6`7gK6Aq(fm5zi-RG9MJma^%8)K#B&UE4A)VNP` zwf%NzoCs;2yR5$dRp0(MJz_Zukm5qCRo%EkY`>)qC{M)|oFZ1{N z>N`6(&a?&QZPgOjh?11Vl2ohYqEsNoU}RuuplfKTYh)B+Xl`X_WMyisYhYnzU~r`= zZ7qt1-29Zxv`X9>mfpW72-F}6vLQG>t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU38N O5re0zpUXO@geCxUDHnMF diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_lt.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_lt.png deleted file mode 100644 index 1c9bb81fa728fb670f55c5b7c34d647d3ec8a948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1414 zcmZ8hc{J1u6#mVO(KE6n6e+u;p~;YDaw;;Ik!{Q{$!^B_WR0=JSYArD&@f0y$Szsx zj2a>&sh(#U+c6lo+!B za2>od?*;(aJODTpRQTN15L^g*SeTgryL(mKUXcwdB0=U?LP0eD)uw&^=fOC8yonLX zXKIl(=zo+f-E$!uZSY36?6pwJOZ+eOp-B3ArS zZb@!ImOEp3;kx2WcqVNu&K05>lUZf&QRW9v8bWP-Zt&a{g%dHZcVDHG3HKavoyR-6 zV-P=)YsvAJH|%ML#a_WuBE{)P=%VXX%1(UN3l*Y_yr>@^@rv9hmyB~nNM9t+Dt_B(D1mLC%& zd{}JFPQD6VWkjEs@D^Xa!r>tDK0Xskg*L79Mmf}b)81)hl1fbGBvG!iSo~7pf1+bhz3^tE$oNhzc?6}8~#j(`-b>mhyAr7mdElX@{3zG2Epc$A> zDlJtuJhv`BA5TKI?HgHOBiN!7naeK6d;r%OscmbXvY<7UpBQyf`YJN~VGIgZq@$O{bjo z!X2rrBS=W@=jW4EIg__7a!p{PdMUf={Me{1W^&24{ZQ+}%6uIT7n?ETaYnx9D%$b` zOQX>hS$eqO-9es`puEuqIhTJa0e*w6`t1|MIaGe6cPw+|@k23j&G*u&Xsy8}0pnw^ zYMHgRQ`Y=BTr?V?>C;&1`oq&eB`uC&=bTz>{D@N@vW>-^bK_^wDU0qKMmcAYDG)f|d;on8FA^%P;8t8Xg)ID;{i=>`XJME`$iIrKA z4cbpB9(C6zgkrgKO^;Za-dnu`;{M|;Wd1Gh0FAKQ^{=UX*(tR@)m?}Jp-$= z9AFV3?zAtqE5MKG;9Jcs<+PU6)khtm{P^o0r6zXV*T4J4uA%UY-sa%sWsC6S@L610 z9OP1?HG^}R`4Fo_JbsDXWGSEh&NT*R)Jq#9&0Vx)R8sCM^ z|HlvzNcHuK{J+5ftB?BEz%P8=2pZ(}66^xK!Xn&5Xn+wl(1WIg4{-OU5ozw!$lyNO Q-aiEJI4hGnW4DBV04ghaivR!s diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_person_24dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_person_24dp.png deleted file mode 100644 index 56708b0bad6c193edb0bb0c7f39897566aff4b20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmV+s0q*{ZP)YT@VRsA^f&#CYX5^Hu(?m zF*ENmu~^hkk;cHn4%P)&@oliatsUu z&8$SX=lAd5u0Zi}VjR>!0|zyrImQnt_7h!vKpX^f3^s?--9gBX8E^-oJ7z!~1k7oB zf#!ZAl(y*RAYv2ysDnlwG-MJrG~3$%9rkI^I0#xWqBv@>R2^_f4GIS#JBnBb4X)+~ zsDTD_{bMTTutyX%&_KXw#{ad(Gyng`foEe=2V@^YGouBU9LWI5qF;K`|BFGz!U;JF zCXTF@V#nZekiz``9L6*LeT0hN)0+C92dudMKa0_fe;1(Qe}H;@v8tn`gV22q6f*+i z?`To`2Z-IM((}L(Wi9wDLQXSKM;B17D}*OeTyIF^+E|F z%1{$7ibd#&U1Q3BVI)30%Bh})&_V$@ZLLL5TWCcDNjVJw0NR_8Q31K500000NkvXX Hu0mjff)}#X diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_tx_videocam.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_tx_videocam.png deleted file mode 100644 index 603ddc8950b3d6ce62d05b586fe1672fdc182f6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge8NP)&@oliatsUu z&8$SX=lAd5u0Zi}VjR>!0|zyrImQnt_7h!vKpX^f3^s?--9gBX8E^-oJ7z!~1k7oB zf#!ZAl(y*RAYv2ysDnlwG-MJrG~3$%9rkI^I0#xWqBv@>R2^_f4GIS#JBnBb4X)+~ zsDTD_{bMTTutyX%&;~6qp7HOa@y!4KabctB|1ZMXGyWff=>xLEv58X+D9r!Q0dpMC zf&yeYAb%~A#Mh|Fc+M2r?%_q3+|=ONWT05ohL7Dd^a Q0ssI207*qoM6N<$f^I#dWdHyG diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_videocam.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_videocam.png deleted file mode 100644 index 97905c9f59f2e9e1a39596965bd1840d52c4a424..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8JTOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>Lt-Bmvt88KApP(5pZ_kh z%@PmX0u{R*da@R{En}6u>To#8}680nh*d3bjc@ zK~#9!?Oji76X_Ly@3TD)fvgfjkuf_np+&ODsRy7)yXpZ6soiC%)JuA41ssC9H>#ev zpj~xyDS}(8O(k}sfL|iALbwpeTfOR5TL&PUUw1kLD$z*aVo6UZWh}17Sz=#u+G7RGw0GtGXlZben zh;~a=0AhuRz5;*+09ep<{UIXOV#0jFvaG#CG{ZSRgNSbv(Vng<1o0&i-D8a1M8q#t zRsA+5YzIrSEbAT4`L6)rGyo_O(T@WFcNk-zsjB+7C|F)k348wh`S%>hxd;HWL^K)c zxdU+(0Ol1%xpv^df&UB@VU}eb}U7Yh9MD$+Fi>Hgc%@~_eRrS9;bBX10 zd7N{8Hzv!M7kZC#ez#mMkN3pFgk{|&qPJo?0$JL9#@MNLEseGLv?PTajL8bFySIey z5?v$AFpT-w4R+=p4a4|TR|pefY8(xAj&tpV{DI~$(=^X;&Tq!LmbegR>}Nq1*S-lW z7K?hVR{K}HD3+fQNu^Rh^qa==$Mt;WuIIi!jTw=3saex!u4C zq2tb7qIjS6fQVSE*HB#}N5m7Fraf%i!ib28mya=7;k!m(x@Ik0;e}y%`4}P6j#`#= zp)HqKDwX!Xdi81v2CoJq>R1~Y8Oga7_PAP@ZQCElWc38&wrzh9$ighkI=Hd1@o(t= zQnY@BlSm}Kzf;}gjus}0JY%wY2Ssqu+QLNnbfMoWatAQXuPTZ%)m#?7&B7eVxfqib ziHLDj>^pFGi6T8R8>=fam~Bp3v8G_--Kg&(88R!Iv@Gi#SHd{wzl_xsEr>mH+k+0v zvi5FlY&`EqbXcp^V03g8ve~TbcZ$U#RI61;rBYp0Py}Uj5{blt&7Gjh2J@QhYHI4ITZD<7Cf|m!0X&n*Ksue4HlA(UP%4!MUbdz+ z*-K5+_99}90RR|=aZEN@oO951U8+I=0Mh9+=(-M^^MRDjC0g7gj=$K75>Lv0Dh?ew z6zZJQ$@o#0%>ySJgAS>LWilCG-&|88x|+t|VPs@v>+?h+0f|HcDwWFCKd)dVolZlwTJ=5I zM_D!>^Vo4BLVWh@nOdvWr0o>cb=~vtPoF*o#{5?taL!x07{f67UN%2SrBWKJ*Xuc% z>#SD72T=$B0AsA>O;;)vUrURq%H|jKdOgR8NE%^Yi{htGpLR61*YEwT@w~p%YuN%s zi#djfxv;G(pU($=dUtx7^ZC5j(-&FUT6vxT^H`1%(P0^bc}=devJ+n8B$LU=$|fuD zAfm$zBo*4YB}-RUR-`UQ+{W_?D0(fMS0Xte#u*}pdLH5G>S|=ii?VDkE^!arJZ?2C z$j-9M952eUxwynJhKQjO*6D;E=6F$-&BemTLbov4iBOs2MOiji3xkj$E2Ir$yeP}& zYQ^G+@X#OI&9}B!#eIvAE;selpuZ;5MFDim2DJxm~{vm$)v?!m8D( z>)&MM)4ayxOJzx(RGy03d}huaI_ndb;BYnRD)$m-D*5q9~D-Eg;qz5v|D@ z%`2bQ>04N@-+Ntm6U)oXk(DigOI%}!_(ax#t@3j1)H`g}UwFY!uFfmh7^ZA8tGp2L z2_vE zVca_+R2wrvj$QMPTjRU6`S{`v|Lw+``G2J}+|o#`_FzRB-QK&_ zxEUfTKByH6g?kXvcB7qAHMLqTlt`*u=;lU4BD%NP9gsBy3AZ3dB*7TlIt7+BnB5Kd zuIFQnXu(0mFSZdT_R!vm^%FVVY3y{%noRGrSU-_-hp%yhO_N*7G|lJnSsl>;BCcwh zcA&8xF>Crl4FKk2RYeB#&Ap?y)jI*0ocE zZ{{-5U5P{d-iGpm1Mo$ds;bWr@p`Pcp1H&8Ze7@2-vgx6>B|7H7OSu8SQEO3K!jy7 znQs_lmty^Oecg4*?L_Tu>#$}J5i?Em%lPd2uDQZTnx_2-5qV$>69aHWeBWz;7}Ch{ zrR$dOvNcV6h=^BXm4;5()mD91TDrsr*O)R46TR%y7jfW%y)TDHk&mO@ocPO>4cs2+np~EVPZbJ1psrgnx$bbNdHUUb67J9 zg~D}+JI!{APo}1(&Ih*0cCJK3Nz*j{68Ca$+YR2y03UP%OFddg*C!7 z%`-&w>9BWIN5nEBo(;Or>N;Tn0L5ZacO2()7~b6D14U7Ok|y=>N9E4kBJpr_-0cYB2hmuuWK&bx`yvp6$1e zwxTL}o-uaCtrTtG2-}3{8GTU@HyLrFRsmpMQIu;tRpbr@VNDU`yP|38=?J+?2LSFc z#{R6T>R-c({Q8ctCU?1)h-NtFXAtr2Zf%rru%wqnbdNE13lVQLZl;TbrAOHfiQ=DQ z@Llh$lcFWlZpj2y#KAHP0I;Cz`okz#QeP6b1A$m97T>Jb>p3FIA!1InA{j@-Jw!By zh+~^4g(KoR5v_~=UjjfG5uXsz5+W`olgTA2?p zbb>IW`N`93fr2)kE{-7*QBRJJkl{&7FVVepxUS$Rt1LT2VAvn7lLLt0oo!v4%( tpjG6n=4tr&fORvYRP%q%M>EqU82;Q9of*be(FHVz!PC{xWt~$(699PnDoy|Z diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_background_holo.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_background_holo.9.png deleted file mode 100644 index cddf9be75cb961b8eb07c840f03b94cf9d75c4f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^SSc;uILpXq-h9ji|$mcBZh%9Dc z;O+!rM)Q-W*8&BbJY5_^B3j?xaO66mz~gdp<@V42zI)^)>!iTv{fJd zEhMzySFz|po$%_+!(9_s>(&;xx>lU4^}fg(pK&+9s4Yi*fPYVr(d+ZsMpuLvFM&vaREXrx_Tc3$e~Whnu8n!ic6h5% UJ||0F9MEA5p00i_>zopr00X5`z5oCK diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_longpressed_holo_light.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_longpressed_holo_light.9.png deleted file mode 100644 index e9afcc9248a49f4cfd95a0cb07504add2789043a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhEX7WqAsj$Z!;#Vf2?p zbb>IW`N`93fr1X6E{-7*Q%#Yu{jSZY6_r0*XaPU~Kw7H>RPz#So x*q`|ew2FMyJPjWoux@6QYW~leSYKby#;`O{WM{qLW{?XQJYD@<);T3K0RTWvFIxZr diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_pressed_holo_light.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_pressed_holo_light.9.png deleted file mode 100644 index 2054530ed2870bfa7dbc60a2d142ba3776e63d33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhEX7WqAsj$Z!;#Vf2?p zbb>IW`N`93fr5^nE{-7*QCu0d(23bbo?Vjc_au2PNc{2VI6ud7G9!a*tc2mrrkFoK!x%hW{an^LB{Ts56WK1# diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_section_divider_holo_custom.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_section_divider_holo_custom.9.png deleted file mode 100644 index a0f17568e27a95f5854a49244dbbbb5f3b616490..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^+(2x^!3HF|ZYnwhDYhhUcNd2LAh=-f^2tCE&H|6f zVxUT45N2eUHAey{$X?><>&kwYla<5Vh_7IuD(Vv|Vm>oBzTIK7#RFDvhl3^SXa`R9`ofon7N tCp%lyB7iZ0L=22WQ%mvv4FO#qwbK_&nI diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_title_holo.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_title_holo.9.png deleted file mode 100644 index ae937176e07806c0253f2ad1b2a98af020c7048f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^YCvqn!3HD^s#YokDVAa<&kznEsNqQI0P;BtJR*x3 z7`Qt@n9=;?>9s(?wVp1HArY-_ZyItPHV|;R7^!HGBYWlLzw1!}GliFUT=UHdl2n`E zadb~ss6?&6iU|{EDqNJmAf0mP-siX1XHR@5$`F-({-)}?cgJM}S1??tu0QK-m3v%3 zP{Y`Jokq`6gRq10dS~)Q9_&e(zUfP#o@b&?>qe1dK@#5h7;Cr~l6zh@zWethM*ny8 j1ta0KZC9e}({Awz?~#@Nvw&wR(BTZ8u6{1-oD!M6^z85nT{$N{hdt(%udW{+bDSq z$k1C8cWuh0xe;ayLd)-M4F$8N!etY4Hf?yl^?6C@Nw2b`O&k8QX>a?^+@U|^y9|%g T4=ZD!I~hD({an^LB{Ts5W9VBO diff --git a/java/com/android/contacts/common/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png b/java/com/android/contacts/common/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png deleted file mode 100644 index 569d28f543c606a2d7c59a30a02b050b4a06b666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^+(2x^!3HF|ZYnwhDYhhUcNd2LAh=-f^2tCE&H|6f zVxUT45N2eUHAey{$X?><>&kwYla<3t|Hj4EE})Q)r;B5V$MLsU4Y?W|cvvsmKl-b` zsa;0<;IULz?uqtam0dYlOw${*c6MsdW8Lx8@o4;!hSL>g7I%va3kyH;f1Ib1%o9Jq fXVz5pB}EMR`z2%BOq}im&1LX(^>bP0l+XkK>f1ab diff --git a/java/com/android/contacts/common/res/drawable-ldrtl-hdpi/list_title_holo.9.png b/java/com/android/contacts/common/res/drawable-ldrtl-hdpi/list_title_holo.9.png deleted file mode 100644 index 5ec4c96a7ec79659fb416d9f8c3242ff006290d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^YCvqn!3HD^s#YokDb50q$YKTt?oJS9G(UNIEl_Za zr;B4qMC;p|hFpgY1Y9mgCVJ>{?D+UM|MBD{0&WK-%fVoZD@j3`OVmZ>XGi|L-Ke*SnOy_U(9N zF!gYVrqZqa8`6_@P5hsFXZ0J|f}@FA?JH%L70oz>kFkoA!Ao;~aX_}LQrV6CgT^^4 dw%1Mi$hy=?`}&W~#vo5Ic)I$ztaD0e0swJrW;_4@ diff --git a/java/com/android/contacts/common/res/drawable-ldrtl-mdpi/list_focused_holo.9.png b/java/com/android/contacts/common/res/drawable-ldrtl-mdpi/list_focused_holo.9.png deleted file mode 100644 index 4139942d6882b4de3cccf96de261072d85bbb4f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^SI14-?iy0WWJ3*My{N(AiK*2el zE{-7)t#5B^6^z85nT{$N{hdt(%udW{+bDSq z$k1C8cWuh0xe;ayLd)-M4F$8N!etY4Hf?yl^?6C@Nw2b`O&k8QX>a?^+@U|^y9|%g T4=ZD!I~hD({an^LB{Ts5W9VBO diff --git a/java/com/android/contacts/common/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png b/java/com/android/contacts/common/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png deleted file mode 100644 index 065ff62ceee695bd6e83b065562790f8ee46a930..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^96+qZ!3HFgEN0vWQfx`y?k)`fL2$v|<&%LToCO|{ z#S9GG!XV7ZFl&wkP>{XE)7O>#E+;F8wIIXll?gy0M^6{W5R21qFK^^MU?6bV;o^yZ z-G3&OJUusGVJYM4eQvCQo23_U$wp*6Nls@t5Wb-3-&tQ96(S diff --git a/java/com/android/contacts/common/res/drawable-ldrtl-mdpi/list_title_holo.9.png b/java/com/android/contacts/common/res/drawable-ldrtl-mdpi/list_title_holo.9.png deleted file mode 100644 index 013d5e711b34c8919dcdcf8811bf6d4612e22653..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^Qb4T4!3HE9lTY#iDb50q$YKTt?oJS9G(UNIEl@DW z)5S5wqx0=`L%s$B9%cvWg?&CXi~rZV#x+$m&%6=P9de2BX7QA08r3#JsMX$Ur|CVvdBFVdQ&MBb@0PTrCTmS$7 diff --git a/java/com/android/contacts/common/res/drawable-ldrtl-sw600dp-hdpi/list_activated_holo.9.png b/java/com/android/contacts/common/res/drawable-ldrtl-sw600dp-hdpi/list_activated_holo.9.png deleted file mode 100644 index 947f03cecca31f3a3fedd9781b9702455363d023..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1666 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 T4=ZD!I~hD({an^LB{Ts5W9VBO diff --git a/java/com/android/contacts/common/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png b/java/com/android/contacts/common/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png deleted file mode 100644 index af5855420ec10eafba6256c00a976bf9c77c741e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^d_e5P!3HGLFFij7q}Y|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfT~1a`22rbRFUo*Ifu1goAs)xyUO&irz<`J4;OzJ5A1o#hIdmfYcXC`PG cFK;}R{Y!>qtwfUMYoOr_p00i_>zopr0JIi6&;S4c diff --git a/java/com/android/contacts/common/res/drawable-ldrtl-xhdpi/list_title_holo.9.png b/java/com/android/contacts/common/res/drawable-ldrtl-xhdpi/list_title_holo.9.png deleted file mode 100644 index cb801ac1b711324673e9380ae3856df337e73727..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^MnLSu!3HEnWm^k?6lZ})WHAE+cP9ulnx8zq7AUyU z)5S3)qw(!+L%u@>0<0JBax7i)NNV4I%_5;Al6Im(rW>Cq&I;evQT9Yc?~Py3>eBK_ zUsmR;tbA8@Mk;IK^KDg4k$It^$vwZnKicI->Z@<`Q z!(7|P0Wr_7N7)|GX}bWGB8jmtY{AbrC*tp$_+HA_T`gBOdDT%bpyL@lUHx3vIVCg! E0AYe*VE_OC diff --git a/java/com/android/contacts/common/res/drawable-mdpi/list_activated_holo.9.png b/java/com/android/contacts/common/res/drawable-mdpi/list_activated_holo.9.png deleted file mode 100644 index 3bf8e03623c94b68d31963ffe7e59c72c3dcc059..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqEX7WqAsj$Z!;#Vf4nJ zaCd?*qxs3xYk`86o-U3d5>t~CW>mH@a{g&g;s7!l1y4Byva-KaJLVIiI)OpBYodjS ofJx&-C1HsL_x|*Yp0_#7zz}{&aC*>dO_0?Lp00i_>zopr00f~Zw*UYD diff --git a/java/com/android/contacts/common/res/drawable-mdpi/list_focused_holo.9.png b/java/com/android/contacts/common/res/drawable-mdpi/list_focused_holo.9.png deleted file mode 100644 index 86578be45ae3fbbd3a3c0be96fd487cdca7f95b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^SSc;uILpXq-h9ji|$mcBZh%9Dc z;O+!rM)Q-W*8&B5JzX3_B3j?x*vQ+UAkg}7vPJ(?Z;MW2Lr(7t7J_0y0>!iTv{fJd zEhMzySFz|po$%_+!(9_s>(&;xx>lU4^}fg(pK&+9s4Yi*fPYVr(d+ZsMpuLvFM&vaREXrx_Tc3$e~Whnu8n!ic6h5% UJ||0F9MEA5p00i_>zopr00X5`z5oCK diff --git a/java/com/android/contacts/common/res/drawable-mdpi/list_longpressed_holo_light.9.png b/java/com/android/contacts/common/res/drawable-mdpi/list_longpressed_holo_light.9.png deleted file mode 100644 index 3226ab760aaa0c15b1fcab6d993bce639f0676dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqEX7WqAsj$Z!;#Vf4nJ zaCd?*qxs3xYk`8co-U3d5>uD#j+S3j3^P64nJ zaCd?*qxs3xYk`6eo-U3d5>u0BSQe`>3;p0f$^!z%>E}`sT8w%mH#B_t^2ONahROs+ w;Y|~FhzOW8PE-<>Sa9!8KkxZDmXjG7KBtQ4PiOt712l`l)78&qol`;+06UH>DgXcg diff --git a/java/com/android/contacts/common/res/drawable-mdpi/list_section_divider_holo_custom.9.png b/java/com/android/contacts/common/res/drawable-mdpi/list_section_divider_holo_custom.9.png deleted file mode 100644 index 1d9371de077a7d6e059f17d13af1e6addbd3298c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 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 bhY$P%tq!Ih=dNuH00000NkvXXu0mjf+U({* diff --git a/java/com/android/contacts/common/res/drawable-sw600dp-xhdpi/list_activated_holo.9.png b/java/com/android/contacts/common/res/drawable-sw600dp-xhdpi/list_activated_holo.9.png deleted file mode 100644 index 2eb7c7ebc37bc4f7abed2c22a5ddff26788478fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2478 zcmV;f2~qZmP)ghyEc0P zmP>$yTPXy=Hf@z_8KWbd-sml1LBh`+vAyY{LT0O=l}n6jt%TS zg$cklkHCWf0J~33$fo)v=QY{y$@3A_oJ%%$`!L)0f;_M7w+v?I9!Y6Gvn2Zz2{40M z+NVnk0EpSS#(8k>Wep7QFJ4_M>bwDg!#yHFgTNi)%+uknQsl0{T}6bZJ?jp@U89KF z>@P4S7*00eJj+UEfZD+};EH%i)EsBas&a{75^?jX$xtc^j0~vpuu88yyrBgMDv=4m z>`BCnIRT?29$B?G`r_6#EkF=`#H)m@41pzxK`bqxm=`GIl&;pO^4lHT7B5W3R3Kg?ccw|t4o>!iDU`gcl zr?)Ox+!7!6y_>IyhlI_6$r}XOvVc-S0ZZD^y{6@h_brM|)J!lG0meqCil0cJtPA9Z zl`tfIW6SEqt}lHqHCbZVTt&PlYPWLRJYWg1)+DX>{o{B!Ffq;!%U7 zBzOJ_QUaDqoaqn2GU(0ikGAdn!rIoE6iiL^5n}dyN5{cSx`1U;Ya}ebzF|co71flP zv^Bqq)JAWwPcRckhC*D(iml5!w4ZF-nqJw~5}s+(&GQkj8q9#35VEA_x2#D#x~eNa zn-=F!k?O3LJUJCmE(*?ORD~^idj0a)_aEETCTMn33G<_fcc=x^Sgeo$m{`v%C>LpC zS6leo-D_KBO9GfTMJg$WCtkpweb@5>`4J@^R%!3fZHrfTq_lc^Xs{yQc)``jSOP|w zpyw1pgojrwir(MeI%DUqMPn6l{DNwux0HZ1iHB~5$TI1TXS&;VJ+v+*s1BQQFb_V$ zVD>Kh000w8MM0KH(U3yhKff~BnTXEmrZz?q&j>~AOdPOuSE7hV22~VB#k$T^=(Wcm zT(GvYKELpy;XcBZ)EsWSAQbZgQqpsqRwcKsSvsqDF&X?Wo3&Aw#wZ}K5zx(C&3qp$UeNCo8J_5L;xU35{4GJlOzPV{-%aT-l+G?*J%v}-h zcW)~`tILX5i{#sKSifl@&% zOU2c1ZC;gZGzq{LMLg?z%s{aqkR4J~LA3YzC%PV5)-mA}r{C~*)H2G%g{%Sq8yBUu z&0TE~AA|RlX#OO&Pw2~ zYZ}a55pwsOl1)YsKmrf~)Y@iJs?)qYlr?|+&WV8!ZVu{=vN3;0tt!8(Zu<z{`}~f%y-^8(ql^LyD=;@^vZAtXSp1j&UC9pQ=4N7zCE}{$`irZS5P(pb(u)je zG5N;dP7c2O_K{x6^*evVePnEZG*urX0ffVhSkkhXaqLpBe)0B5-HGKqRfrX5cXBbe zei2O3ghaf>${Uv4x%W`-pFX@eT2Bx2Lxj99h~4-?BmfXoG+`ke;g5O-%ll4U7_G;^ z=C5WSm-2i3B^;5I?lde?_?>fC3%`8-!=a&k(V9*3O`3dggQfeH0HFYpxC9B_fBHi9 z*rlHQY+9UOB9-_umbQ$IVuI1Sz@SvS`Jd|prI+{rqyK6qJ7ec>>U0o$RdGi$Eh?d? zJW?#nch6nPjp(HrnOJj(c$}YwV2~J7Mp2nkod&`&`J)5J2VZ&ny<0Q!{pR_|q`$u* zAgoEm5|&{}K78SZej}5cwyJENX?cg_n)(Go0MUenSkfFSmaUie{Jr*@78ExT*@B|BDJWbFmTB*w5Ws-+@I5}gXgd3@--$F93s^-mUg7~)lFQ)y>|z=axj!pmAd--<40``!kG?#e90d>$o+3ciEX;(^ zA`-0~X1;9l?th*g1%hZ=Rq)OuS05)usS5PLHZ6BKkKv4D@N7(|CKqr;W{!LR`4BYR sBN8;+`_G4<;U1CT!TzH#zQZ5*Klr9ygzpdbO8@`>07*qoM6N<$f)!%5fdBvi diff --git a/java/com/android/contacts/common/res/drawable-xhdpi/list_activated_holo.9.png b/java/com/android/contacts/common/res/drawable-xhdpi/list_activated_holo.9.png deleted file mode 100644 index eda10e6123e1e1383c4617228ec0c96680d60dc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamSQK*5Dp-y;YjHK@;M7UB8wRq zxI00Z(fs7;wLn1!PZ!4!jfu$#Gb-B{xqtMx1s*(O%+nLV7IxRdaaX6Iu&3070|zpW ye6d-ZyJWwc+pgOl@x443T>9p%`1p8cx&%YrImy|zOvgZGF?hQAxvX!iTv{fJd zEhMzySFz|po$%_+!(9_s>(&;xx>lU4^}fg(pK&+9s4Yi*fPYVr(d+ZsMpuLvFM&vaREXrx_Tc3$e~Whnu8n!ic6h5% UJ||0F9MEA5p00i_>zopr00X5`z5oCK diff --git a/java/com/android/contacts/common/res/drawable-xhdpi/list_longpressed_holo_light.9.png b/java/com/android/contacts/common/res/drawable-xhdpi/list_longpressed_holo_light.9.png deleted file mode 100644 index 5532e88c2c65f7fc9f37bf5a90c5868864b47c9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamSQK*5Dp-y;YjHK@;M7UB8wRq zxI00Z(fs7;wLn1^PZ!4!jfu%0zJE_Y!1Ql%qR4~y@6R9LNd1v?xtBZV&W=K1VNIzC z2M=T%`CxN4cgcP?w_UeA;(K{6xb)3i@iD2szMhRiY@WpK7>BTvK=T+pUHx3vIVCg! E0Ltw((f|Me diff --git a/java/com/android/contacts/common/res/drawable-xhdpi/list_pressed_holo_light.9.png b/java/com/android/contacts/common/res/drawable-xhdpi/list_pressed_holo_light.9.png deleted file mode 100644 index f4af9265719d65e1c500c2a9de627aff162a18cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamSQK*5Dp-y;YjHK@;M7UB8wRq zxI00Z(fs7;wLn2vPZ!4!jfu%KEQ{5c#XiXME^e4`Bzf#c$z!IMFJGq5@VMB( z!{(;k_B=CB`LC(brMqswvQiq|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfT~1a`Mnxt`-6o(=yr+v}h{y4_*Dd)DCfai{+rQaAPrJ?FcUP>_DER7Kpj8Z>u6{1-oD!MGUDJ8d z!4Be8L2na0coKH;A}Hu-H^&BoC?33s2s?U``O>x9kgr59x5Z#$EDUa82|37jV({mr+&*J4YN*B?jRYncPfkZ;HN|4MLN(JVjqBUn%V2mIR zmi0mr6|+}F)iP+s*P%Vb#%O|w4STkt&Ok(#U`03M)W(~46sc=*>Sj0#vUUnq^|5&e zPR>sh)cF}Ts!_v3WXuz>0Rtk1^o*M6ie8***%dMGZ!;9xQb99uYAdK>HbW+%Wr*F=yI0L$_m;DaC{u&j`XNNG-zL0S-GHY9g!?1fDwI2mw} zh@1j4%cen;3xQ}NfhCTM@R4u_n=xIam@4e})v@0;HoPxZOgT_NmQ%2-TBieYRSQ{e z)w0RdWSGnU;PPrBi~y37j0=$veq`C?878$uK8T zZLIb`HDhovjNcr)nx(UaJJ4shTOSMC!vjq`F%BM$v&(;e-RS?6dpp&E?Hg;) b)_(L%6Qk7i#!$+e^520>dO~`YoL=|~Yl>j3 diff --git a/java/com/android/contacts/common/res/drawable-xxhdpi/list_focused_holo.9.png b/java/com/android/contacts/common/res/drawable-xxhdpi/list_focused_holo.9.png deleted file mode 100644 index 3e4ca684e950e83576cce90e907d8d6c42a1ede4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1147 zcmbVMO=#3W6pob^yHH!DLM@6Ry(qYwne1N@y6tY0josp|b-U>5Mbl(<8{7OenRd55 zSr4KIMK9t(p%+mUl;TlPP(=KtJ$Mlhil7LJAoQXLPPV&Mu=HRcGjC?z_r0HaZ_WquzK z7@T#{$ZW2l&5mn=&h+=uy;YGAmHDtJ7>tTO~fy)*|PU;)QME(qgdm=gh@>mNg`xq3;=%SzoAStXb;j2)3> zE0s#95)RpJnT3KN_#7M;BpN|)#=>efXn8#i1{rypYdF}jE!t;PN9`$`V2GzHA(&1! zyGm?%^+b`Bu~pS!VF<9M>Bm*m_HZ8kabrzwuQ1~vHjg}e%GJnylzJLqlDqW{`HI9F z@qlZPOHn6eTbnYGg)?%3Atxc-&_$5q0fg}gh;tyuL&&FMaylX_AkFg%3@Z(ewXjeK z0}05I#K{7LX~07u2{OmaF&@ZVL}*|$mWNeKLk+tIv0KLutcw*T7pd5G3${JcsDR-y z8{6KP?a`Dfi;1lcisNcy^)dQtBF`u1w${d`<{={g=qP+$xI9ri_|<;%@%6=+k62T;M$@2NzW=?w g99tI7O>bzSE`B<4XW_)op#L0X(mDC|!0}VR0Sx(Q1^@s6 diff --git a/java/com/android/contacts/common/res/drawable-xxhdpi/list_longpressed_holo_light.9.png b/java/com/android/contacts/common/res/drawable-xxhdpi/list_longpressed_holo_light.9.png deleted file mode 100644 index 230d649bf730871f6f538cd7cf957d0aa894f899..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1051 zcmbVL&ui0A9FL3*8Jl|0!vyh>T@-BcUYevySe$Lsx`LghD_A@&P2SqLB`+p#HX8`y zK^!Q0(1R#=@Svdh4|q^;7yknlFa8B02=k^dZ8Js24u&M}z3=;eKHuM4jm7iRlgB4H zj+?G6SWUJbO}~Q^?00nUv?JjO&+ugYO0nc&VSkG&< zX}f;GaELG1sg98NAwzTA+p#{3WFh>tPx9yoJpOFKsTi zoXu57clr6VU@kEjfsd&T5`Qg-jl|>!yawB+Vvz>}6}oEjL#NvH1}KvV14YQ^9EcE5 zRRPJ0s-iPMf=Ch}d(|A04MjDi0vJ6!vlh84M$@W}Y_XHc_b3ewQSA5oLO(B%s4F5} z*HaEj$}x>xyb(}4$p!Ij#$e&tiM)_{BmgO+-68ALQKDGN#KaCo zBtX&k)3^rOF>T^MZtSTYw>Cm7HgQbWBZt*vWi|t|-0g2DRb<{67bA}q#a^?Bv+m=7 z)-01}H-hWA21FXmVnK!l391@GS{cb!p(ItSdPR|BE#ue=TZBpx$`ynZ$wH`-*Gp2V zsK}OlwBd#MBNPoZ0o5-4Pbc}WGQ>bBzr zso->4pkcfgj=XEwtwzKLgA5zq9v;BLKaoQ%U(V}!3CXG|L4_Y--T%p&$ea<=_V}w^ zG7;;+bi3R9?65mNIAAjqvEg|2aI| ObX;qdMeB8G`Q~rOt3*x! diff --git a/java/com/android/contacts/common/res/drawable-xxhdpi/list_pressed_holo_light.9.png b/java/com/android/contacts/common/res/drawable-xxhdpi/list_pressed_holo_light.9.png deleted file mode 100644 index 1352a1702a7bd044d5e9eb2424f2501b3360abe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1051 zcmbVLzi-n(6gH};P(^_Oh9V(Oj)XuWw$FAP+o~zC9k-E4iPA_!EUjZ-8`Iin>??6Q zp$>=&D!MQrP!|T6SP^1iXcztkHa0f?1K^y-g`w(zW&3`;?|bik_uh7Ees*%=@&v;$ zlZ`pMO~;G*cV?Xacebxg(qW3!yJP_`lYyHcrsm@w0*%mJL2cyv8xOytX@(i=2c0hI zHt*;j4mmfs;j%EMXoi`d$zs=AMFjNFN)Q?B&(B|25cmdruhJBnv4#4<+-8CnHs?Fu z=BlUp?944No#~VyM8pMIxE7^)X0StEozC-Zo&`e_vTCr0L3NugVBrLT3MZ940YacC z9F!}H0&fCQfFdu@S1ChTuPC}$1*32}LF2GdJcT zC-7mI=QXrWNgMqQ<5=sovk@b{jZ(axc=SG&O9hx}ce110kVd25O#*r;?wXCg^$RgomqQ5~q(9SG}^saQ2r zu2)UfavVpk6xc?T5;yWt;WwauN7(v_SlvpHOK{S`c&(^_Rv#0b_HhiX1qEDhx?T|F z8#nR`I?UHbN$?2yPJ%-)R9Fv=i9k`RHOZ6}OBiJ?sFLbvR1jINX_mx}u>Sw3#?xT< zygdFXmtu?7U_L!6e!4hn9~9A^NoaFCTl_Rj8>`WBO_I_P`t+vjW zIOBP1Y-j2{^Z1;)e{dTK55T3f2QOu3KUSxn@^4=}`7XfSQ}=tn-;IyII(=b@k+(|e S$9VBa-mZ=My#2vk+WG^{9zwkU diff --git a/java/com/android/contacts/common/res/drawable/ic_search_add_contact.xml b/java/com/android/contacts/common/res/drawable/ic_search_add_contact.xml deleted file mode 100644 index 476212d24f..0000000000 --- a/java/com/android/contacts/common/res/drawable/ic_search_add_contact.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - diff --git a/java/com/android/contacts/common/res/drawable/list_selector_background_transition_holo_light.xml b/java/com/android/contacts/common/res/drawable/list_selector_background_transition_holo_light.xml deleted file mode 100644 index 35fff99c27..0000000000 --- a/java/com/android/contacts/common/res/drawable/list_selector_background_transition_holo_light.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/java/com/android/contacts/common/res/layout/dialog_call_subject.xml b/java/com/android/contacts/common/res/layout/dialog_call_subject.xml index a33b2ac857..df8e8d2990 100644 --- a/java/com/android/contacts/common/res/layout/dialog_call_subject.xml +++ b/java/com/android/contacts/common/res/layout/dialog_call_subject.xml @@ -129,7 +129,7 @@ android:layout_height="25dp" android:layout_alignParentStart="true" android:layout_centerVertical="true" - android:src="@drawable/quantum_ic_history_white_24" + android:src="@drawable/quantum_ic_history_vd_theme_24" android:tint="@color/call_subject_history_icon"/> diff --git a/java/com/android/contacts/common/res/values-af/strings.xml b/java/com/android/contacts/common/res/values-af/strings.xml index 52e612da9e..48e4158f01 100644 --- a/java/com/android/contacts/common/res/values-af/strings.xml +++ b/java/com/android/contacts/common/res/values-af/strings.xml @@ -248,7 +248,7 @@ "Tik \'n nota om saam met oproep te stuur …" "STUUR EN BEL" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s-oortjie" %1$s-oortjie %2$d ongelese items. diff --git a/java/com/android/contacts/common/res/values-am/strings.xml b/java/com/android/contacts/common/res/values-am/strings.xml index 0283fbb0ad..4121474f07 100644 --- a/java/com/android/contacts/common/res/values-am/strings.xml +++ b/java/com/android/contacts/common/res/values-am/strings.xml @@ -248,7 +248,7 @@ "ከጥሪ ጋር ለመላክ የማስታወሻ ጽሑፍ ይተይቡ ..." "ላክ እና ደውል" "%1$s / %2$s" - "%1$s%2$s" + "%1$s%2$s" "የ%1$s ትር።" %1$s ትር። %2$d ያልተነበቡ ንጥሎች። diff --git a/java/com/android/contacts/common/res/values-ar/strings.xml b/java/com/android/contacts/common/res/values-ar/strings.xml index a3862fe09e..98fb057d4c 100644 --- a/java/com/android/contacts/common/res/values-ar/strings.xml +++ b/java/com/android/contacts/common/res/values-ar/strings.xml @@ -252,7 +252,7 @@ "اكتب ملاحظة لإرسالها مع المكالمة ..." "إرسال واتصال" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "علامة تبويب %1$s." %1$s علامة تبويب. %2$d عناصر غير مقروءة. diff --git a/java/com/android/contacts/common/res/values-az/strings.xml b/java/com/android/contacts/common/res/values-az/strings.xml index 9433771272..813ada7f73 100644 --- a/java/com/android/contacts/common/res/values-az/strings.xml +++ b/java/com/android/contacts/common/res/values-az/strings.xml @@ -248,7 +248,7 @@ "Zəng ilə göndərmək üçün qeyd yazın..." "GÖNDƏRİN VƏ ZƏNG EDİN" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s tabel." %1$s tabel. %2$d oxunmamış element. diff --git a/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml b/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml index fc99567f10..3eccfc6541 100644 --- a/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml @@ -249,7 +249,7 @@ "Unesite belešku koju ćete poslati uz poziv..." "POŠALJI I POZOVI" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Kartica %1$s." Kartica %1$s. %2$d nepročitana stavka. diff --git a/java/com/android/contacts/common/res/values-be/strings.xml b/java/com/android/contacts/common/res/values-be/strings.xml index a9652a1c10..99922a874f 100644 --- a/java/com/android/contacts/common/res/values-be/strings.xml +++ b/java/com/android/contacts/common/res/values-be/strings.xml @@ -250,7 +250,7 @@ "Увесці нататку для адпраўкі з выклікам…" "АДПРАВІЦЬ І ВЫКЛІКАЦЬ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Укладка %1$s." Укладка %1$s. %2$d непрачытаны элемент. diff --git a/java/com/android/contacts/common/res/values-bg/strings.xml b/java/com/android/contacts/common/res/values-bg/strings.xml index 0b57eb6a5a..c2ebd2736c 100644 --- a/java/com/android/contacts/common/res/values-bg/strings.xml +++ b/java/com/android/contacts/common/res/values-bg/strings.xml @@ -248,7 +248,7 @@ "Напишете придружаваща бележка, която ще се изпрати при извършване на обаждането..." "ИЗПРАЩАНЕ И ОБАЖДАНЕ" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Раздел „%1$s“." Раздел „%1$s“. %2$d непрочетени елемента. diff --git a/java/com/android/contacts/common/res/values-bn/strings.xml b/java/com/android/contacts/common/res/values-bn/strings.xml index 8e783d129e..47e9b020e1 100644 --- a/java/com/android/contacts/common/res/values-bn/strings.xml +++ b/java/com/android/contacts/common/res/values-bn/strings.xml @@ -248,7 +248,7 @@ "কলের সাথে পাঠানোর জন্য একটি নোট লিখুন ..." "পাঠান এবং কল করুন" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ট্যাব৷" %1$s ট্যাব৷ %2$dটি অপঠিত আইটেম৷ diff --git a/java/com/android/contacts/common/res/values-bs/strings.xml b/java/com/android/contacts/common/res/values-bs/strings.xml index 278f6a8d06..305a7468a8 100644 --- a/java/com/android/contacts/common/res/values-bs/strings.xml +++ b/java/com/android/contacts/common/res/values-bs/strings.xml @@ -249,7 +249,7 @@ "Upišite bilješku koja će se poslati uz poziv ..." "POŠALJI I POZOVI" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Kartica %1$s." Kartica %1$s. %2$d nepročitana stavka. diff --git a/java/com/android/contacts/common/res/values-ca/strings.xml b/java/com/android/contacts/common/res/values-ca/strings.xml index ad31a01b6e..8e80686951 100644 --- a/java/com/android/contacts/common/res/values-ca/strings.xml +++ b/java/com/android/contacts/common/res/values-ca/strings.xml @@ -248,7 +248,7 @@ "Escriu una nota per enviar-la juntament amb la trucada..." "ENVIA I TRUCA" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Pestanya %1$s" Pestanya %1$s: %2$d elements no llegits diff --git a/java/com/android/contacts/common/res/values-cs/strings.xml b/java/com/android/contacts/common/res/values-cs/strings.xml index ab54be93aa..7aea200b16 100644 --- a/java/com/android/contacts/common/res/values-cs/strings.xml +++ b/java/com/android/contacts/common/res/values-cs/strings.xml @@ -250,7 +250,7 @@ "Zadejte poznámku, která se odešle pomocí volání…" "ODESLAT A ZAVOLAT" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Karta %1$s." Karta %1$s. %2$d nepřečtené položky. diff --git a/java/com/android/contacts/common/res/values-da/strings.xml b/java/com/android/contacts/common/res/values-da/strings.xml index 965d04a732..430895a712 100644 --- a/java/com/android/contacts/common/res/values-da/strings.xml +++ b/java/com/android/contacts/common/res/values-da/strings.xml @@ -248,7 +248,7 @@ "Indtast en note, som skal sendes ved opkald..." "SEND OG RING" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Fanen %1$s." Fanen %1$s. %2$d ulæst element. diff --git a/java/com/android/contacts/common/res/values-de/strings.xml b/java/com/android/contacts/common/res/values-de/strings.xml index 60c5e6806e..a46f278c15 100644 --- a/java/com/android/contacts/common/res/values-de/strings.xml +++ b/java/com/android/contacts/common/res/values-de/strings.xml @@ -248,7 +248,7 @@ "Notiz eingeben, die beim Anrufen gesendet wird..." "SENDEN UND ANRUFEN" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Tab \"%1$s\"." Tab \"%1$s\". %2$d ungelesene Elemente. diff --git a/java/com/android/contacts/common/res/values-el/strings.xml b/java/com/android/contacts/common/res/values-el/strings.xml index 9af3bc55af..567b8fb523 100644 --- a/java/com/android/contacts/common/res/values-el/strings.xml +++ b/java/com/android/contacts/common/res/values-el/strings.xml @@ -248,7 +248,7 @@ "Πληκτρολογήστε μια σημείωση για αποστολή με την κλήση…" "ΑΠΟΣΤΟΛΗ ΚΑΙ ΚΛΗΣΗ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Καρτέλα %1$s." Καρτέλα %1$s. %2$d μη αναγνωσμένα στοιχεία. diff --git a/java/com/android/contacts/common/res/values-en-rAU/strings.xml b/java/com/android/contacts/common/res/values-en-rAU/strings.xml index 996c6ee187..660993d2e6 100644 --- a/java/com/android/contacts/common/res/values-en-rAU/strings.xml +++ b/java/com/android/contacts/common/res/values-en-rAU/strings.xml @@ -248,7 +248,7 @@ "Type a note to send with call ..." "SEND & CALL" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s tab." %1$s tab. %2$d unread items. diff --git a/java/com/android/contacts/common/res/values-en-rGB/strings.xml b/java/com/android/contacts/common/res/values-en-rGB/strings.xml index 996c6ee187..660993d2e6 100644 --- a/java/com/android/contacts/common/res/values-en-rGB/strings.xml +++ b/java/com/android/contacts/common/res/values-en-rGB/strings.xml @@ -248,7 +248,7 @@ "Type a note to send with call ..." "SEND & CALL" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s tab." %1$s tab. %2$d unread items. diff --git a/java/com/android/contacts/common/res/values-en-rIN/strings.xml b/java/com/android/contacts/common/res/values-en-rIN/strings.xml index 996c6ee187..660993d2e6 100644 --- a/java/com/android/contacts/common/res/values-en-rIN/strings.xml +++ b/java/com/android/contacts/common/res/values-en-rIN/strings.xml @@ -248,7 +248,7 @@ "Type a note to send with call ..." "SEND & CALL" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s tab." %1$s tab. %2$d unread items. diff --git a/java/com/android/contacts/common/res/values-es-rUS/strings.xml b/java/com/android/contacts/common/res/values-es-rUS/strings.xml index acb563cab4..1c0339a6a4 100644 --- a/java/com/android/contacts/common/res/values-es-rUS/strings.xml +++ b/java/com/android/contacts/common/res/values-es-rUS/strings.xml @@ -248,7 +248,7 @@ "Escribe una nota para enviar con la llamada…" "ENVIAR Y LLAMAR" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Pestaña %1$s." Pestaña %1$s. %2$d elementos no leídos. diff --git a/java/com/android/contacts/common/res/values-es/strings.xml b/java/com/android/contacts/common/res/values-es/strings.xml index def7a447c2..b0956ec6a3 100644 --- a/java/com/android/contacts/common/res/values-es/strings.xml +++ b/java/com/android/contacts/common/res/values-es/strings.xml @@ -248,7 +248,7 @@ "Escribe una nota para enviarla con la llamada..." "ENVIAR Y LLAMAR" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Pestaña %1$s." Pestaña %1$s. %2$d elementos no leídos. diff --git a/java/com/android/contacts/common/res/values-et/strings.xml b/java/com/android/contacts/common/res/values-et/strings.xml index c80d542148..e152f595ae 100644 --- a/java/com/android/contacts/common/res/values-et/strings.xml +++ b/java/com/android/contacts/common/res/values-et/strings.xml @@ -248,7 +248,7 @@ "Sisestage märkus, mis koos kõnega saata ..." "SAADA JA HELISTA" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Vahekaart %1$s." Vahekaart %1$s. %2$d lugemata üksust. diff --git a/java/com/android/contacts/common/res/values-eu/strings.xml b/java/com/android/contacts/common/res/values-eu/strings.xml index 868d668b56..967b635409 100644 --- a/java/com/android/contacts/common/res/values-eu/strings.xml +++ b/java/com/android/contacts/common/res/values-eu/strings.xml @@ -248,7 +248,7 @@ "Idatzi deiarekin batera bidali beharreko oharra…" "BIDALI ETA DEITU" "%1$s/%2$s" - "%1$s%2$s" + "%1$s: %2$s" "%1$s fitxa." %1$s fitxa. Irakurri gabeko %2$d elementu. diff --git a/java/com/android/contacts/common/res/values-fa/strings.xml b/java/com/android/contacts/common/res/values-fa/strings.xml index dda10647c6..3650e46710 100644 --- a/java/com/android/contacts/common/res/values-fa/strings.xml +++ b/java/com/android/contacts/common/res/values-fa/strings.xml @@ -248,7 +248,7 @@ "یادداشتی بنویسید که همراه تماس ارسال شود…" "ارسال و تماس" "%1$s / ‏%2$s" - "%1$s%2$s" + "%1$s %2$s" "برگه «%1$s»." برگه «%1$s». %2$d مورد خوانده‌نشده. diff --git a/java/com/android/contacts/common/res/values-fi/strings.xml b/java/com/android/contacts/common/res/values-fi/strings.xml index b8065b2bfb..b7739dee81 100644 --- a/java/com/android/contacts/common/res/values-fi/strings.xml +++ b/java/com/android/contacts/common/res/values-fi/strings.xml @@ -248,7 +248,7 @@ "Kirjoita muistiinpano lähetettäväksi puhelun kanssa…" "LÄHETÄ JA SOITA" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s-välilehti." %1$s-välilehti. %2$d lukematonta kohdetta. diff --git a/java/com/android/contacts/common/res/values-fr-rCA/strings.xml b/java/com/android/contacts/common/res/values-fr-rCA/strings.xml index 82f5492922..c20b8827e0 100644 --- a/java/com/android/contacts/common/res/values-fr-rCA/strings.xml +++ b/java/com/android/contacts/common/res/values-fr-rCA/strings.xml @@ -248,7 +248,7 @@ "Tapez une note à envoyer avec l\'appel..." "ENVOYER ET APPELER" "%1$s/%2$s" - "%1$s%2$s" + "%1$s : %2$s" "Onglet %1$s." Onglet %1$s. %2$d élément non lu. diff --git a/java/com/android/contacts/common/res/values-fr/strings.xml b/java/com/android/contacts/common/res/values-fr/strings.xml index 474d721dc1..93b52dcf9a 100644 --- a/java/com/android/contacts/common/res/values-fr/strings.xml +++ b/java/com/android/contacts/common/res/values-fr/strings.xml @@ -248,7 +248,7 @@ "Saisissez une note pour accompagner l\'appel..." "ENVOYER ET APPELER" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Onglet %1$s." Onglet %1$s. %2$d élément non lu. diff --git a/java/com/android/contacts/common/res/values-gl/strings.xml b/java/com/android/contacts/common/res/values-gl/strings.xml index 4a3262a2b1..4aa1fc1f74 100644 --- a/java/com/android/contacts/common/res/values-gl/strings.xml +++ b/java/com/android/contacts/common/res/values-gl/strings.xml @@ -248,7 +248,7 @@ "Escribe unha nota para enviala coa chamada…" "ENVIAR E CHAMAR" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Pestana %1$s." Pestana %1$s. %2$d elementos non lidos. diff --git a/java/com/android/contacts/common/res/values-gu/strings.xml b/java/com/android/contacts/common/res/values-gu/strings.xml index 536aceb9c5..8bbfb3a2bb 100644 --- a/java/com/android/contacts/common/res/values-gu/strings.xml +++ b/java/com/android/contacts/common/res/values-gu/strings.xml @@ -248,7 +248,7 @@ "કૉલ સાથે મોકલવા માટે એક નોંધ લખો ..." "મોકલો અને કૉલ કરો" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ટૅબ." %1$s ટૅબ. %2$d વાંચ્યા વગરની આઇટમ. diff --git a/java/com/android/contacts/common/res/values-hi/strings.xml b/java/com/android/contacts/common/res/values-hi/strings.xml index c61e195cbe..c1af9b7ff1 100644 --- a/java/com/android/contacts/common/res/values-hi/strings.xml +++ b/java/com/android/contacts/common/res/values-hi/strings.xml @@ -248,7 +248,7 @@ "कॉल के साथ भेजने के लिए नोट लिखें ..." "भेजें और कॉल करें" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s टैब." %1$s टैब. %2$d नहीं पढ़े गए आइटम. diff --git a/java/com/android/contacts/common/res/values-hr/strings.xml b/java/com/android/contacts/common/res/values-hr/strings.xml index 66986dd38f..a60c884c17 100644 --- a/java/com/android/contacts/common/res/values-hr/strings.xml +++ b/java/com/android/contacts/common/res/values-hr/strings.xml @@ -249,7 +249,7 @@ "Napišite bilješku koju ćete poslati uz poziv..." "POŠALJI I NAZOVI" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Kartica %1$s." Kartica %1$s. %2$d nepročitana stavka. diff --git a/java/com/android/contacts/common/res/values-hu/strings.xml b/java/com/android/contacts/common/res/values-hu/strings.xml index 22bf5094ca..19fbbe8447 100644 --- a/java/com/android/contacts/common/res/values-hu/strings.xml +++ b/java/com/android/contacts/common/res/values-hu/strings.xml @@ -248,7 +248,7 @@ "Írjon üzenetet, amelyet elküldhetünk a hívással együtt…" "KÜLDÉS ÉS HÍVÁS" "%2$s/%1$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s lap." %1$s lap. %2$d olvasatlan elem. diff --git a/java/com/android/contacts/common/res/values-hy/strings.xml b/java/com/android/contacts/common/res/values-hy/strings.xml index 85c902347d..b3ed5e5316 100644 --- a/java/com/android/contacts/common/res/values-hy/strings.xml +++ b/java/com/android/contacts/common/res/values-hy/strings.xml @@ -248,7 +248,7 @@ "Մուտքագրեք նշում՝ զանգի հետ ուղարկելու համար ..." "ՈՒՂԱՐԿԵԼ ԵՎ ԶԱՆԳԵԼ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ներդիր:" %1$s tab. %2$d unread items. diff --git a/java/com/android/contacts/common/res/values-in/strings.xml b/java/com/android/contacts/common/res/values-in/strings.xml index d7ee8bfb98..13252a5b07 100644 --- a/java/com/android/contacts/common/res/values-in/strings.xml +++ b/java/com/android/contacts/common/res/values-in/strings.xml @@ -248,7 +248,7 @@ "Ketik catatan untuk dikirim dengan panggilan telepon ..." "KIRIM & TELEPON" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Tab %1$s." Tab %1$s. %2$d item belum dibaca. diff --git a/java/com/android/contacts/common/res/values-is/strings.xml b/java/com/android/contacts/common/res/values-is/strings.xml index 26c1aefd1d..569c10f3e5 100644 --- a/java/com/android/contacts/common/res/values-is/strings.xml +++ b/java/com/android/contacts/common/res/values-is/strings.xml @@ -248,7 +248,7 @@ "Sláðu inn texta til að senda með símtalinu..." "SENDA OG HRINGJA" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Flipinn %1$s." Flipinn %1$s. %2$d ólesið atriði. diff --git a/java/com/android/contacts/common/res/values-it/strings.xml b/java/com/android/contacts/common/res/values-it/strings.xml index 8ea5648549..342cd61df4 100644 --- a/java/com/android/contacts/common/res/values-it/strings.xml +++ b/java/com/android/contacts/common/res/values-it/strings.xml @@ -248,7 +248,7 @@ "Digita una nota da inviare con la chiamata..." "INVIA E CHIAMA" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Scheda %1$s." Scheda %1$s. %2$d elementi da leggere. diff --git a/java/com/android/contacts/common/res/values-iw/strings.xml b/java/com/android/contacts/common/res/values-iw/strings.xml index 2a6b2c1898..e0d8e5dfb0 100644 --- a/java/com/android/contacts/common/res/values-iw/strings.xml +++ b/java/com/android/contacts/common/res/values-iw/strings.xml @@ -250,7 +250,7 @@ "הקלד הערה לשליחה עם השיחה..." "שלח והתקשר" "%1$s / %2$s" - "%1$s%2$s" + "‎%1$s %2$s‎" "הכרטיסייה %1$s." הכרטיסייה %1$s. %2$d פריטים שלא נקראו. diff --git a/java/com/android/contacts/common/res/values-ja/strings.xml b/java/com/android/contacts/common/res/values-ja/strings.xml index 3271b46bbe..e224a38a22 100644 --- a/java/com/android/contacts/common/res/values-ja/strings.xml +++ b/java/com/android/contacts/common/res/values-ja/strings.xml @@ -248,7 +248,7 @@ "発信時に送信するメモを入力..." "送信 / 通話" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s タブ。" %1$s タブ。%2$d 件の未読項目。 diff --git a/java/com/android/contacts/common/res/values-ka/strings.xml b/java/com/android/contacts/common/res/values-ka/strings.xml index ebbee6e337..86273b32e0 100644 --- a/java/com/android/contacts/common/res/values-ka/strings.xml +++ b/java/com/android/contacts/common/res/values-ka/strings.xml @@ -248,7 +248,7 @@ "აკრიფეთ შენიშვნა ზართან ერთად გასაგზავნად ..." "გაგზავნა და დარეკვა" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ცხრ." %1$s ცხრ. %2$d წაუკითხავი ერთეული. diff --git a/java/com/android/contacts/common/res/values-kk/strings.xml b/java/com/android/contacts/common/res/values-kk/strings.xml index 327532abcd..45df334f94 100644 --- a/java/com/android/contacts/common/res/values-kk/strings.xml +++ b/java/com/android/contacts/common/res/values-kk/strings.xml @@ -248,7 +248,7 @@ "Қоңыраумен жіберу үшін ескертпе теріңіз ..." "ЖІБЕРУ ЖӘНЕ ҚОҢЫРАУ ШАЛУ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s қойындысы." %1$s қойындысы. %2$d оқылмаған элемент. diff --git a/java/com/android/contacts/common/res/values-km/strings.xml b/java/com/android/contacts/common/res/values-km/strings.xml index 5030167922..8d4ba2affa 100644 --- a/java/com/android/contacts/common/res/values-km/strings.xml +++ b/java/com/android/contacts/common/res/values-km/strings.xml @@ -248,7 +248,7 @@ "វាយបញ្ចូលចំណាំដែលត្រូវផ្ញើជាមួយការហៅទូរស័ព្ទ ..." "ផ្ញើ & ហៅ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "ផ្ទាំង %1$s។" ផ្ទាំង %1$s។ ធាតុមិនទាន់​អាន %2$d diff --git a/java/com/android/contacts/common/res/values-kn/strings.xml b/java/com/android/contacts/common/res/values-kn/strings.xml index 446e078a65..0dfdaa6098 100644 --- a/java/com/android/contacts/common/res/values-kn/strings.xml +++ b/java/com/android/contacts/common/res/values-kn/strings.xml @@ -248,7 +248,7 @@ "ಕರೆ ಕಳುಹಿಸಲು ಟಿಪ್ಪಣಿಯನ್ನು ಟೈಪ್ ಮಾಡಿ ..." "ಕಳುಹಿಸು ಮತ್ತು ಕರೆಮಾಡು" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ಟ್ಯಾಬ್." %1$s ಟ್ಯಾಬ್. %2$d ಓದದಿರುವ ಐಟಂಗಳು. diff --git a/java/com/android/contacts/common/res/values-ko/strings.xml b/java/com/android/contacts/common/res/values-ko/strings.xml index 4c2bd4f625..13edcc11ec 100644 --- a/java/com/android/contacts/common/res/values-ko/strings.xml +++ b/java/com/android/contacts/common/res/values-ko/strings.xml @@ -248,7 +248,7 @@ "통화에 함께 전송할 메모를 입력하세요..." "보내기 및 전화 걸기" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s 탭" %1$s 탭. 읽지 않은 항목 %2$d diff --git a/java/com/android/contacts/common/res/values-ky/strings.xml b/java/com/android/contacts/common/res/values-ky/strings.xml index e5bab4550f..43e12e77e0 100644 --- a/java/com/android/contacts/common/res/values-ky/strings.xml +++ b/java/com/android/contacts/common/res/values-ky/strings.xml @@ -248,7 +248,7 @@ "Чалуу менен жөнөтүлө турган кыска жазууну териңиз …" "ЖӨНӨТҮҮ ЖАНА ЧАЛУУ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "\"%1$s\" өтмөгү." \"%1$s\" өтмөгү. %2$d нерсе окула элек. diff --git a/java/com/android/contacts/common/res/values-lo/strings.xml b/java/com/android/contacts/common/res/values-lo/strings.xml index c649539d47..d98ec8b906 100644 --- a/java/com/android/contacts/common/res/values-lo/strings.xml +++ b/java/com/android/contacts/common/res/values-lo/strings.xml @@ -248,7 +248,7 @@ "ພິມ​ບັນ​ທຶກ ເພື່ອ​ສົ່ງ​ກັບ​ການ​ໂທ ..." "ສົ່ງ ແລະ ໂທ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "ແຖບ %1$s." ແຖບ %1$s. %2$d ລາຍການບໍ່ທັນໄດ້ອ່ານ. diff --git a/java/com/android/contacts/common/res/values-lt/strings.xml b/java/com/android/contacts/common/res/values-lt/strings.xml index b74bd99eeb..53773b25a8 100644 --- a/java/com/android/contacts/common/res/values-lt/strings.xml +++ b/java/com/android/contacts/common/res/values-lt/strings.xml @@ -250,7 +250,7 @@ "Įveskite užrašą, kurį galima išsiųsti skambinant..." "SIŲSTI IR SKAMBINTI" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Skirtukas „%1$s“." Skirtukas „%1$s“. %2$d neskaitytas elementas. diff --git a/java/com/android/contacts/common/res/values-lv/strings.xml b/java/com/android/contacts/common/res/values-lv/strings.xml index c09a27f5d8..cc56901768 100644 --- a/java/com/android/contacts/common/res/values-lv/strings.xml +++ b/java/com/android/contacts/common/res/values-lv/strings.xml @@ -249,7 +249,7 @@ "Ierakstiet piezīmi, ko nosūtīt ar zvanu..." "SŪTĪT UN ZVANĪT" "%1$s no %2$s" - "%1$s • %2$s" + "%1$s: %2$s" "Cilne “%1$s”" Cilne “%1$s”. %2$d nelasīti vienumi. diff --git a/java/com/android/contacts/common/res/values-mk/strings.xml b/java/com/android/contacts/common/res/values-mk/strings.xml index da1530f2ac..f6a4af8b14 100644 --- a/java/com/android/contacts/common/res/values-mk/strings.xml +++ b/java/com/android/contacts/common/res/values-mk/strings.xml @@ -248,7 +248,7 @@ "Напишете белешка да се испрати со повикот..." "ИСПРАТИ И ПОВИКАЈ" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Картичка %1$s." Картичка %1$s. %2$d непрочитана ставка. diff --git a/java/com/android/contacts/common/res/values-ml/strings.xml b/java/com/android/contacts/common/res/values-ml/strings.xml index 7e927499af..dfc21ffb98 100644 --- a/java/com/android/contacts/common/res/values-ml/strings.xml +++ b/java/com/android/contacts/common/res/values-ml/strings.xml @@ -248,7 +248,7 @@ "കോളിനൊപ്പം അയയ്ക്കുന്നതിന് ഒരു കുറിപ്പ് ടൈപ്പുചെയ്യുക ..." "അയയ്‌ക്കുകയും വിളിക്കുകയും ചെയ്യുക" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ടാബ്." %1$s ടാബ്. %2$d വായിക്കാത്ത ഇനങ്ങൾ. diff --git a/java/com/android/contacts/common/res/values-mn/strings.xml b/java/com/android/contacts/common/res/values-mn/strings.xml index f0a8c9245b..a5c2afd2c6 100644 --- a/java/com/android/contacts/common/res/values-mn/strings.xml +++ b/java/com/android/contacts/common/res/values-mn/strings.xml @@ -248,7 +248,7 @@ "Дуудлаганд илгээх тэмдэглэл бичнэ үү..." "ИЛГЭЭХ, ДУУДЛАГА" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s таб." %1$s таб. %2$d уншаагүй зүйл. diff --git a/java/com/android/contacts/common/res/values-mr/strings.xml b/java/com/android/contacts/common/res/values-mr/strings.xml index 96504c7bcd..d632bb1be1 100644 --- a/java/com/android/contacts/common/res/values-mr/strings.xml +++ b/java/com/android/contacts/common/res/values-mr/strings.xml @@ -248,7 +248,7 @@ "कॉलसह पाठविण्‍यासाठी एक टीप टाइप करा..." "पाठवा आणि कॉल करा" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s टॅब." %1$s टॅब. %2$d न वाचलेला आयटम. diff --git a/java/com/android/contacts/common/res/values-ms/strings.xml b/java/com/android/contacts/common/res/values-ms/strings.xml index 60d2b7accf..24ff73767b 100644 --- a/java/com/android/contacts/common/res/values-ms/strings.xml +++ b/java/com/android/contacts/common/res/values-ms/strings.xml @@ -248,7 +248,7 @@ "Taip nota untuk dihantar dengan panggilan…" "HANTAR & PANGGIL" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Tab %1$s." Tab %1$s. %2$d item belum dibaca. diff --git a/java/com/android/contacts/common/res/values-my/strings.xml b/java/com/android/contacts/common/res/values-my/strings.xml index d81e8950dc..c0cb020f8e 100644 --- a/java/com/android/contacts/common/res/values-my/strings.xml +++ b/java/com/android/contacts/common/res/values-my/strings.xml @@ -248,7 +248,7 @@ "ခေါ်ဆိုမှုဖြင့် ပေးပို့ရန် မှတ်စုတစ်ခု ရိုက်ပါ ..." "ပေးပို့ပြီး ခေါ်ပါ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s တဘ်။" %1$s တဘ်။ မဖတ်ရသေးသည့် အရာ %2$d ခု။ diff --git a/java/com/android/contacts/common/res/values-nb/strings.xml b/java/com/android/contacts/common/res/values-nb/strings.xml index 7085cb381c..80507fce11 100644 --- a/java/com/android/contacts/common/res/values-nb/strings.xml +++ b/java/com/android/contacts/common/res/values-nb/strings.xml @@ -248,7 +248,7 @@ "Skriv et notat du vil sende med anropet …" "SEND OG RING" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s-fanen." %1$s-fanen. %2$d uleste elementer. diff --git a/java/com/android/contacts/common/res/values-ne/strings.xml b/java/com/android/contacts/common/res/values-ne/strings.xml index 1f54232afb..2459c8aba5 100644 --- a/java/com/android/contacts/common/res/values-ne/strings.xml +++ b/java/com/android/contacts/common/res/values-ne/strings.xml @@ -248,7 +248,7 @@ "यस कलसँग पठाउन एक टिप्पणी टाइप गर्नुहोस्" "पठाउनुहोस् र कल गर्नुहोस्" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ट्याब।" %1$s ट्याब। %2$d नपढिएका वस्तुहरू। diff --git a/java/com/android/contacts/common/res/values-nl/strings.xml b/java/com/android/contacts/common/res/values-nl/strings.xml index 9d41899f18..c92249b615 100644 --- a/java/com/android/contacts/common/res/values-nl/strings.xml +++ b/java/com/android/contacts/common/res/values-nl/strings.xml @@ -248,7 +248,7 @@ "Typ een notitie om te verzenden met de oproep..." "VERZENDEN EN BELLEN" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Tabblad %1$s." Tabblad %1$s. %2$d ongelezen items. diff --git a/java/com/android/contacts/common/res/values-no/strings.xml b/java/com/android/contacts/common/res/values-no/strings.xml index 7085cb381c..80507fce11 100644 --- a/java/com/android/contacts/common/res/values-no/strings.xml +++ b/java/com/android/contacts/common/res/values-no/strings.xml @@ -248,7 +248,7 @@ "Skriv et notat du vil sende med anropet …" "SEND OG RING" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s-fanen." %1$s-fanen. %2$d uleste elementer. diff --git a/java/com/android/contacts/common/res/values-pa/strings.xml b/java/com/android/contacts/common/res/values-pa/strings.xml index c96510cc74..6401993c25 100644 --- a/java/com/android/contacts/common/res/values-pa/strings.xml +++ b/java/com/android/contacts/common/res/values-pa/strings.xml @@ -248,7 +248,7 @@ "ਕਾਲ ਦੇ ਨਾਲ ਭੇਜਣ ਲਈ ਕੋਈ ਨੋਟ ਟਾਈਪ ਕਰੋ ..." "ਭੇਜੋ ਅਤੇ ਕਾਲ ਕਰੋ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ਟੈਬ।" %1$s ਟੈਬ। %2$d ਅਣ-ਪੜ੍ਹੀਆਂ ਆਈਟਮਾਂ। diff --git a/java/com/android/contacts/common/res/values-pl/strings.xml b/java/com/android/contacts/common/res/values-pl/strings.xml index c4e65f556e..c10bb1fd9d 100644 --- a/java/com/android/contacts/common/res/values-pl/strings.xml +++ b/java/com/android/contacts/common/res/values-pl/strings.xml @@ -250,7 +250,7 @@ "Wpisz notatkę, którą chcesz wysłać razem z połączeniem..." "WYŚLIJ I ZADZWOŃ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Karta %1$s." Karta %1$s. %2$d nieprzeczytane elementy. diff --git a/java/com/android/contacts/common/res/values-pt-rBR/strings.xml b/java/com/android/contacts/common/res/values-pt-rBR/strings.xml index ee2b87c682..95bbb0b5d0 100644 --- a/java/com/android/contacts/common/res/values-pt-rBR/strings.xml +++ b/java/com/android/contacts/common/res/values-pt-rBR/strings.xml @@ -248,7 +248,7 @@ "Escreva uma nota para enviar com a chamada..." "ENVIAR E LIGAR" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Guia \"%1$s\"." Guia \"%1$s\". %2$d item não lido. diff --git a/java/com/android/contacts/common/res/values-pt-rPT/strings.xml b/java/com/android/contacts/common/res/values-pt-rPT/strings.xml index 44bba149d8..c3b50e0bb6 100644 --- a/java/com/android/contacts/common/res/values-pt-rPT/strings.xml +++ b/java/com/android/contacts/common/res/values-pt-rPT/strings.xml @@ -248,7 +248,7 @@ "Escrever uma nota para enviar com a chamada..." "ENVIAR E LIGAR" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Separador %1$s." %1$s tab. %2$d unread items. diff --git a/java/com/android/contacts/common/res/values-pt/strings.xml b/java/com/android/contacts/common/res/values-pt/strings.xml index ee2b87c682..95bbb0b5d0 100644 --- a/java/com/android/contacts/common/res/values-pt/strings.xml +++ b/java/com/android/contacts/common/res/values-pt/strings.xml @@ -248,7 +248,7 @@ "Escreva uma nota para enviar com a chamada..." "ENVIAR E LIGAR" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Guia \"%1$s\"." Guia \"%1$s\". %2$d item não lido. diff --git a/java/com/android/contacts/common/res/values-ro/strings.xml b/java/com/android/contacts/common/res/values-ro/strings.xml index 358e7af933..da0d5da959 100644 --- a/java/com/android/contacts/common/res/values-ro/strings.xml +++ b/java/com/android/contacts/common/res/values-ro/strings.xml @@ -249,7 +249,7 @@ "Introduceți o notă ca să o trimiteți împreună cu apelul..." "TRIMITEȚI ȘI APELAȚI" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Fila %1$s" Fila %1$s. %2$d elemente necitite. diff --git a/java/com/android/contacts/common/res/values-ru/strings.xml b/java/com/android/contacts/common/res/values-ru/strings.xml index 3442f2c60c..f4e1d847b8 100644 --- a/java/com/android/contacts/common/res/values-ru/strings.xml +++ b/java/com/android/contacts/common/res/values-ru/strings.xml @@ -250,7 +250,7 @@ "Введите текст…" "ОТПРАВИТЬ И ПОЗВОНИТЬ" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Вкладка \"%1$s\"." Вкладка %1$s. %2$d непрочитанный элемент. diff --git a/java/com/android/contacts/common/res/values-si/strings.xml b/java/com/android/contacts/common/res/values-si/strings.xml index 72ca32d9c1..fc121f6af4 100644 --- a/java/com/android/contacts/common/res/values-si/strings.xml +++ b/java/com/android/contacts/common/res/values-si/strings.xml @@ -248,7 +248,7 @@ "ඇමතුම සමග යැවීමට සටහනක් ටයිප් කරන්න ..." "යවන්න සහ අමතන්න" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ටැබය." %1$s ටැබය. නොකියවූ අයිතම %2$d. diff --git a/java/com/android/contacts/common/res/values-sk/strings.xml b/java/com/android/contacts/common/res/values-sk/strings.xml index b85f63f1b3..90a4752fd7 100644 --- a/java/com/android/contacts/common/res/values-sk/strings.xml +++ b/java/com/android/contacts/common/res/values-sk/strings.xml @@ -250,7 +250,7 @@ "Napíšte poznámku, ktorá sa odošle s hovorom..." "ODOSLAŤ A VOLAŤ" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Karta %1$s." Karta %1$s. %2$d neprečítané položky. diff --git a/java/com/android/contacts/common/res/values-sl/strings.xml b/java/com/android/contacts/common/res/values-sl/strings.xml index f4c39dea97..ef2e1a3f0b 100644 --- a/java/com/android/contacts/common/res/values-sl/strings.xml +++ b/java/com/android/contacts/common/res/values-sl/strings.xml @@ -250,7 +250,7 @@ "Vnesite zapisek, ki ga želite poslati s klicem ..." "POŠLJI IN KLIČI" "%1$s/%2$s" - "%1$s%2$s" + "%1$s: %2$s" "Zavihek »%1$s«." Zavihek »%1$s«. %2$d neprebran element. diff --git a/java/com/android/contacts/common/res/values-sq/strings.xml b/java/com/android/contacts/common/res/values-sq/strings.xml index 553c46df56..3011492019 100644 --- a/java/com/android/contacts/common/res/values-sq/strings.xml +++ b/java/com/android/contacts/common/res/values-sq/strings.xml @@ -248,7 +248,7 @@ "Shkruaj një shënim për të dërguar një telefonatë..." "DËRGO DHE TELEFONO" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Skeda %1$s." Skeda %1$s. %2$d artikuj të palexuar. diff --git a/java/com/android/contacts/common/res/values-sr/strings.xml b/java/com/android/contacts/common/res/values-sr/strings.xml index 99997e656d..25adf7bc56 100644 --- a/java/com/android/contacts/common/res/values-sr/strings.xml +++ b/java/com/android/contacts/common/res/values-sr/strings.xml @@ -249,7 +249,7 @@ "Унесите белешку коју ћете послати уз позив..." "ПОШАЉИ И ПОЗОВИ" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Картица %1$s." Картица %1$s. %2$d непрочитана ставка. diff --git a/java/com/android/contacts/common/res/values-sv/strings.xml b/java/com/android/contacts/common/res/values-sv/strings.xml index 79e56e5047..ee748a42c9 100644 --- a/java/com/android/contacts/common/res/values-sv/strings.xml +++ b/java/com/android/contacts/common/res/values-sv/strings.xml @@ -248,7 +248,7 @@ "Gör en anteckning som skickas när du ringer …" "SKICKA OCH RING" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "Fliken %1$s." Fliken %1$s. %2$d olästa poster. diff --git a/java/com/android/contacts/common/res/values-sw/strings.xml b/java/com/android/contacts/common/res/values-sw/strings.xml index 4d30271f30..7bd08353fa 100644 --- a/java/com/android/contacts/common/res/values-sw/strings.xml +++ b/java/com/android/contacts/common/res/values-sw/strings.xml @@ -248,7 +248,7 @@ "Andika dokezo litakaloambatana na simu utakayopiga ..." "TUMA na UPIGE SIMU" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Kichupo cha %1$s." Kichupo cha %1$s. Vipengee %2$d havijasomwa. diff --git a/java/com/android/contacts/common/res/values-ta/strings.xml b/java/com/android/contacts/common/res/values-ta/strings.xml index e041a999dc..d5b3f9305b 100644 --- a/java/com/android/contacts/common/res/values-ta/strings.xml +++ b/java/com/android/contacts/common/res/values-ta/strings.xml @@ -248,7 +248,7 @@ "அழைப்புடன் சேர்த்து அனுப்ப, குறிப்பை உள்ளிடவும்..." "அனுப்பி அழை" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s தாவல்." %1$s தாவல். படிக்காதவை (%2$d). diff --git a/java/com/android/contacts/common/res/values-te/strings.xml b/java/com/android/contacts/common/res/values-te/strings.xml index 6dd0e21433..4126ddc0f6 100644 --- a/java/com/android/contacts/common/res/values-te/strings.xml +++ b/java/com/android/contacts/common/res/values-te/strings.xml @@ -248,7 +248,7 @@ "కాల్‌తో పాటు పంపడానికి గమనికను టైప్ చేయండి ..." "పంపు & కాల్ చేయి" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ట్యాబ్." %1$s ట్యాబ్. %2$d చదవని అంశాలు. diff --git a/java/com/android/contacts/common/res/values-th/strings.xml b/java/com/android/contacts/common/res/values-th/strings.xml index b979e74249..2d52f34fb3 100644 --- a/java/com/android/contacts/common/res/values-th/strings.xml +++ b/java/com/android/contacts/common/res/values-th/strings.xml @@ -248,7 +248,7 @@ "พิมพ์โน้ตเพื่อส่งพร้อมการโทร ..." "ส่งและโทร" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "แท็บ %1$s" แท็บ %1$s ยังไม่อ่าน %2$d รายการ diff --git a/java/com/android/contacts/common/res/values-tl/strings.xml b/java/com/android/contacts/common/res/values-tl/strings.xml index 62caef8203..30978db4ec 100644 --- a/java/com/android/contacts/common/res/values-tl/strings.xml +++ b/java/com/android/contacts/common/res/values-tl/strings.xml @@ -248,7 +248,7 @@ "Mag-type ng isang tala na ipadadala kasama ng tawag ..." "IPADALA AT TAWAGAN" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Tab ng %1$s." Tab ng %1$s. %2$d hindi pa nababasang item. diff --git a/java/com/android/contacts/common/res/values-tr/strings.xml b/java/com/android/contacts/common/res/values-tr/strings.xml index ce3c109d21..c18097aac9 100644 --- a/java/com/android/contacts/common/res/values-tr/strings.xml +++ b/java/com/android/contacts/common/res/values-tr/strings.xml @@ -248,7 +248,7 @@ "Çağrıyla göndermek için bir not yazın..." "GÖNDER VE ARA" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s sekmesi." %1$s sekmesi. %2$d okunmamış öğe. diff --git a/java/com/android/contacts/common/res/values-uk/strings.xml b/java/com/android/contacts/common/res/values-uk/strings.xml index f6d1e47310..94d09db121 100644 --- a/java/com/android/contacts/common/res/values-uk/strings.xml +++ b/java/com/android/contacts/common/res/values-uk/strings.xml @@ -250,7 +250,7 @@ "Введіть нотатку, яку хочете надіслати під час дзвінка…" "ЗАТЕЛЕФОНУВАТИ Й НАДІСЛАТИ" "%1$s з %2$s" - "%1$s%2$s" + "%1$s %2$s" "Вкладка \"%1$s\"." Вкладка \"%1$s\". %2$d непрочитаний елемент. diff --git a/java/com/android/contacts/common/res/values-ur/strings.xml b/java/com/android/contacts/common/res/values-ur/strings.xml index b34c78d952..75c761f2dd 100644 --- a/java/com/android/contacts/common/res/values-ur/strings.xml +++ b/java/com/android/contacts/common/res/values-ur/strings.xml @@ -248,7 +248,7 @@ "کال کے ساتھ بھیجنے کیلئے ایک نوٹ ٹائپ کریں…" "بھیجیں اور کال کریں" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ٹیب۔" %1$s ٹیب۔ %2$d بغیر پڑھی ہوئی آئٹمز۔ diff --git a/java/com/android/contacts/common/res/values-uz/strings.xml b/java/com/android/contacts/common/res/values-uz/strings.xml index 44bfd99997..69b07d135f 100644 --- a/java/com/android/contacts/common/res/values-uz/strings.xml +++ b/java/com/android/contacts/common/res/values-uz/strings.xml @@ -248,7 +248,7 @@ "Qo‘ng‘iroqqa qo‘shib yuborish uchun izoh yozing ..." "YUBORISH va QO‘NG‘IROQ QILISH" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ichki oynasi." %1$s ichki oynasi. %2$d ta o‘qilmagan narsa. diff --git a/java/com/android/contacts/common/res/values-vi/strings.xml b/java/com/android/contacts/common/res/values-vi/strings.xml index dadb78a7df..c1675738a7 100644 --- a/java/com/android/contacts/common/res/values-vi/strings.xml +++ b/java/com/android/contacts/common/res/values-vi/strings.xml @@ -248,7 +248,7 @@ "Nhập ghi chú để gửi kèm cuộc gọi..." "GỬI và GỌI" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "Tab %1$s." Tab %1$s. %2$d mục chưa đọc. diff --git a/java/com/android/contacts/common/res/values-zh-rCN/strings.xml b/java/com/android/contacts/common/res/values-zh-rCN/strings.xml index 161638e66e..367b78f1c4 100644 --- a/java/com/android/contacts/common/res/values-zh-rCN/strings.xml +++ b/java/com/android/contacts/common/res/values-zh-rCN/strings.xml @@ -248,7 +248,7 @@ "输入要在拨打电话时发送的备注…" "发送并拨打电话" "%1$s / %2$s" - "%1$s%2$s" + "%1$s%2$s" "%1$s标签。" %1$s标签。%2$d 项未读内容。 diff --git a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml index 9952ab626e..733d9809cd 100644 --- a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml +++ b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml @@ -248,7 +248,7 @@ "撥號時可以書寫和傳送筆記…" "傳送和撥號" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "「%1$s」標籤。" %1$s」標籤 (%2$d 個未讀取項目)。 diff --git a/java/com/android/contacts/common/res/values-zh-rTW/strings.xml b/java/com/android/contacts/common/res/values-zh-rTW/strings.xml index e5ad61fac5..af7843ffd5 100644 --- a/java/com/android/contacts/common/res/values-zh-rTW/strings.xml +++ b/java/com/android/contacts/common/res/values-zh-rTW/strings.xml @@ -248,7 +248,7 @@ "輸入可在撥號時傳送的備註..." "傳送並撥打" "%1$s/%2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s分頁。" %1$s分頁。%2$d 個未讀項目。 diff --git a/java/com/android/contacts/common/res/values-zu/strings.xml b/java/com/android/contacts/common/res/values-zu/strings.xml index adca1399c8..5906ee1751 100644 --- a/java/com/android/contacts/common/res/values-zu/strings.xml +++ b/java/com/android/contacts/common/res/values-zu/strings.xml @@ -248,7 +248,7 @@ "Thayipha inothi ukuthumela nekholi ..." "THUMELA FUTHI YENZA IKHOLI" "%1$s / %2$s" - "%1$s%2$s" + "%1$s %2$s" "%1$s ithebhu." %1$s ithebhu. %2$d izinto ezingafundiwe. diff --git a/java/com/android/contacts/common/res/values/ids.xml b/java/com/android/contacts/common/res/values/ids.xml index 871f5a6362..65969c43f9 100644 --- a/java/com/android/contacts/common/res/values/ids.xml +++ b/java/com/android/contacts/common/res/values/ids.xml @@ -27,4 +27,5 @@ + diff --git a/java/com/android/contacts/common/res/values/strings.xml b/java/com/android/contacts/common/res/values/strings.xml index 9ac9fef28a..371d5b424f 100644 --- a/java/com/android/contacts/common/res/values/strings.xml +++ b/java/com/android/contacts/common/res/values/strings.xml @@ -744,9 +744,9 @@ compared to the character limit. Example: 2 / 64 --> %1$s / %2$s - - %1$s%2$s + + %1$s %2$s %1$s tab. diff --git a/java/com/android/contacts/common/res/values/styles.xml b/java/com/android/contacts/common/res/values/styles.xml index 07d4a02257..bb19afe82c 100644 --- a/java/com/android/contacts/common/res/values/styles.xml +++ b/java/com/android/contacts/common/res/values/styles.xml @@ -43,7 +43,6 @@ background and text color. See also android:style/Widget.Holo.TextView.ListSepar wrap_content @dimen/list_section_divider_min_height - @drawable/list_section_divider_holo_custom @style/DirectoryHeaderStyle center_vertical 8dip diff --git a/java/com/android/contacts/common/util/AccountFilterUtil.java b/java/com/android/contacts/common/util/AccountFilterUtil.java index 18743c65ea..25f937c5e9 100644 --- a/java/com/android/contacts/common/util/AccountFilterUtil.java +++ b/java/com/android/contacts/common/util/AccountFilterUtil.java @@ -16,35 +16,15 @@ package com.android.contacts.common.util; -import android.app.Activity; import android.content.Context; -import android.content.Intent; -import android.util.Log; import android.view.View; import android.widget.TextView; import com.android.contacts.common.R; import com.android.contacts.common.list.ContactListFilter; -import com.android.contacts.common.list.ContactListFilterController; /** Utility class for account filter manipulation. */ public class AccountFilterUtil { - public static final String EXTRA_CONTACT_LIST_FILTER = "contactListFilter"; - private static final String TAG = AccountFilterUtil.class.getSimpleName(); - - /** - * Find TextView with the id "account_filter_header" and set correct text for the account filter - * header. - * - * @param filterContainer View containing TextView with id "account_filter_header" - * @return true when header text is set in the call. You may use this for conditionally showing or - * hiding this entire view. - */ - public static boolean updateAccountFilterTitleForPeople( - View filterContainer, ContactListFilter filter, boolean showTitleForAllAccounts) { - return updateAccountFilterTitle(filterContainer, filter, showTitleForAllAccounts, false); - } - /** * Similar to {@link #updateAccountFilterTitleForPeople(View, ContactListFilter, boolean, * boolean)}, but for Phone UI. @@ -78,8 +58,6 @@ public class AccountFilterUtil { } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) { headerTextView.setText(R.string.listCustomView); textWasSet = true; - } else { - Log.w(TAG, "Filter type \"" + filter.filterType + "\" isn't expected."); } } else { if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) { @@ -97,29 +75,9 @@ public class AccountFilterUtil { } else if (filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) { headerTextView.setText(R.string.listSingleContact); textWasSet = true; - } else { - Log.w(TAG, "Filter type \"" + filter.filterType + "\" isn't expected."); } } - } else { - Log.w(TAG, "Filter is null."); } return textWasSet; } - - /** This will update filter via a given ContactListFilterController. */ - public static void handleAccountFilterResult( - ContactListFilterController filterController, int resultCode, Intent data) { - if (resultCode == Activity.RESULT_OK) { - final ContactListFilter filter = data.getParcelableExtra(EXTRA_CONTACT_LIST_FILTER); - if (filter == null) { - return; - } - if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) { - filterController.selectCustomFilter(); - } else { - filterController.setContactListFilter(filter, true); - } - } - } } diff --git a/java/com/android/contacts/common/util/BitmapUtil.java b/java/com/android/contacts/common/util/BitmapUtil.java index 20f916a3fb..51f65f2807 100644 --- a/java/com/android/contacts/common/util/BitmapUtil.java +++ b/java/com/android/contacts/common/util/BitmapUtil.java @@ -24,8 +24,6 @@ import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; /** Provides static functions to decode bitmaps at the optimal size */ public class BitmapUtil { @@ -90,30 +88,6 @@ public class BitmapUtil { return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options); } - /** - * Retrieves a copy of the specified drawable resource, rotated by a specified angle. - * - * @param resources The current resources. - * @param resourceId The resource ID of the drawable to rotate. - * @param angle The angle of rotation. - * @return Rotated drawable. - */ - public static Drawable getRotatedDrawable( - android.content.res.Resources resources, int resourceId, float angle) { - - // Get the original drawable and make a copy which will be rotated. - Bitmap original = BitmapFactory.decodeResource(resources, resourceId); - Bitmap rotated = - Bitmap.createBitmap(original.getWidth(), original.getHeight(), Bitmap.Config.ARGB_8888); - - // Perform the rotation. - Canvas tempCanvas = new Canvas(rotated); - tempCanvas.rotate(angle, original.getWidth() / 2, original.getHeight() / 2); - tempCanvas.drawBitmap(original, 0, 0, null); - - return new BitmapDrawable(resources, rotated); - } - /** * Given an input bitmap, scales it to the given width/height and makes it round. * diff --git a/java/com/android/contacts/common/util/ContactDisplayUtils.java b/java/com/android/contacts/common/util/ContactDisplayUtils.java index 1586784db9..ff22f2880a 100644 --- a/java/com/android/contacts/common/util/ContactDisplayUtils.java +++ b/java/com/android/contacts/common/util/ContactDisplayUtils.java @@ -16,21 +16,20 @@ package com.android.contacts.common.util; -import static android.provider.ContactsContract.CommonDataKinds.Phone; - import android.content.Context; import android.content.res.Resources; +import android.provider.ContactsContract.CommonDataKinds.Phone; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; import android.text.style.TtsSpan; -import android.util.Log; import android.util.Patterns; import com.android.contacts.common.R; import com.android.contacts.common.compat.PhoneNumberUtilsCompat; import com.android.contacts.common.preference.ContactsPreferences; +import com.android.dialer.common.LogUtil; import java.util.Objects; /** Methods for handling various contact data labels. */ @@ -38,7 +37,6 @@ public class ContactDisplayUtils { public static final int INTERACTION_CALL = 1; public static final int INTERACTION_SMS = 2; - private static final String TAG = ContactDisplayUtils.class.getSimpleName(); /** * Checks if the given data type is a custom type. @@ -74,9 +72,9 @@ public class ContactDisplayUtils { } else { resId = getPhoneLabelResourceId(type); if (interactionType != INTERACTION_CALL) { - Log.e( - TAG, - "Un-recognized interaction type: " + LogUtil.e( + "ContactDisplayUtils.getLabelForCallOrSms", + "un-recognized interaction type: " + interactionType + ". Defaulting to ContactDisplayUtils.INTERACTION_CALL."); } diff --git a/java/com/android/contacts/common/util/DateUtils.java b/java/com/android/contacts/common/util/DateUtils.java index 1935d727a2..09d52bce8c 100644 --- a/java/com/android/contacts/common/util/DateUtils.java +++ b/java/com/android/contacts/common/util/DateUtils.java @@ -16,252 +16,11 @@ package com.android.contacts.common.util; -import android.content.Context; -import android.text.format.DateFormat; import android.text.format.Time; -import java.text.ParsePosition; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.Locale; -import java.util.TimeZone; /** Utility methods for processing dates. */ public class DateUtils { - public static final TimeZone UTC_TIMEZONE = TimeZone.getTimeZone("UTC"); - - /** - * When parsing a date without a year, the system assumes 1970, which wasn't a leap-year. Let's - * add a one-off hack for that day of the year - */ - public static final String NO_YEAR_DATE_FEB29TH = "--02-29"; - - // Variations of ISO 8601 date format. Do not change the order - it does affect the - // result in ambiguous cases. - private static final SimpleDateFormat[] DATE_FORMATS = { - CommonDateUtils.FULL_DATE_FORMAT, - CommonDateUtils.DATE_AND_TIME_FORMAT, - new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'", Locale.US), - new SimpleDateFormat("yyyyMMdd", Locale.US), - new SimpleDateFormat("yyyyMMdd'T'HHmmssSSS'Z'", Locale.US), - new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'", Locale.US), - new SimpleDateFormat("yyyyMMdd'T'HHmm'Z'", Locale.US), - }; - - static { - for (SimpleDateFormat format : DATE_FORMATS) { - format.setLenient(true); - format.setTimeZone(UTC_TIMEZONE); - } - CommonDateUtils.NO_YEAR_DATE_FORMAT.setTimeZone(UTC_TIMEZONE); - } - - /** - * Parses the supplied string to see if it looks like a date. - * - * @param string The string representation of the provided date - * @param mustContainYear If true, the string is parsed as a date containing a year. If false, the - * string is parsed into a valid date even if the year field is missing. - * @return A Calendar object corresponding to the date if the string is successfully parsed. If - * not, null is returned. - */ - public static Calendar parseDate(String string, boolean mustContainYear) { - ParsePosition parsePosition = new ParsePosition(0); - Date date; - if (!mustContainYear) { - final boolean noYearParsed; - // Unfortunately, we can't parse Feb 29th correctly, so let's handle this day seperately - if (NO_YEAR_DATE_FEB29TH.equals(string)) { - return getUtcDate(0, Calendar.FEBRUARY, 29); - } else { - synchronized (CommonDateUtils.NO_YEAR_DATE_FORMAT) { - date = CommonDateUtils.NO_YEAR_DATE_FORMAT.parse(string, parsePosition); - } - noYearParsed = parsePosition.getIndex() == string.length(); - } - - if (noYearParsed) { - return getUtcDate(date, true); - } - } - for (int i = 0; i < DATE_FORMATS.length; i++) { - SimpleDateFormat f = DATE_FORMATS[i]; - synchronized (f) { - parsePosition.setIndex(0); - date = f.parse(string, parsePosition); - if (parsePosition.getIndex() == string.length()) { - return getUtcDate(date, false); - } - } - } - return null; - } - - private static final Calendar getUtcDate(Date date, boolean noYear) { - final Calendar calendar = Calendar.getInstance(UTC_TIMEZONE, Locale.US); - calendar.setTime(date); - if (noYear) { - calendar.set(Calendar.YEAR, 0); - } - return calendar; - } - - private static final Calendar getUtcDate(int year, int month, int dayOfMonth) { - final Calendar calendar = Calendar.getInstance(UTC_TIMEZONE, Locale.US); - calendar.clear(); - calendar.set(Calendar.YEAR, year); - calendar.set(Calendar.MONTH, month); - calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); - return calendar; - } - - public static boolean isYearSet(Calendar cal) { - // use the Calendar.YEAR field to track whether or not the year is set instead of - // Calendar.isSet() because doing Calendar.get() causes Calendar.isSet() to become - // true irregardless of what the previous value was - return cal.get(Calendar.YEAR) > 1; - } - - /** - * Same as {@link #formatDate(Context context, String string, boolean longForm)}, with longForm - * set to {@code true} by default. - * - * @param context Valid context - * @param string String representation of a date to parse - * @return Returns the same date in a cleaned up format. If the supplied string does not look like - * a date, return it unchanged. - */ - public static String formatDate(Context context, String string) { - return formatDate(context, string, true); - } - - /** - * Parses the supplied string to see if it looks like a date. - * - * @param context Valid context - * @param string String representation of a date to parse - * @param longForm If true, return the date formatted into its long string representation. If - * false, return the date formatted using its short form representation (i.e. 12/11/2012) - * @return Returns the same date in a cleaned up format. If the supplied string does not look like - * a date, return it unchanged. - */ - public static String formatDate(Context context, String string, boolean longForm) { - if (string == null) { - return null; - } - - string = string.trim(); - if (string.length() == 0) { - return string; - } - final Calendar cal = parseDate(string, false); - - // we weren't able to parse the string successfully so just return it unchanged - if (cal == null) { - return string; - } - - final boolean isYearSet = isYearSet(cal); - final java.text.DateFormat outFormat; - if (!isYearSet) { - outFormat = getLocalizedDateFormatWithoutYear(context); - } else { - outFormat = - longForm ? DateFormat.getLongDateFormat(context) : DateFormat.getDateFormat(context); - } - synchronized (outFormat) { - outFormat.setTimeZone(UTC_TIMEZONE); - return outFormat.format(cal.getTime()); - } - } - - public static boolean isMonthBeforeDay(Context context) { - char[] dateFormatOrder = DateFormat.getDateFormatOrder(context); - for (int i = 0; i < dateFormatOrder.length; i++) { - if (dateFormatOrder[i] == 'd') { - return false; - } - if (dateFormatOrder[i] == 'M') { - return true; - } - } - return false; - } - - /** - * Returns a SimpleDateFormat object without the year fields by using a regular expression to - * eliminate the year in the string pattern. In the rare occurence that the resulting pattern - * cannot be reconverted into a SimpleDateFormat, it uses the provided context to determine - * whether the month field should be displayed before the day field, and returns either "MMMM dd" - * or "dd MMMM" converted into a SimpleDateFormat. - */ - public static java.text.DateFormat getLocalizedDateFormatWithoutYear(Context context) { - final String pattern = - ((SimpleDateFormat) SimpleDateFormat.getDateInstance(java.text.DateFormat.LONG)) - .toPattern(); - // Determine the correct regex pattern for year. - // Special case handling for Spanish locale by checking for "de" - final String yearPattern = - pattern.contains("de") ? "[^Mm]*[Yy]+[^Mm]*" : "[^DdMm]*[Yy]+[^DdMm]*"; - try { - // Eliminate the substring in pattern that matches the format for that of year - return new SimpleDateFormat(pattern.replaceAll(yearPattern, "")); - } catch (IllegalArgumentException e) { - return new SimpleDateFormat(DateUtils.isMonthBeforeDay(context) ? "MMMM dd" : "dd MMMM"); - } - } - - /** - * Given a calendar (possibly containing only a day of the year), returns the earliest possible - * anniversary of the date that is equal to or after the current point in time if the date does - * not contain a year, or the date converted to the local time zone (if the date contains a year. - * - * @param target The date we wish to convert(in the UTC time zone). - * @return If date does not contain a year (year < 1900), returns the next earliest anniversary - * that is after the current point in time (in the local time zone). Otherwise, returns the - * adjusted Date in the local time zone. - */ - public static Date getNextAnnualDate(Calendar target) { - final Calendar today = Calendar.getInstance(); - today.setTime(new Date()); - - // Round the current time to the exact start of today so that when we compare - // today against the target date, both dates are set to exactly 0000H. - today.set(Calendar.HOUR_OF_DAY, 0); - today.set(Calendar.MINUTE, 0); - today.set(Calendar.SECOND, 0); - today.set(Calendar.MILLISECOND, 0); - - final boolean isYearSet = isYearSet(target); - final int targetYear = target.get(Calendar.YEAR); - final int targetMonth = target.get(Calendar.MONTH); - final int targetDay = target.get(Calendar.DAY_OF_MONTH); - final boolean isFeb29 = (targetMonth == Calendar.FEBRUARY && targetDay == 29); - final GregorianCalendar anniversary = new GregorianCalendar(); - // Convert from the UTC date to the local date. Set the year to today's year if the - // there is no provided year (targetYear < 1900) - anniversary.set(!isYearSet ? today.get(Calendar.YEAR) : targetYear, targetMonth, targetDay); - // If the anniversary's date is before the start of today and there is no year set, - // increment the year by 1 so that the returned date is always equal to or greater than - // today. If the day is a leap year, keep going until we get the next leap year anniversary - // Otherwise if there is already a year set, simply return the exact date. - if (!isYearSet) { - int anniversaryYear = today.get(Calendar.YEAR); - if (anniversary.before(today) || (isFeb29 && !anniversary.isLeapYear(anniversaryYear))) { - // If the target date is not Feb 29, then set the anniversary to the next year. - // Otherwise, keep going until we find the next leap year (this is not guaranteed - // to be in 4 years time). - do { - anniversaryYear += 1; - } while (isFeb29 && !anniversary.isLeapYear(anniversaryYear)); - anniversary.set(anniversaryYear, targetMonth, targetDay); - } - } - return anniversary.getTime(); - } - /** * Determine the difference, in days between two dates. Uses similar logic as the {@link * android.text.format.DateUtils.getRelativeTimeSpanString} method. diff --git a/java/com/android/contacts/common/util/MaterialColorMapUtils.java b/java/com/android/contacts/common/util/MaterialColorMapUtils.java index a2d9847ecc..bd32faa513 100644 --- a/java/com/android/contacts/common/util/MaterialColorMapUtils.java +++ b/java/com/android/contacts/common/util/MaterialColorMapUtils.java @@ -21,7 +21,6 @@ import android.content.res.TypedArray; import android.os.Parcel; import android.os.Parcelable; import android.os.Trace; -import com.android.contacts.common.R; public class MaterialColorMapUtils { @@ -35,13 +34,6 @@ public class MaterialColorMapUtils { resources.obtainTypedArray(com.android.contacts.common.R.array.letter_tile_colors_dark); } - public static MaterialPalette getDefaultPrimaryAndSecondaryColors(Resources resources) { - final int primaryColor = resources.getColor(R.color.quickcontact_default_photo_tint_color); - final int secondaryColor = - resources.getColor(R.color.quickcontact_default_photo_tint_color_dark); - return new MaterialPalette(primaryColor, secondaryColor); - } - /** * Returns the hue component of a color int. * diff --git a/java/com/android/contacts/common/util/NameConverter.java b/java/com/android/contacts/common/util/NameConverter.java deleted file mode 100644 index ae3275d14f..0000000000 --- a/java/com/android/contacts/common/util/NameConverter.java +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.contacts.common.util; - -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.net.Uri; -import android.net.Uri.Builder; -import android.provider.ContactsContract; -import android.provider.ContactsContract.CommonDataKinds.StructuredName; -import android.text.TextUtils; -import com.android.contacts.common.model.dataitem.StructuredNameDataItem; -import java.util.Map; -import java.util.TreeMap; - -/** - * Utility class for converting between a display name and structured name (and vice-versa), via - * calls to the contact provider. - */ -public class NameConverter { - - /** The array of fields that comprise a structured name. */ - public static final String[] STRUCTURED_NAME_FIELDS = - new String[] { - StructuredName.PREFIX, - StructuredName.GIVEN_NAME, - StructuredName.MIDDLE_NAME, - StructuredName.FAMILY_NAME, - StructuredName.SUFFIX - }; - - /** - * Converts the given structured name (provided as a map from {@link StructuredName} fields to - * corresponding values) into a display name string. - * - *

Note that this operates via a call back to the ContactProvider, but it does not access the - * database, so it should be safe to call from the UI thread. See ContactsProvider2.completeName() - * for the underlying method call. - * - * @param context Activity context. - * @param structuredName The structured name map to convert. - * @return The display name computed from the structured name map. - */ - public static String structuredNameToDisplayName( - Context context, Map structuredName) { - Builder builder = ContactsContract.AUTHORITY_URI.buildUpon().appendPath("complete_name"); - for (String key : STRUCTURED_NAME_FIELDS) { - if (structuredName.containsKey(key)) { - appendQueryParameter(builder, key, structuredName.get(key)); - } - } - return fetchDisplayName(context, builder.build()); - } - - /** - * Converts the given structured name (provided as ContentValues) into a display name string. - * - * @param context Activity context. - * @param values The content values containing values comprising the structured name. - */ - public static String structuredNameToDisplayName(Context context, ContentValues values) { - Builder builder = ContactsContract.AUTHORITY_URI.buildUpon().appendPath("complete_name"); - for (String key : STRUCTURED_NAME_FIELDS) { - if (values.containsKey(key)) { - appendQueryParameter(builder, key, values.getAsString(key)); - } - } - return fetchDisplayName(context, builder.build()); - } - - /** Helper method for fetching the display name via the given URI. */ - private static String fetchDisplayName(Context context, Uri uri) { - String displayName = null; - Cursor cursor = - context - .getContentResolver() - .query( - uri, - new String[] { - StructuredName.DISPLAY_NAME, - }, - null, - null, - null); - - if (cursor != null) { - try { - if (cursor.moveToFirst()) { - displayName = cursor.getString(0); - } - } finally { - cursor.close(); - } - } - return displayName; - } - - /** - * Converts the given display name string into a structured name (as a map from {@link - * StructuredName} fields to corresponding values). - * - *

Note that this operates via a call back to the ContactProvider, but it does not access the - * database, so it should be safe to call from the UI thread. - * - * @param context Activity context. - * @param displayName The display name to convert. - * @return The structured name map computed from the display name. - */ - public static Map displayNameToStructuredName( - Context context, String displayName) { - Map structuredName = new TreeMap(); - Builder builder = ContactsContract.AUTHORITY_URI.buildUpon().appendPath("complete_name"); - - appendQueryParameter(builder, StructuredName.DISPLAY_NAME, displayName); - Cursor cursor = - context - .getContentResolver() - .query(builder.build(), STRUCTURED_NAME_FIELDS, null, null, null); - - if (cursor != null) { - try { - if (cursor.moveToFirst()) { - for (int i = 0; i < STRUCTURED_NAME_FIELDS.length; i++) { - structuredName.put(STRUCTURED_NAME_FIELDS[i], cursor.getString(i)); - } - } - } finally { - cursor.close(); - } - } - return structuredName; - } - - /** - * Converts the given display name string into a structured name (inserting the structured values - * into a new or existing ContentValues object). - * - *

Note that this operates via a call back to the ContactProvider, but it does not access the - * database, so it should be safe to call from the UI thread. - * - * @param context Activity context. - * @param displayName The display name to convert. - * @param contentValues The content values object to place the structured name values into. If - * null, a new one will be created and returned. - * @return The ContentValues object containing the structured name fields derived from the display - * name. - */ - public static ContentValues displayNameToStructuredName( - Context context, String displayName, ContentValues contentValues) { - if (contentValues == null) { - contentValues = new ContentValues(); - } - Map mapValues = displayNameToStructuredName(context, displayName); - for (String key : mapValues.keySet()) { - contentValues.put(key, mapValues.get(key)); - } - return contentValues; - } - - private static void appendQueryParameter(Builder builder, String field, String value) { - if (!TextUtils.isEmpty(value)) { - builder.appendQueryParameter(field, value); - } - } - - /** - * Parses phonetic name and returns parsed data (family, middle, given) as ContentValues. Parsed - * data should be {@link StructuredName#PHONETIC_FAMILY_NAME}, {@link - * StructuredName#PHONETIC_MIDDLE_NAME}, and {@link StructuredName#PHONETIC_GIVEN_NAME}. If this - * method cannot parse given phoneticName, null values will be stored. - * - * @param phoneticName Phonetic name to be parsed - * @param values ContentValues to be used for storing data. If null, new instance will be created. - * @return ContentValues with parsed data. Those data can be null. - */ - public static StructuredNameDataItem parsePhoneticName( - String phoneticName, StructuredNameDataItem item) { - String family = null; - String middle = null; - String given = null; - - if (!TextUtils.isEmpty(phoneticName)) { - String[] strings = phoneticName.split(" ", 3); - switch (strings.length) { - case 1: - family = strings[0]; - break; - case 2: - family = strings[0]; - given = strings[1]; - break; - case 3: - family = strings[0]; - middle = strings[1]; - given = strings[2]; - break; - } - } - - if (item == null) { - item = new StructuredNameDataItem(); - } - item.setPhoneticFamilyName(family); - item.setPhoneticMiddleName(middle); - item.setPhoneticGivenName(given); - return item; - } - - /** Constructs and returns a phonetic full name from given parts. */ - public static String buildPhoneticName(String family, String middle, String given) { - if (!TextUtils.isEmpty(family) || !TextUtils.isEmpty(middle) || !TextUtils.isEmpty(given)) { - StringBuilder sb = new StringBuilder(); - if (!TextUtils.isEmpty(family)) { - sb.append(family.trim()).append(' '); - } - if (!TextUtils.isEmpty(middle)) { - sb.append(middle.trim()).append(' '); - } - if (!TextUtils.isEmpty(given)) { - sb.append(given.trim()).append(' '); - } - sb.setLength(sb.length() - 1); // Yank the last space - return sb.toString(); - } else { - return null; - } - } -} diff --git a/java/com/android/contacts/common/util/StopWatch.java b/java/com/android/contacts/common/util/StopWatch.java index b944b98671..7986d1081a 100644 --- a/java/com/android/contacts/common/util/StopWatch.java +++ b/java/com/android/contacts/common/util/StopWatch.java @@ -16,7 +16,7 @@ package com.android.contacts.common.util; -import android.util.Log; +import com.android.dialer.common.LogUtil; import java.util.ArrayList; /** A {@link StopWatch} records start, laps and stop, and print them to logcat. */ @@ -37,11 +37,6 @@ public class StopWatch { return new StopWatch(label); } - /** Return a dummy instance that does no operations. */ - public static StopWatch getNullStopWatch() { - return NullStopWatch.INSTANCE; - } - /** Record a lap. */ public void lap(String lapLabel) { mTimes.add(System.currentTimeMillis()); @@ -76,25 +71,6 @@ public class StopWatch { sb.append(" "); last = current; } - Log.v(TAG, sb.toString()); - } - - private static class NullStopWatch extends StopWatch { - - public static final NullStopWatch INSTANCE = new NullStopWatch(); - - public NullStopWatch() { - super(null); - } - - @Override - public void lap(String lapLabel) { - // noop - } - - @Override - public void stopAndLog(String TAG, int timeThresholdToLog) { - // noop - } + LogUtil.v(TAG, sb.toString()); } } diff --git a/java/com/android/contacts/common/util/TelephonyManagerUtils.java b/java/com/android/contacts/common/util/TelephonyManagerUtils.java index b664268ca6..e4c2c63732 100644 --- a/java/com/android/contacts/common/util/TelephonyManagerUtils.java +++ b/java/com/android/contacts/common/util/TelephonyManagerUtils.java @@ -33,13 +33,4 @@ public class TelephonyManagerUtils { final String voiceMailLabel = telephonyManager.getVoiceMailAlphaTag(); return voiceMailLabel; } - - /** - * @param context Current application context. - * @return True if there is a subscription which supports video calls. False otherwise. - */ - public static boolean hasVideoCallSubscription(Context context) { - // TODO: Check the telephony manager's subscriptions to see if any support video calls. - return true; - } } diff --git a/java/com/android/dialer/about/AndroidManifest.xml b/java/com/android/dialer/about/AndroidManifest.xml index e9489ce1ea..85c7508265 100644 --- a/java/com/android/dialer/about/AndroidManifest.xml +++ b/java/com/android/dialer/about/AndroidManifest.xml @@ -1,6 +1,6 @@ - + - diff --git a/java/com/android/dialer/app/AndroidManifest.xml b/java/com/android/dialer/app/AndroidManifest.xml index de4b48c515..4200082a64 100644 --- a/java/com/android/dialer/app/AndroidManifest.xml +++ b/java/com/android/dialer/app/AndroidManifest.xml @@ -39,6 +39,7 @@ + diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java index 6e2c6be7df..b5e615075d 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 85c2ea6506..20222d68c4 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 deviceIds = new ArrayList(); - 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 2f8a58c8aa..3357ee2f1b 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 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 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 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 6e4b23fc1e..1571c1aefd 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(), @@ -379,6 +382,16 @@ public class CallLogFragment extends Fragment super.onPause(); } + @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 1daccd1a41..a9a4d1d426 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 58fe6fa2c0..1f45f70863 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 { 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 { .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 a94c6781ed..9c3c18b602 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 7645a333e2..6728dfb389 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 78aaa4193f..0000000000 --- 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). - * - *

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 e561b56078..32bbf06b52 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 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 e9d57b3995..c0b26c91ae 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 f71517a44d..d98395ec7e 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 1cdeb2175d..c208fd57d4 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 6e32843baf..19fa1a70c6 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 04609970a8..f5fdb9e2dc 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 @@ -149,6 +151,8 @@ public class AllContactsFragment extends ContactEntryListFragment 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 537f488d53..04927cf7a5 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 0000000000..ae99f0521b --- /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 8dd52a9d49..32501d5562 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 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 40fe745654..1ddc0f4e1d 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 { + class ContactTileLoaderListener implements LoaderManager.LoaderCallbacks { @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 9516f06115..f4f395ff08 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 5a18d039bb..40f23ea6fb 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 db89cf3dcd..835b448bdb 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 c692ecac77..ce85982614 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 02896793b2..4f032032f1 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 3b917db43e..1d566c5a06 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 fcf8236e30..7f2d17650d 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 eb1508c728..fc21c8bc3f 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 ca93da0deb..7c6df94488 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 @@ - + x7@w3P1M$|Nqd6i@i%8eEjko$eyz5QCQ{0PhWrQhMf$rykr)C z^2mkv;Z>I|-v0FY>u-bTw~G%=&0=6+Jmcx&7*fHw=LT!iVFwx#!HFeXFa2ZQ^PuU^NB_)SiBa2fXSS_Nb(6XNnfVTP&H2(RQ)Biu zba4G#BowTryv}Rqk+fB&Dq*WP&8T8tY5MA=-)2^~wP{?J-!()opZlc5{@}aK((h|( zofp1eZ}EIN`_d|V!}skLJer?uOZP9lQ*Qodi~Yof=gmrg$)>DwUZ`etP385X)}F0# z;oi(Mv-hki=U8RuXv(q5c8-wC)OP`ri%xz2yOU`uoAa*U_r87HGs{@Y|3lP2F3|-S zN=)Q}R~8h?q_#U1oSUFs_F$f(|C|qm?-T2gWw|AI=_%g=`GuAhxAj%eedn@$BU=Do1lN2A=jvG z;3V~Qel3XgI|T8>h!7tT)ZymvM4^-TQq#r`8`=dDt3j=d`DE zg`#Xr^0b-{llvFdTgjY0UK%w2H^ajJ*1LEz1ME&TS-w&BNx0GesZk^D7jLhi+?vJw a3=B=Fm-a^&PksPQ7Yv@RelF{r5}E)#>SnC~ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..b041a74bd95cabb3025003f4e145aa8d1649d517 GIT binary patch literal 408 zcmV;J0cZY+P))?mA|P2g;Eh@Donz% z*HWrJeaM7mUxOT4O7$rNdHb(}P^wQENIQJ4wN#%nC1#^)KStM}jk1Luf0IATF=+Tf zar~q7XqOG~*D)~{R_g`}t97`r8U#%Dtn{Wy2fhK;D+p)VUrb^E0000A5Z;*NpSZPHKT2?sd{k@xmn`yj>shfl9u578(R8(xMDP|QP zV#TktE0m5}AB$R!O2zZT0>fy4Ar{XxU+kkH_AVYNH^R8FXpGTgxpCEPEb6*iKbB{^ zNWjiHB7C`9CW)5rzCs`KB+(rGFu){9G{GR3=sRO*?JUV|=R5ug>+}nm?TO@lwCQCe zM`1fD6*)_7dhyTOj?x=sYRf)WT6V@EBL7%Z9ke!;L2L6f^oADk1~S8&e$4n)0swM$ Vxa7yNw{8Fc002ovPDHLkV1n0Npw|EZ literal 0 HcmV?d00001 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 3a1a7a7905b8ced6c9e6ae6f359515116a1a672e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1084 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY0t8Zm=`LA+qju0W8fY)Rhk zE)4%caKYZ?lYt_f1s;*bK-vS0-A-oPF)%Rmc)B=-WZZi@Yj3uQqeOfCcSn`ZBo@va z9UMv>jE>sDnd(b|Mb_&45oU3f{_C70(xQ>6lj9s9;==8?p)^|3>IX-U+64=5T`YDI!#Wk}@AuFHU3jKH>Heu}|xp%kM zt=qu(Vri?p%HJthib}6ucs_quU2}MG+tzREyng9qhFyyFOjmsymiBa7BVX6-eDNJj z94naCpSZGUv1$UFh4{SHE^>i-mJgT@^fTOKk#ew(VK{wYhvWC(w#CJn*RKVpzRNBx zO)b35SIX;owyyab(~UKy22*lN{k!y4bhDGy^i?-x?q~jHv}5|hHD9I8@)I^c%V5d) zZYFQPnNd^8`}?6ocQttG0x#XxV-E64V2~u{7V;*{F#o}-C8edy<|R*3dm^UjdOR=h0OOHcv$>z@c?R!Wf9d!-O)sy< z2d)bof8VfBcBAtxmRmxXZMU25k$LsXRefz7(|o?$&JEYCFP+NkGkxKH?$q^U?cM3G zAFi63x2~^2{Z8Tmu7X2nPwu;-)@<;L#VfZBFEACz?_iVBa=laD`SkDscXnH5o3aJH1rJ{_Tx&3XX6Ra+ zD|##Dx5x+GTM=7sRBU?5o?!cDU!r1w$>p*I>W%u0DRa+WE&D$CnXc>SKl~f~gN`?T zXIysi=pnfZL5Zyvdb854FQmP!J+P%Y+wH-&gqh!VD)4{3 z!qiX?r4ELFzgkwkS@LB19rc-e`1rWa)(BR(M(PMZFt6#lDR|(2!*sSc?}a?!z;8dJ z`K8o}Y>w|v0yBteiEBhjN@7W>RdP`(kYX@0Ff`FMFx53O3^BB@GBCC>GS)RPw=ys& ztK+Xn(U6;;l9^VCslm_;qT%+G`Rzark{}y`^V3So6N^$A98>a>QWZRN6Vp?JQWH}u T3s0tkaxsIatDnm{r-UW|(fZ57 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 0000000000000000000000000000000000000000..f3b76be4c66d82cd7e67453af74fbc2ad8a2e1da GIT binary patch literal 526 zcmV+p0`dKcP)(?$17IGDptn-|Nkpk#w%9GDp$vVfd491 z#y4BYDp$uaSjQ_@$1PUJJ!Q*QdC}bC_4D=nSbNg{|Nq0!@6g%uHDAd-Wy{^<_DgWi z$<**kZ_exQ`7KJJnE(I)7<5ujQvd`*inQA7`36;_@BaZ>-pvAw4z(cGM6az7n*aa- zFiAu~RCocUmQ@x4F%Seq4jJ%M^OQpOR%gepIp@>?RpeYhlTicyBZ|s7n0~5sqdYm-j3d53G)oN9H Q0ssI207*qoM6N<$f`p&&i~s-t literal 0 HcmV?d00001 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 74ccf14b8562a4acd95ba2c2f5ab14c55a3a190e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ueoXKL{?^yL>WGgtNdSvKUBvfU(=jY&)RwA3a?hLn02poxVR?)KTF0{_^*oUP((e zI3`*7DzLcZ9659<&SUba`om$0t~!5}o#LjOxdw3r3V3VtMsSuj{rvdJPVD>KJI_2+ z-tW1?xwA2~{P~T&=g*!ybIx<`mrLII;nABi#Tg9G?5$IJ=`u4lIRBQv*Cw7 z7A3xo&;EZ1{5)x%=Pc735kisEO!JO%b5CF_`t6{2zftgm(2kescLkVsGRiUR=doZs zCa3@V=Z2N#e$_`3XIgq1YyHukrBd6S|5ED1w%?t<7cN;p$u9KETIRMG?_{K$ESRftdP1W9e7VPf#D8wUxWSu-q){oc`t6rylwjA z@98aZbJz3Dzy0OM&gad3`4f*cO!+8*ic_ENP%e;TntdSgQFr&s=$IPd~;8(zdU+ z8P_;?J^eT@az`0c1z*NGql`nV?%ul&j*sO}`Omd^iTK|4z6(qRswJ)wB`Jv|saDBF zsX&Us$iUD<*T7WQ$S}mv!pgwd%E(yPz}(8fpsbF+9z{cLeoAIqC8h>LGl+)UQ|7k= wHAsSN2+mI{DNig)WpGT%PfAtr%uP&B4N6T+sVqF13QDRBp00i_>zopr0B$uz=>Px# 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 0000000000000000000000000000000000000000..01a3bbe0650de57a645891af93d9cadb5e51ee58 GIT binary patch literal 981 zcmV;`11kK9P)vz=$1`TkD_O`ZSja0^$0}CFDptmTfd4L7 z$}3mMD^|uUUd$_2$17IHFj~keR>mt=$1PgRD_6%VSI0?h+bUPaELX@XSH~+?$S_#P zD_6!VR>v(?$SYRHD_O@YR>mw>#wu3FD_6!VSH>$>#&?t2&DZfYU&(ls+x`9i|NsBc z+495B@ALKhSbNfWl-qih+pE0je3#sNmfNns>HhxyufXZ2x#wAX(uM8&6G^z6qB{>5y*SgzKa?as1x+s%5lT+C-M z#dciJXNT{(jty=5!|}vHr{iG{9p}rH6RwvtRNd|m3V7UaQ1N`dDd_!rLe|IqQo`5$ zKuQo&QW!v-9Z^AKLr|PhNg6{)mQzulK|oPbSy^CGRZ~MH4Eg1fglK)S<-}=Q*36Y|Nkj)W_#)?THO|9 z9?)ZumT7#0Ly^e${04`5JB{8IIF)yjzh2-}FUL9V5svkEl;5A=SWkzQz#W|H?x6m; zhjZQU*Gt!kq$-%M_v*tNL{Y8Ypf%sFsys&&HCyctbvWM|Ttwuzxx>Xaj9y0M|ESAq z@8a5^6rJDegQ!Hpkd$u?NWKyu{<{APAk@IlM-Vp#2`xU5Fa}9AK9a`3Q{y9L4AN?R zq>Vua0uBGdN5&Xr)%eI7gPa;4Ib)Dl<0Eej3Tk{5>;~1*7(^2*pBUu9Rh_nH<4Anu zZGUog-fkNQIUhOOW4bUP;~?cDYkSf9y{&_kj|>kL+(E!c+7|4H!(9+f_8?cWRN;pkl~U2=>4~?0dg7VWlmDS_t`Y1c>l+3900000NkvXXu0mjf D6-?pm literal 0 HcmV?d00001 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 0e24fa45ca6bb8e368558c860cf6d433f9f1eaf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1376 zcmZWpeK^wz9RJO`mY2~bj!+vFWAk#Dq`8UFc565}l$UKH@78R^Y)Y=H)8*xk#mZYA z??ql(8zZ{%8mVYGQ|D&hPGaIgH+O$|?)koap3mp|e4g)L-|sa7-a})T!7cy*G_al+ zq8tg^rKTe9S&*e#IVeS-acBT|a1*={sx0TAB%+5KP&Z&Gl@pV2Pa+NgE}8)V>k0s@ z%O%z{09-%-z)T1Lpz;AgFTRj>>Zp9666WoJ0lsXBLl3QU<`Tp8I0*F z(k4)6qxLd?#^@6c#x@Wzn1dxM$bIIf(ivvZ$fIQ`XMualtfl(WfMU0l=l9BQMdq~n zuKw3_6SbXr8X#7F4e~my?wMT`WEpwx`@>&dDhv)MYp!C5F2#J+9+ASZ9?(=vsV=s?5@O{O+2NAp4^mq0YwL8pEsPNM3J(h5v_D3hD-zt6S=KC2 zyz;(=yf}6;tCWV@1;Qzbwd04b7@(YibvSyW>3o$Hc+`S=hqN*($c}wR9+262o%4rj zK#dwU7pf}K6*vNqQj*O)zo)tWG^_vneMu!OHHKW-J86-p zi^!au(wB_Lj!K|KO$~T+?aGaiPFIQ`a0*h8DqFL+$3nF%shnZcjmKk_CI(HLcyE-I z^aA`xdN**S(LBf>o-AU5xT>-y6{9e1(+`+O6YGKiz7{Jm@UjLNc18+aDk=jTWGphU z?N#cNP_QVMcms5?&>!}R*Jmu8DPa^THRLktII-ty{E1UnW;JfP_K(7QJu@#W%d@c-n`)9oMz*Ka04b&u@&4p$FYrI z&(72P*e6T!t|{|l-mml@lSq!cb*VeDbrxB;$k(r1w>oAzxp9Q=*0LDwJt_GwKG1vl zfB!V*V8$qJq17b1cJa@iw>m%p-Bd^m2tF;6VFEFF>n_cBUOgQtDzP?N=x#i2jj}dW za1F@*IJwZBvYWn_uHBlDe%H2|RW4-sDhH|7G`X$qj`#7-e;m``@=~=8ga-`*Ex3;_ z80`!8y7!HGBq#H$W6Svo+5buH9q4jgN_DtTpr97`FVQ-FsC7axG_mpD4!B=yI>`%f6H7T{z z!@L|e2V3U=Dr9b-1bM&$3T#?aaZB*9(DLDaMOuES$9p{WYVV zr2_iku+GpbV*fp9YBc_%Fue7|I`^u6YLHk{>?gMC7e~jo)#OjRzfA)VJ&R@xkEVIf z8D&)l@E_Gtf7rLQM`$Bm-ztTo~B|8xtBqCXz!*jD+Xp?N0|_-SL<@ Iw~+LI09jgENdN!< 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 0000000000000000000000000000000000000000..2043279509387c25dc28203d61fad067c0103ef5 GIT binary patch literal 1443 zcmX|BdpOf;9N#coo@Pak+;-;LY^G_hCu+3WCbZ>(NWF0ID${6@}byG4d3(g!^ zUfpD64u)JFTv^*BM@xE#WrVZ6fQ-U~HcQ}xPFjdI$FPm$-PI zW)9vJpL-uKbs82-xu8F}tZ3ZzPME_;5=;(MI38~`=QR}({KCQN3_CZ=$~(IH6g{l= z6W3=QebBvJB1omB9h|5NvvKnL_VE-$rGKIa)40{o|H2O%4tXYipqi9@k9Q|<5Rw#sJc|Be z#Q34DLlPD8bg#K>r;d&IOw5|uAV#O*D@BswZ=)7v=32*2=a0=?4)@fRc2r8q$}GcD zlC@FbcYEuO+w$jN_^$V(g_O`g1O=Z5_J8*U-V` zaI)sgAKrI_siDJip@v{BoU8&}@z@l30W$ccgImryQ_9|>>GfU%F{$J>oARCINQI#z zbD^~4iq^O*T%AM&L|`9QTtm>)Sw>AvS7l_x>+ik2i26F&l=(xJLv1}~xq&`6K5jrE zO*`hOp_NJzvIVXDqgswRFh1-~bi}c+HZDHp2g>Lo!et7QpEKwLD`NT^(N|GK)?zMo zO!=sM_hhBaT~fSs6G1kjFN>~Kns7r&Z;@ftQ6gE4tfCpTla2il^s0tQqhQZA3dYHj zzFfhM`I1sUVOSl3M3UT)Qw0b6emlX&upVSbUqXn>yUL<3BHYHOYocR4$L2Z7_4Ce> zrH+*Pxk$f13tEPGNNbz3i}TUNgmt^6B$NsW1|lw;P?}Xjmn{mZp-4T@E|VxL;`PZy z1GqJKs)rJf)SC)1C3=GI9=2(&1AqIh$#&Ys&Tq>z3+k-N3$K3rYA%Syeze5VfK|~d zel?Q)RNtL3zLK`_0d)lEj0^k}Qr4K)FQlw3VGLiriA%lu#Ty4}Ip?``+IHo7``YuL z#R!tF1I5*lqZfZIO7MDh#40&mctfysNPVO=rt(O019vq263GzyB;N$D27(()4W`T> RV?Z+j(a0X8$1WjR{{csCo8tfg literal 0 HcmV?d00001 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 9594619cb23a21ed36043440e2365c627d602faa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2090 zcmbVNeNYo;8V?05Xq8BTQ>WS`2()0b*?eydAV~;B2_U4J0jmkS3q(vdB*6saEXETH z+Ij^)P653t6>C)jLy?bS3Ui(pTc9{C$d{xypm;#j@hmDF_BMQI=f>$Dw==uX`#$gU zd%oW1H(Q*P5W9Tonx!NXX}L5`oJ>fw>-Abfd|{MxhY+icF$!Y}o?$ep^cX1`#nUlB zs!?TP$(Rbw%duku63N}5mMe@3Sv()XH8hpWhGy322sDW#h%)O`NH%5!(y>gnHiF`8 zu~7gu8bR64meFN85tgNn%hzKm`3Z6)KO2EjN>n5uF!Koq8qBBy%$hw~1K%7$ne)ph z)-E+j0p?7M*%6faq!h9wK!octfK6jl5jq0`xG)W3vtS6?05Iqf6NKm>1ExX{pT*@v z9AM$05YhB#20vLWS%^jKA}Co#qmB=PCX-t_55kRq1%HF@i#5I$wfDCzHK!tTik&if9>VR_Q>9Mh7(-S6y?~ z24gbzGL2VS8{~O93{1uhc&;8H?js{;5lr;%_XD{MiEQ|ZdNpw=sy$*H$<<(5qf{J0 zAx>zh8s#HARXT%}&Y|+STrQQxW+POX$APG*3c+BA#X;B^$fBQD;h9WEG@Z*5ieWAU zK`~68L?VPG5;i@C3kiin-Xd12H5gS|1Y3-)CSosOqkk967wIvT5!cIce9z((BxT`7 z+>nLq0FelIN2Ws5TG#$v*B#B5EXMTey%;Ld;~HSD$$a%I5@7RKymS_a7?*Svlgi>U zSyUAxgW)Qk$3y4{0yAOC0v`Q;n+Fm}fv!pU&Ezbqh;ei+U+{p~ykHWhCFr9kc%m`T zj3knWOe&6+oBJm!rF&#sSKad2{O$6<`yT~fTGife@d{YKo>TN^#a}o=FYoN|Vsh=* zMc=LRZ7(51KYUkpQ6Z0qVnm0|q-Z|B>@*xZbZXzj7H3}TgTZ0&S!hR-^G2X;|C0)n zv+2Q?YOR*z05#;J%1v}&75NRXB_8gUmGi=_t&q@K=EcHc(4vh?>v1r#K6hf4Rw_7E zP+D>FO4-p(7vA<4B(5dv`w|FMSiL&eSOQC)o5_pR`?(9E!kW|FG-*U83uRxq~PR<8pp=c zCteA(rgb~Pi@AQ2C5}k1seOL4n;3%oH>TG%R*x|KD|Y0MTAdyBw{xYsm4`EJo~Bsq z@E>)9+&<;ZaDEuC@B5pBHIxqh`@Vx@gKb&JXd|VOb6+*H+Vsfmk<5w!OzTY9$B}0$oD@_!GRmnhBFTN{gua`OFs#6{(HZ8CfFVp z)-${G<24&jP+EW#o-W+{BwPWnzQegU5;^YM=KZ5mJhNFoo%7+gu;2^K{>Kdgt@}O=_)NRq zst2mBD(c><+%LCwTE9QyQ_1Mx)#s*&NFBQ7xLzs>oSYpyGJ8oGlc*ho$G$xh%-$=W zUGe2l+pLe`^t`Ip>nJmIs78szcK8HWGW$P>3n@Q-uiLrBGd#cddC!Mk^<0!J@!S~q zhqRmS!iLGxD-!F>vQIloD@yJ*B>Xma zvD%V-_y^Gzw8*Z}ki&S1erfL>6gGTr^=|0utSU##(2t7Gp1WvzZwJ)YoYs7||9y|^ zE1HW=b{1>ju9M9?REO{eei=8ED@!IhZ&m>Iy}IhU+}A8Shc1hBKPs}%hki94=9VJU zT{cwPy9%!LPSJN3JKAew>;4J;(Azs=YW^83bJ#zKT-qagoMW$et@U24)JM{N=tB2Y z&8TO7YjuGvOu+y7G_@(Uu(!F;(G!ismFo5fIiqC^N%z$)pR6@gpCt|*n6mA<6PoV&h25m)5p&^Li6_CnkfIKjK-a`_*Yg`hkJ~jr{0RE4^@B0s})mh1yiBZ z17!X(w6u*;Fm{;^rZhW$DbH-#&*W=wx_c2=iZ027HBGY p$<{e0y1%69|4{kHqm)87(gEjRJI-7^+T{9sOJfqm*Mv&Te*wW7KJ5Si 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 0000000000000000000000000000000000000000..bfbe69e35a354742c4e814bee0309cff439029c4 GIT binary patch literal 1893 zcmYL}c{p478po4p>^u}zwbnAVi`usarABIveW}=0X-6t0T0&?`)o`2E5~88TGSwC{ zMqB&VMC^*FrLCzYgNxXc+mL%Q_j&G|=Xc)o`JMOset+NR{Ba(6xH*XlpA!awKw{26 zIv{~(H}4kY18Nk6WC8+#5gsnyj=bm#G@u#<59{(WP;EoM0#?Ad9&bz0^&bTMc~kyWeSaDt$jIRG-Ukc- z8o(du0=5PLJQ+_6wESp*_4>ap7W+8z{=#s8gu0lw~89(CO z+1sN+0WDy7`HpbHqIk->RHj_szF@|Y^Mc|VXtE6*f|G5xXB_J+TW-08e$TfBvi@_; z|AYUh5oA<%EeHe+c6PAy#)ALdlLhVrNkhA3=ix1XaBP-Lo_wDSkn#J>Rj3{+38Ruiz!we zW1^#c-lSwuJ20bvJE3D7;ojsvt? za1%P2#NnGemC)IqTNz3Zx2Qobtw2^^(e(=xXT*n@oQ%LzodSHlIdcx@F^{Eg6!wp6 zjRfCVjn-;V;mk>I9_q{q`E&*ISLTzPCH0DF=Z_SwP;Mkw#$Y_!1$pL=9B3UY|< zf&&y=ysN`7!vJNNVk)rH5Pv?TGc7qA%pat~cglBZw@oE$8Vrd;v-?Ep{L+bKo@_p` z(#LY6Nbi%-tZLC1iyzY8^<3N=Q$^-?TEVF$u;0~T+2$50Bk6Y^3K=;;_9!evcL)Q` zGWfW=L>ffXS@;>p*4RW&$ta76$K`+NFCgZTUs~Y2(@u(Pa1|>;&0@P%n?e}T-Kr%a z48R*g`v5b9_A7~3C2{*5gcpuDl`_F)mtD1D!DZK7wXqHp3d?iRXG$F2P^F={f*>es z9Nb)756mT-X68EMyjifDIb`uElc$_I4agm!UVsSOP|S8Y*VQ4ePdV2+ofi+cE-Ar9 zj3r3f5l2|%0y572AmK!Lv z<12>UogUpj%Y`!rRD|J!S_PBbaBv+*&RAjI~yI?;MgJ!CANggKF{V;at#dKmQAVhMO7O zCnaCUj0kC5$rCeX8D5y(rvitR6vnqj@GzwlW8UkE$f=K#Vf}V zHjmy;vC2jsNlivJbs3KLd*uY`05QCG>AV+m)8?s_grz$)o zGkOFFtVh~7br(^+3>SIpXH<8Y-H0cg;0ta+2`#TZ+Y74UMF{6@RHlQ|M?E`yQ%0 zl-Tj^%^=M@Vo%@cyA`1xLpfF@?rUq|e$;*5_>N2= z{3;9F#WH9OA@`)o@{`}{oJiG=Y$dcV$f7M2lgfNJR?uq1=D6hne-$mhsl@e4)|X%J i)cFi%fkE)N9}m4{~;Nb9iGPn)zSP!=jx4 literal 0 HcmV?d00001 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 395652cdf34530585754ce904df6cb37eb7026e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2281 zcmcgudsGu=77zGXVgVH`ip4U707c1@ye0BVLLvq*z=~avPBH^z$*ai#NdRjR6f9Ig z1PTfjb_JA`gDglah*EcfD&X0!h%Lyvq@YNb@^FzN$DJs+`-i80^pBl$=KH?;-TS-m zJ7;pkLxb%$?AU<8VC+Ofo&?>`TV9*>=-PN-v=!Z)5Pmcgp^isVK`o34fYeeL5Gla~ zSOSBP;p1M|7lT=&lSf7)(c=9anOaE%Eiy#CQiGx~7+*iV29zbi2q1+M{d$YQ*94o=|K&NLL`%vN=sa? zq;-e{{;wNvmDWWXG%!g5>(t3w8Cs8cw^cBjyI(eB5k$S=glXkyQ9uPxElXCyDn!KN z;!q9|l0zIB3zSl6QU-y=WHJdfI$cI!vltWt1j=AGg~pK4<7KOQ-iBu|1Y`j{kVT~h zpf%vrSV3eai!Tt6$pHa8HkGo96{&OxsFJ~}w&kep6)f`?v78_+3?gc6q*|?5?Sk+` zHKNufsx?4R5b%K*l*v^V+RIX-*CF#@tvm&W1X{Hcc$H+1{4EZk!BJQ=8ihcUG0@;4 z2Ad%DVM_@R3uHrN5Rx%K2)BZVer@tds8b|Mr~FUntX`q*XgR)_1C)3(Nw5kXA1yj3 z#n0v+V=(J%MZADW{dZF%!F4;MoV#aE*A0B$bSvtXbxQsQVqP?3S6dU{npx(5E4#Xh z)LzR9*@K-)y`mwLwFg-q(Jv!Nc zZurH(!Z{z^_?731{)Cge_xvVnwQI7_<7($+=4^LHYR15pY&Y)bJ?Ns z{F@b{+XRO{^HzNn_epRG|M2fkQRf z8N@G9p+{kT!a)D9Iw#Q(-7iVtkkZ#!UYHd-R}+s1@2CICNhAzZ%sCu6Z{fS3{Ql$3 zW7BkZ>{sJlv8d~^Ata(mGmIbh&;LT^?AYS5M{p!}YVgK&2H$>H$>LLN@MF`%#KgEu zSYg)zL(8Wb4Y|Yn-}!o`&iiD#PrhHn)}K!HY$eQR)y&31BRQiP1xN9UleL1ans=@2 zy2VXl^_MI6+qNwS72d|yc`Ay|UNDp##ZQ$7V-s1GcI_@~)$Xe0_a1ac&wuHu_+lw7 zy*1YCC~ovrRP4l61=|mQGf^>F`L_>wTrf$IH#|5tmyUn9raUfeh~f2}XJL?0(d;{m zw-XL|Oz{%V#ge;clG;kmEpRhJqo?Dz3e8F_8=*~R0f;h$zHi@LKf zEh$b%a6Iqcq<|IXZ=P;+JMnDDp!4l)*hx9Wqze5 zy={;7N6h!j@0-Z8vjt0?BrP1$nNdsat~xgcbKbpwuRD6V=U`b!^uq7=3|L#eEWNAo z^%&k{x<22z=yhW763&HJGXEgu3T)MF?V#$9Ej;tgDbde9zun1nRk4_zce7}hy)|U@AN*2srqe&Xc!_d5;ipt$U09ir zbzw?!QC@JS`8l)SfVJ!H=nY9Tv_SG1d#*#u9iKwkzT_X);-~Ur3>hiVA@gs30Kii7 z - - - 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 0000000000..9687133760 --- /dev/null +++ b/java/com/android/dialer/app/res/drawable/ic_wifi_calling.xml @@ -0,0 +1,29 @@ + + + + + + + \ 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 5f8068067a..59d13636ad 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"/> + + + + + 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 17a45208d9..422c529916 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"/> - - + android:src="@drawable/ic_check_mark_48dp" /> 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 d3a5531307..5046383489 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 @@ + android:text="@string/call"/> + android:src="@drawable/ic_phone_attach"/> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + android:id="@+id/spacer" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:background="#00000000"/> + android:layout_width="match_parent" + android:layout_height="@dimen/shadow_length" + android:background="@drawable/shadow_fade_up"/> + 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/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: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"/> 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 e245aaca0d..1d2047982b 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 @@ - - + android:animateLayoutChanges="true"> + + + 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: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"/> + + @@ -58,41 +58,80 @@ This is required since drag and drop event is only sent to views are visible when drag starts. --> + 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_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_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_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"/> + + + + + + + + + + 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 c02512d808..bb6a5f7de3 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"/> - "Keer terug na oproep wat besig is" "Voeg oproep by" "Inkomende oproepe" + "Gaan tans grootmaathandelingmodus in" + "Het grootmaathandelingmodus verlaat" + "Het %1$s gekies" + "Het %1$s ontkies" "Speel stemboodskap" "Bekyk kontak %1$s" "Bel %1$s" @@ -99,11 +103,13 @@ "Stemboodskap" "%s sek." "%s min. %s sek." + "Kanselleer grootmaathandelingmodus" "stemboodskap" "stemboodskappe" "Ja" "Nee" "Vee geselekteerde %1$s uit?" + "%1$s gekies" @string/call_log_header_today "%1$s om %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Laai tans van SIM-kaart af…" "SIM-kaartkontakte" - "Geen kontakte-program beskikbaar nie" "Stemsoektog is nie beskikbaar nie" "Kan nie \'n foonoproep maak nie want die Foon-program is gedeaktiveer." "Deursoek kontakte" @@ -145,10 +150,9 @@ "%s nuwe gemiste oproepe" "Daar is nog niemand op jou spoedbel nie" "Voeg \'n gunsteling by" - "Jy het nog nie enige kontakte nie" - "Voeg \'n kontak by" "Raak aan prent om al die nommers te sien of raak en hou om te herorganiseer" "Verwyder" + "Kies alles" "Video-oproep" "Stuur \'n boodskap" "Oproepbesonderhede" @@ -213,11 +217,9 @@ "Geblokkeerde nommers" "%1$s is reeds geblokkeer." "Oproeprekeninge" - "Skakel aan" "Stel toestemmings" "Skakel die kontaktetoestemming aan om spoedbel te aktiveer." "Skakel die foontoestemming aan om jou oproeprekord te sien." - "Skakel die kontaktetoestemming aan om jou kontakte te sien." "Skakel die foontoestemming aan om na jou stemboodskapdiens te gaan." "Skakel die Kontakte-toestemmings aan om jou kontakte te deursoek." "Skakel die foontoestemming aan om \'n oproep te maak." 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 82303019c4..7f4a622d70 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 @@ "በመካሄድ ላይ ወዳለው ጥሪ ተመለስ" "ጥሪ ያክሉ" "ገቢ ጥሪዎች" + "ወደ የጅምላ እርምጃ ሁነታ በመግባት ላይ" + "ከጅምላ እርምጃ ሁነታ ለቀው ወጥተዋል" + "%1$s ተመርጧል" + "%1$s አልተመረጠም" "የድምፅ መልዕክት አጫውት" "ዕውቂያ %1$s ዕይ" "ጥሪ %1$s" @@ -99,11 +103,13 @@ "የድምፅ መልዕክት" "%s ሰከንድ" "%s ደቂቃ %s ሴከ" + "የጅምላ እርምጃ ሁነታ ይቅር" "የድምፅ መልዕክት" "የድምፅ መልዕክቶች" "አዎ" "አይ" "የተመረጠው %1$s ይሰረዝ?" + "%1$s ተመርጠዋል" @string/call_log_header_today "%1$s %2$s ላይ" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "ከSIM ካርድ ላይ በመጫን ላይ..." "የSIM ካርድ ዕውቂያዎች" - "ምንም የእውቂያዎች መተግበሪያ አይገኝም" "የድምጽ ፍለጋ አይገኝም" "የስልክ መተግበሪያው ስለተሰናከለ የስልክ ጥሪ ማድረግ አይቻልም።" "ዕውቅያዎችን ፈልግ" @@ -145,10 +150,9 @@ "%s አዲስ ያልተመለሱ ጥሪዎች" "በፈጥኖ መደወያ ላይ ገና ማንም የለዎትም" "ተወዳጅ አክል" - "ገና ምንም እውቂያዎች የሉዎትም" - "ዕውቂያ አክል" "ሁሉንም ቁጥሮች ለማየት ምስል ይንኩ ወይም ዳግም ለመደርደር ነክተው ይያዙት" "አስወግድ" + "ሁሉንም ምረጥ" "የቪዲዮ ጥሪ" "መልእክት ላክ" "የጥሪ ዝርዝሮች" @@ -213,11 +217,9 @@ "የታገዱ ቁጥሮች" "%1$s ቀድሞውኑ ታግዷል።" "የመደወያ መለያዎች" - "አብራ" "ፍቃዶችን አዋቅር" "ፈጥኖ መደወያን ለማንቃት የእውቂያዎች ፍቃዱን ያብሩ።" "የጥሪ ምዝግብ ማስታወአሽዎን ለማየት የስልክ ፍቃዱን ያብሩ።" - "የእርስዎን እውቂያዎች ለማየት የእውቂያዎች ፍቃዱን ያብሩ።" "የድምፅ መልዕክትዎን ለመድረስ የስልክ ፍቃዱን ያብሩ።" "የእርስዎን እውቂያዎች ለመከታተል የእውቂያዎች ፍቃዶችን ያብሩ።" "ስልክ ለመደወል የስልክ ፍቃዱን ያብሩ።" 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 e4dfb4d9ef..3687d0bcb5 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 @@ "عودة إلى المكالمة الجارية" "إضافة مكالمة" "المكالمات الواردة" + "يتم الدخول إلى وضع الإجراء المجمَّع" + "تمت مغادرة وضع الإجراء المجمَّع" + "تم تحديد %1$s" + "تم إلغاء تحديد %1$s" "تشغيل البريد الصوتي" "عرض جهة الاتصال %1$s" "الاتصال بـ %1$s" @@ -103,11 +107,13 @@ "البريد الصوتي" "%s ثانية" "%s دقيقة %s ثانية" + "إلغاء وضع الإجراءات المجمَّع" "البريد الصوتي" "رسائل البريد الصوتي" "نعم" "لا" "حذف رسائل %1$s المحددة؟" + "تم تحديد %1$s" @string/call_log_header_today "%1$s في %2$s" "%1$02d:%2$02d" @@ -120,7 +126,6 @@ "MEID" "‏جارٍ التحميل من شريحة SIM…" "‏شريحة SIM وجهات الاتصال" - "لا يتوفر تطبيق لجهات الاتصال" "البحث الصوتي غير متاح" "يتعذر إجراء مكالمة هاتفية نظرًا لأنه تم تعطيل تطبيق الهاتف." "البحث في جهات الاتصال" @@ -149,10 +154,9 @@ "%s من المكالمات الجديدة الفائتة" "لم تتم إضافة أية جهة اتصال إلى قائمة الاتصال السريع حتى الآن" "إضافة مفضلة" - "ليست لديك أية جهات اتصال حتى الآن" - "إضافة جهة اتصال" "المس الصورة للاطلاع على جميع الأرقام أو المس مع الاستمرار لإعادة الترتيب" "إزالة" + "تحديد الكل" "مكالمة فيديو" "إرسال رسالة" "تفاصيل المكالمة" @@ -221,11 +225,9 @@ "الأرقام المحظورة" "تم حظر %1$s." "حسابات الاتصال" - "تشغيل" "تعيين الأذونات" "لتمكين الاتصال السريع، شغِّل إذن جهات الاتصال." "للاطلاع على سجل المكالمات، شغِّل إذن الهاتف." - "للاطلاع على جهات الاتصال، شغِّل إذن جهات الاتصال." "للوصول إلى البريد الصوتي، شغِّل إذن الهاتف." "للبحث عن جهات الاتصال، عليك تشغيل أذونات جهات الاتصال." "لإجراء مكالمة، شغِّل إذن الهاتف." 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 62bc117ba3..b6681c9e2a 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 @@ "Davam edən zəngə qayıdın" "Zəng əlavə edin" "Gələn zənglər" + "Toplu əməliyyat rejiminə daxil olunur" + "Toplu əməliyyat rejimi tərk edilir" + "%1$s seçildi" + "%1$s seçilmədi" "Səsli məktubu oxudun" "%1$s adlı kontakta baxın" "Zəng %1$s" @@ -99,11 +103,13 @@ "Səsli poçt" "%s san" "%s dəq %s san" + "Qrup əməliyyatları rejimini ləğv edin" "səsli e-məktub" "səsli e-məktublar" "Bəli" "Xeyr" "Seçilmiş %1$s silinsin?" + "%1$s seçilib" @string/call_log_header_today "%1$s tarixində %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "SIM kartdan yüklənir..." "SIM kart kontaktları" - "Əlaqələr proqramı mövcud deyil" "Səsli axtarış mövcud deyil" "Telefon tətbiqi deaktiv edildiyinə görə telefon zəngi etmək mümkün deyil." "Kontakt axtarın" @@ -145,10 +150,9 @@ "%s yeni buraxılmış zəng" "Hələ sürətli zəng siyahınızda hec kim yoxdur" "Sevimlilərə əlavə edin" - "Hələ heç bir kontaktınız yoxdur" - "Kontakt əlavə edin" "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" "Yığışdır" + "Hamısını seçin" "Video zəng" "Mesaj göndərin" "Zəng detalları" @@ -213,11 +217,9 @@ "Bloklanmış nömrələr" "%1$s artıq bloklanıb." "Hesabların çağrılması" - "Aktiv edin" "İcazələri quraşdırın" "Sürətli yığımı aktivləşdirmək üçün, Kontakt icazələrini aktivləşdirin." "Çağrı jurnalınızı görmək üçün Telefon icazəsini aktivləşdirin." - "Kontaktlarınızı görmək üçün Kontakt icazəsini aktivləşdirin." "Səsli poçta daxil olmaq üçün, Telefon icazəsini aktivləşdirin." "Kontaktlarınızı axtarmaq üçün, Kontakt icazələrini aktiv edin." "Zəng etmək üçün, Telefon icazəsini aktivləşdirin." 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 9df729108a..40c0886c8e 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 @@ "Vrati se na poziv koji je u toku" "Dodaj poziv" "Dolazni pozivi" + "Ulazite u režim grupnih radnji" + "Izašli ste iz režima grupnih radnji" + "Izabrano je %1$s" + "Opozvan je izbor %1$s" "Puštanje govorne pošte" "Prikaži kontakt %1$s" "Pozovi %1$s" @@ -100,11 +104,13 @@ "Govorna pošta" "%s sek" "%s min %s sek" + "Otkažite režim grupnih radnji" "govornu poruku" "govorne poruke" "Da" "Ne" "Želite li da izbrišete izabranu(e) %1$s?" + "Izabranih: %1$s" @string/call_log_header_today "%1$s u %2$s" "%1$02d:%2$02d" @@ -117,7 +123,6 @@ "MEID" "Učitava se sa SIM kartice…" "Kontakti na SIM kartici" - "Nema dostupne aplikacije za kontakte" "Glasovna pretraga nije dostupna" "Nije moguće uputiti telefonski poziv jer je aplikacija Telefon onemogućena." "Pretraži kontakte" @@ -146,10 +151,9 @@ "Novih propuštenih poziva: %s" "Nemate nijedan kontakt na brzom biranju" "Dodaj omiljen kontakt" - "Još uvek nemate nijedan kontakt" - "Dodaj kontakt" "Dodirnite sliku da biste videli sve brojeve ili dodirnite i zadržite da biste im promenili raspored" "Ukloni" + "Izaberi sve" "Video poziv" "Pošalji poruku" "Detalji poziva" @@ -215,11 +219,9 @@ "Blokirani brojevi" "%1$s je već blokiran." "Nalozi za pozivanje" - "Uključi" "Podesi dozvole" "Da biste omogućili brzo biranje, uključite dozvolu za Kontakte." "Da biste videli evidenciju poziva, uključite dozvolu za Telefon." - "Da biste videli kontakte, uključite dozvolu za Kontakte." "Da biste pristupili govornoj pošti, uključite dozvolu za Telefon." "Da biste pretražili kontakte, uključite dozvole za Kontakte." "Da biste uputili poziv, uključite dozvolu za Telefon." 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 aac3df2bd1..f2ad3342b9 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 @@ "Звярнуцца да бягучага выкліку" "Дадаць выклік" "Уваходныя выклікі" + "Уваход у рэжым групавога дзеяння" + "Выхад з рэжыму групавога дзеяння" + "Выбрана: %1$s" + "Выбар скасаваны: %1$s" "Прайграць паведамленне галасавой пошты" "Прагледзець кантакт %1$s" "Выклікаць карыстальнiка %1$s" @@ -101,11 +105,13 @@ "Галасавая пошта" "%s с" "%s хв %s с" + "Скасаваць рэжым пакетных дзеянняў" "галасавая пошта" "галасавая пошта" "Так" "Не" "Выдаліць вылучанае: %1$s?" + "Выбрана: %1$s" @string/call_log_header_today "%1$s у %2$s" "%1$02d:%2$02d" @@ -118,7 +124,6 @@ "MEID" "Загрузка з SIM-карты..." "Кантакты SIM-карты" - "Праграмы для аперацый з кантактамі няма" "Галасавы пошук недаступны" "Немагчыма зрабіць выклік па тэлефоне, таму што праграма Тэлефон была адключана." "Пошук кантактаў" @@ -147,10 +152,9 @@ "Новых прапушчаных выклікаў: %s" "У вас пакуль нікога няма на хуткім наборы" "Дадаць улюбёны" - "У вас пакуль няма ніякіх кантактаў" - "Дадаць кантакт" "Дакраніцеся да відарыса, каб прагледзець усе нумары, або дакраніцеся і ўтрымлівайце, каб змяніць парадак" "Выдаліць" + "Выбраць усё" "Відэавыклік" "Адправiць паведамленне" "Падрабязнасці выкліку" @@ -217,11 +221,9 @@ "Заблакіраваныя нумары" "%1$s ужо заблакіраваны." "Уліковыя запісы для выклікаў" - "Уключыць" "Задаць дазволы" "Каб уключыць хуткі набор, уключыце дазвол для Кантактаў." "Каб прагледзець свой журнал выклікаў, уключыце дазволы Тэлефона." - "Каб бачыць свае кантакты, уключыце дазвол для Кантактаў." "Каб атрымаць доступ да галасавой пошты, уключыце дазвол для Тэлефона." "Каб шукаць свае кантакты, уключыце дазвол для Кантактаў." "Каб зрабіць выклік, уключыце дазвол для Тэлефона." 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 7bab71f3b0..8083f48281 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 @@ "Назад към текущото обаждане" "Добавяне на обаждане" "Вх. обаждания" + "Влизате в режима на групови действия" + "Излязохте от режима на групови действия" + "Избрахте %1$s" + "Премахнахте избора от %1$s" "Пускане на гласовата поща" "Преглед на контактa %1$s" "Обаждане на %1$s" @@ -99,11 +103,13 @@ "Гласова поща" "%s сек" "%s мин %s сек" + "Анулиране на режима на групови действия" "гласово съобщение" "гласови съобщения" "Да" "Не" "Избрахте %1$s – да се изтрие ли избраното?" + "Избрахте %1$s" @string/call_log_header_today "%1$s в %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Зарежда се от SIM карта..." "Контакти от SIM карта" - "Няма налично приложение за контакти" "Гласовото търсене не е налице" "Не може да се осъществи телефонно обаждане, защото приложението Телефон е деактивирано." "Търсене в контактите" @@ -145,10 +150,9 @@ "%s нови пропуснати обаждания" "Още нямате контакти за бързо набиране" "Добавяне на любим контакт" - "Още нямате контакти" - "Добавяне на контакт" "Докоснете изображението, за да видите всички номера, или го натиснете и задръжте за пренареждане" "Премахване" + "Избиране на всички" "Видеообаждане" "Изпращане на съобщение" "Подробности за обаждането" @@ -213,11 +217,9 @@ "Блокирани номера" "Номер %1$s вече е блокиран." "Профили за обаждане" - "Включване" "Задаване на разрешенията" "За да активирате бързото набиране, включете разрешението за Контакти." "За да видите списъка с обажданията си, включете разрешението за Телефон." - "За да видите контактите си, включете разрешението за Контакти." "За да осъществите достъп до гласовата си поща, включете разрешението за Телефон." "За да търсите в контактите си, включете разрешенията за тях." "За да извършите обаждане, включете разрешението за Телефон." 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 271247be3e..4d2d7cc1e4 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 @@ "প্রগতিতে থাকা কলে প্রত্যাবর্তন" "কল যোগ করুন" "ইনকামিং কলগুলি" + "বাল্ক অ্যাকশন মোডে প্রবেশ করা হচ্ছে" + "বাল্ক অ্যাকশন মোড ত্যাগ করুন" + "%1$s নির্বাচন করা হয়েছে" + "%1$s অনির্বাচন করা হয়েছে" "ভয়েসমেল প্লে করুন" "%1$s পরিচিতি দেখুন" "%1$s কে কল করুন" @@ -99,11 +103,13 @@ "ভয়েসমেল" "%s সেকেন্ড" "%s মিনিট %s সেকেন্ড" + "ব্যাচ অ্যাকশন মোড বাতিল করুন" "ভয়েসমেল" "ভয়েসমেলগুলি" "হ্যাঁ" "না" "নির্বাচিত %1$s মুছে ফেলতে চান?" + "%1$sটি নির্বাচিত" @string/call_log_header_today "%1$s তারিখে %2$s\'টায়" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "সিম কার্ড থেকে লোড করা হচ্ছে…" "সিম কার্ডের পরিচিতিগুলি" - "কোনো পরিচিতি অ্যাপ্লিকেশান উপলব্ধ নয়" "ভয়েস অনুসন্ধান অনুপলব্ধ" "কোনো ফোন কল করা যাবে না কারণ ফোন অ্যাপ্লিকেশানটি অক্ষম করা হয়েছে৷" "পরিচিতিগুলি খুঁজুন" @@ -145,10 +150,9 @@ "%sটি নতুন মিসড কল" "আপনার স্পীড ডায়ালে এখনও পর্যন্ত কেউ নেই" "একটি পছন্দসই যোগ করুন" - "আপনার এখনও পর্যন্ত কোনো পরিচিতি নেই" - "একটি পরিচিতি যোগ করুন" "সমস্ত নম্বর দেখতে ছবিতে স্পর্শ করুন বা রেকর্ড করতে স্পর্শ করে ধরে রাখুন" "সরান" + "সবগুলি নির্বাচন করুন" "ভিডিও কল" "একটি বার্তা পাঠান" "কলের বিশদ বিবরণ" @@ -213,11 +217,9 @@ "ব্লক করা নাম্বারগুলি" "%1$s ইতিমধ্যেই অববোধ করা রয়েছে৷" "কলিং অ্যাকাউন্টগুলি" - "চালু করুন" "অনুমতিগুলি সেট করুন" "স্পীড ডায়াল সক্ষম করতে, পরিচিতিগুলির অনুমতি চালু করুন।" "আপনার কল লগ দেখতে, ফোনের অনুমতি চালু করুন।" - "আপনার পরিচিতিগুলি দেখতে, পরিচিতিগুলির অনুমতি চালু করুন।" "আপনার ভয়েসমেল অ্যাক্সেস করতে, ফোনের অনুমতি চালু করুন।" "আপনার পরিচিতিগুলি অনুসন্ধান করতে, পরিচিতির অনুমতিগুলি চালু করুন।" "একটি কল করতে, ফোনের অনুমতি চালু করুন।" 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 92c9c14e0a..d8347723dc 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 @@ "Povratak na poziv u toku" "Dodaj poziv" "Dolazni pozivi" + "Ulazak u način rada za skupnu radnju" + "Napuštanje načina rada za skupnu radnju" + "Odabrano %1$s" + "Poništen odabir %1$s" "Pokretanje govorne pošte" "Prikaži kontakt %1$s" "Pozovi kontakt %1$s" @@ -100,11 +104,13 @@ "Govorna pošta" "%s sek." "%s min. %s sek." + "Otkaži način rada za grupnu radnju" "poruka govorne pošte" "poruke govorne pošte" "Da" "Ne" "Izbrisati izabranu/e %1$s?" + "Odabrano %1$s" @string/call_log_header_today "%1$s u %2$s" "%1$02d:%2$02d" @@ -117,7 +123,6 @@ "MEID" "Učitavanje sa SIM kartice…" "Kontakti sa SIM kartice" - "Nije dostupna nijedna aplikacija za kontakte" "Glasovna pretraga nije dostupna" "Nije moguće uputiti poziv jer je aplikacija Telefon onemogućena." "Traži kontakte" @@ -146,10 +151,9 @@ "Broj novih propuštenih poziva: %s" "Nemate nikog na brzom biranju" "Dodaj u favorite" - "Još nemate nijedan kontakt" - "Dodaj kontakt" "Dodirnite sliku da vidite sve brojeve ili dodirnite i držite da promijenite raspored." "Ukloni" + "Izaberi sve" "Videopoziv" "Pošalji poruku" "Detalji o pozivu" @@ -215,11 +219,9 @@ "Blokirani brojevi" "%1$s je već blokiran." "Računi za pozivanje" - "Uključi" "Postavi dozvole" "Da omogućite brzo biranje, uključite dozvolu za Kontakte." "Da vidite popis poziva, uključite dozvolu za Telefon." - "Da vidite kontakte, uključite dozvolu za Kontakte." "Da pristupite govornoj pošti,uključite dozvolu za telefon." "Da pretražujete kontakte, uključite dozvole za Kontakte." "Da uputite poziv, uključite dozvolu za Telefon." 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 fa04dd980a..7b12e0dbd3 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 @@ "Torna a la trucada en curs" "Afegeix una trucada" "Trucades entrants" + "S\'està accedint al mode d\'acció massiva" + "S\'ha sortit del mode d\'acció massiva" + "S\'ha seleccionat %1$s" + "S\'ha desseleccionat %1$s" "Reprodueix el missatge de veu" "Visualitza el contacte %1$s" "Truca a %1$s" @@ -99,11 +103,13 @@ "Bústia de veu" "%s s" "%s min %s s" + "Cancel·la el mode d\'accions en lot" "missatge de veu" "missatges de veu" "Sí" "No" "Vols suprimir l\'element o elements seleccionats (%1$s)?" + "%1$s seleccionades" @string/call_log_header_today "%1$s a les %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "S\'està carregant des de la targeta SIM..." "Contactes de la targeta SIM" - "No hi ha cap contacte disponible." "La cerca per veu no està disponible." "No es pot fer una trucada telefònica perquè s\'ha desactivat l\'aplicació de telèfon." "Cerca als contactes" @@ -145,10 +150,9 @@ "%s trucades perdudes noves" "Encara no tens cap contacte al marcatge ràpid" "Afegeix un preferit" - "Encara no tens cap contacte" - "Afegeix un contacte" "Toca la imatge per veure\'n tots els números o bé mantén-la premuda per canviar-ne l\'ordre" "Suprimeix" + "Selecciona-ho tot" "Videotrucada" "Envia un missatge" "Detalls de la trucada" @@ -213,11 +217,9 @@ "Números bloquejats" "%1$s ja està bloquejat." "Comptes de trucades" - "Activa" "Defineix els permisos" "Activa el permís Contactes per activar el marcatge ràpid." "Activa el permís Telèfon per veure el teu registre de trucades." - "Activa el permís Contactes per veure els teus contactes." "Activa el permís Telèfon per accedir a la bústia de veu." "Per cercar els teus contactes, activa els permisos de Contactes." "Activa el permís Telèfon per fer una trucada." 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 5a3e42913f..bbcb35847e 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 @@ "Návrat k probíhajícímu hovoru" "Přidat hovor" "Příchozí volání" + "Vstupování do režimu hromadných akcí" + "Opustili jste režim hromadných akcí" + "Položka %1$s je vybrána" + "Položka %1$s není vybrána" "Přehrát hlasovou schránku" "Zobrazit kontakt %1$s" "Volat kontakt %1$s" @@ -101,11 +105,13 @@ "Hlasová schránka" "%s s" "%s min %s s" + "Zrušit režim hromadných akcí" "vybranou hlasovou zprávu" "vybrané hlasové zprávy" "Ano" "Ne" "Smazat %1$s?" + "Vybráno: %1$s" @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -118,7 +124,6 @@ "MEID" "Načítání ze SIM karty..." "Kontakty na SIM kartě" - "Není k dispozici žádná aplikace pro práci s kontakty." "Hlasové vyhledávání není k dispozici." "Telefonický hovor nelze uskutečnit, protože aplikace Telefon byla zakázána." "Vyhledat kontakty" @@ -147,10 +152,9 @@ "Nové zmeškané hovory: %s" "V rychlém vytáčení zatím nemáte žádný kontakt." "Přidat oblíbený kontakt" - "Zatím nemáte žádné kontakty" - "Přidat kontakt" "Klepnutím na obrázek zobrazíte všechna čísla. Podržením můžete změnit pořadí." "Odstranit" + "Vybrat všechny" "Videohovor" "Odeslat zprávu" "Podrobnosti hovoru" @@ -217,11 +221,9 @@ "Blokovaná čísla" "Číslo %1$s je již blokováno." "Účty pro volání" - "Zapnout" "Nastavit oprávnění" "Chcete-li povolit rychlé vytáčení, aktivujte oprávnění Kontakty." "Chcete-li zobrazit seznam hovorů, aktivujte oprávnění Telefon." - "Chcete-li zobrazit kontakty, aktivujte oprávnění Kontakty." "Chcete-li přejít do hlasové schránky, aktivujte oprávnění Telefon." "Chcete-li vyhledat kontakty, zapněte oprávnění Kontakty." "Chcete-li uskutečnit hovor, aktivujte oprávnění Telefon." 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 42aa663782..31cf8e33d1 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 @@ "Vend tilbage til igangværende opkald" "Tilføj opkald" "Indgående opkald" + "Massehandlingstilstanden startes" + "Massehandlingstilstanden blev afsluttet" + "Vælg %1$s" + "Fravælg %1$s" "Afspil telefonsvarerbesked" "Vis kontaktpersonen %1$s" "Ring til %1$s" @@ -99,11 +103,13 @@ "Telefonsvarer" "%s sek." "%s min. %s sek." + "Annuller massehandlingstilstand" "talebesked" "talebeskeder" "Ja" "Nej" "Vil du slette de valgte %1$s?" + "%1$s er valgt" @string/call_log_header_today "%1$s kl. %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Indlæser fra SIM-kort ..." "Kontakter på SIM-kort" - "Der er ingen app til kontaktpersoner" "Talesøgning er ikke tilgængelig" "Det er ikke muligt at foretage et telefonopkald, fordi applikationen Telefon er deaktiveret." "Søg i kontakter" @@ -145,10 +150,9 @@ "%s nye ubesvarede opkald" "Der er endnu ingen kontaktpersoner i Hurtigopkald" "Angiv en kontaktperson som foretrukken" - "Du har endnu ikke nogen kontaktpersoner" - "Tilføj en kontaktperson" "Tryk på billedet for at se alle numre, eller tryk og hold nede på billedet for at omarrangere" "Fjern" + "Vælg alt" "Videoopkald" "Send en sms-besked" "Opkaldsinfo" @@ -213,11 +217,9 @@ "Blokerede telefonnumre" "%1$s er allerede blokeret." "Opkaldskonti" - "Aktivér" "Angiv tilladelser" "Slå tilladelsen Kontaktpersoner til for at aktivere hurtigopkald." "Slå tilladelsen Telefon til for at se din opkaldsliste." - "Slå tilladelsen Kontaktpersoner til for at se dine kontaktpersoner." "Slå tilladelsen Telefon til for at få adgang til din telefonsvarer," "Hvis du vil søge i dine kontaktpersoner, skal du slå tilladelserne Kontaktpersoner til." "Slå tilladelsen Telefon til for at foretage et opkald." 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 5653e0f12f..c1f644119d 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 @@ "Zurück zum aktuellen Anruf" "Anruf hinzufügen" "Eingehende Anrufe" + "Es wird in den Modus für Bulk-Aktionen gewechselt" + "Der Modus für Bulk-Aktionen wurde verlassen" + "%1$s ausgewählt" + "Auswahl für %1$s aufgehoben" "Mailbox abhören" "Kontakt %1$s anzeigen" "%1$s anrufen" @@ -99,11 +103,13 @@ "Mailbox" "%s s" "%s min %s s" + "Modus für Batch-Aktionen abbrechen" "Mailboxnachricht" "Mailboxnachrichten" "Ja" "Nein" "Ausgewählte %1$s löschen?" + "%1$s ausgewählt" @string/call_log_header_today "%1$s um %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Ladevorgang von SIM-Karte läuft..." "Kontakte auf SIM-Karte" - "Keine Kontakte-App verfügbar" "Sprachsuche nicht verfügbar" "Es kann kein Anruf getätigt werden, da die App \"Telefon\" deaktiviert wurde." "In Kontakten suchen" @@ -145,10 +150,9 @@ "%s neue entgangene Anrufe" "Du hast für noch niemanden eine Kurzwahl festgelegt" "Favoriten hinzufügen" - "Du hast noch keine Kontakte." - "Kontakt hinzufügen" "Tippe auf das Bild, um alle Nummern zu sehen, oder halte das Bild länger gedrückt, um sie neu anzuordnen" "Entfernen" + "Alle auswählen" "Videoanruf" "SMS senden" "Anrufdetails" @@ -213,11 +217,9 @@ "Blockierte Nummern" "%1$s ist bereits blockiert." "Anrufkonten" - "Aktivieren" "Berechtigungen festlegen" "Aktiviere die Berechtigung \"Kontakte\", um die Kurzwahlfunktion zu verwenden." "Aktiviere die Berechtigung \"Telefon\", um dein Anrufprotokoll abzurufen." - "Aktiviere die Berechtigung \"Kontakte\", um deine Kontakte abzurufen." "Aktiviere die Berechtigung \"Telefon\", um auf deine Mailbox zuzugreifen." "Aktiviere die Berechtigungen \"Kontakte\", um deine Kontakte zu suchen." "Aktiviere die Berechtigung \"Telefon\", um einen Anruf zu tätigen." 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 847f60a26a..c4ba02d0f1 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 @@ "Επιστροφή στην κλήση που βρίσκεται σε εξέλιξη" "Προσθήκη κλήσης" "Εισερχόμενες κλήσεις" + "Εισαγωγή στη λειτουργία μαζικών ενεργειών" + "Αποχώρηση από τη λειτουργία μαζικών ενεργειών" + "Έγινε επιλογή %1$s" + "Καταργήθηκε η επιλογή %1$s" "Αναπαραγωγή μηνύματος αυτόματου τηλεφωνητή" "Προβολή επαφής %1$s" "Κλήση %1$s" @@ -99,11 +103,13 @@ "Αυτόματος τηλεφωνητής" "%s δευτερόλεπτα" "%s λεπτά %s δευτερόλεπτα" + "Ακύρωση λειτουργίας μαζικών ενεργειών" "φωνητικού μηνύματος αυτόματου τηλεφωνητή" "φωνητικών μηνυμάτων αυτόματου τηλεφωνητή" "Ναι" "Όχι" "Διαγραφή επιλεγμ. %1$s;" + "Έχουν επιλεγεί %1$s" @string/call_log_header_today "%1$s στις %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Φόρτωση από κάρτα SIM…" "Επαφές στην κάρτα SIM" - "Δεν υπάρχουν διαθέσιμες εφαρμογές επαφών" "Η φωνητική αναζήτηση δεν είναι διαθέσιμη" "Δεν είναι δυνατή η πραγματοποίηση τηλεφωνικής κλήσης επειδή η εφαρμογή \"Τηλέφωνο\" έχει απενεργοποιηθεί." "Αναζήτηση επαφών" @@ -145,10 +150,9 @@ "%s νέες αναπάντητες κλήσεις" "Δεν έχετε ορίσει ακόμη κάποια επαφή στις ταχείες κλήσεις" "Προσθέστε ένα αγαπημένο" - "Δεν έχετε επαφές ακόμη" - "Προσθήκη επαφής" "Αγγίξτε την εικόνα για να δείτε όλους τους αριθμούς ή αγγίξτε παρατεταμένα για αναδιάταξη" "Κατάργηση" + "Επιλογή όλων" "Βιντεοκλήση" "Αποστολή μηνύματος" "Λεπτομέρειες κλήσης" @@ -213,11 +217,9 @@ "Αποκλεισμένοι αριθμοί" "Ο αριθμός %1$s αποκλείστηκε ήδη." "Λογαριασμοί κλήσης" - "Ενεργοποίηση" "Ορισμός αδειών" "Για να ενεργοποιήσετε την ταχεία κλήση, ενεργοποιήστε την άδεια επαφών." "Για να δείτε το αρχείο καταγραφής κλήσεών σας, ενεργοποιήστε την άδεια τηλεφώνου." - "Για να δείτε τις επαφές σας, ενεργοποιήστε την άδεια επαφών." "Για να αποκτήσετε πρόσβαση στον τηλεφωνητή σας, ενεργοποιήστε την άδεια τηλεφώνου." "Για να κάνετε αναζήτηση στις επαφές σας, ενεργοποιήστε τις άδειες \"Επαφές\"." "Για να πραγματοποιήσετε μια κλήση, ενεργοποιήστε την άδεια τηλεφώνου." 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 28eea8b4dc..cb7e912c7b 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 @@ "Return to call in progress" "Add call" "Incoming calls" + "Entering bulk action mode" + "Left bulk action mode" + "Selected %1$s" + "Unselected %1$s" "Play voicemail" "View contact %1$s" "Call %1$s" @@ -99,11 +103,13 @@ "Voicemail" "%s sec" "%s min %s sec" + "Cancel batch actions mode" "voicemail" "voicemails" "Yes" "No" "Delete selected %1$s?" + "%1$s selected" @string/call_log_header_today "%1$s at %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Loading from SIM card…" "SIM card contacts" - "No contacts app available" "Voice search not available" "Cannot make a phone call because the Phone application has been disabled." "Search contacts" @@ -145,10 +150,9 @@ "%s new missed calls" "No one is on your speed dial yet" "Add a favourite" - "You don\'t have any contacts yet" - "Add a contact" "Touch image to see all numbers, or touch & hold to re-arrange" "Remove" + "Select all" "Video call" "Send a message" "Call details" @@ -213,11 +217,9 @@ "Blocked numbers" "%1$s is already blocked." "Calling accounts" - "Turn on" "Set permissions" "To enable speed dial, turn on the Contacts permission." "To see your call log, turn on the Phone permission." - "To see your contacts, turn on the Contacts permission." "To access your voicemail, turn on the Phone permission." "To search your contacts, turn on the Contacts permissions." "To place a call, turn on the Phone permission." 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 28eea8b4dc..cb7e912c7b 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 @@ "Return to call in progress" "Add call" "Incoming calls" + "Entering bulk action mode" + "Left bulk action mode" + "Selected %1$s" + "Unselected %1$s" "Play voicemail" "View contact %1$s" "Call %1$s" @@ -99,11 +103,13 @@ "Voicemail" "%s sec" "%s min %s sec" + "Cancel batch actions mode" "voicemail" "voicemails" "Yes" "No" "Delete selected %1$s?" + "%1$s selected" @string/call_log_header_today "%1$s at %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Loading from SIM card…" "SIM card contacts" - "No contacts app available" "Voice search not available" "Cannot make a phone call because the Phone application has been disabled." "Search contacts" @@ -145,10 +150,9 @@ "%s new missed calls" "No one is on your speed dial yet" "Add a favourite" - "You don\'t have any contacts yet" - "Add a contact" "Touch image to see all numbers, or touch & hold to re-arrange" "Remove" + "Select all" "Video call" "Send a message" "Call details" @@ -213,11 +217,9 @@ "Blocked numbers" "%1$s is already blocked." "Calling accounts" - "Turn on" "Set permissions" "To enable speed dial, turn on the Contacts permission." "To see your call log, turn on the Phone permission." - "To see your contacts, turn on the Contacts permission." "To access your voicemail, turn on the Phone permission." "To search your contacts, turn on the Contacts permissions." "To place a call, turn on the Phone permission." 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 28eea8b4dc..cb7e912c7b 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 @@ "Return to call in progress" "Add call" "Incoming calls" + "Entering bulk action mode" + "Left bulk action mode" + "Selected %1$s" + "Unselected %1$s" "Play voicemail" "View contact %1$s" "Call %1$s" @@ -99,11 +103,13 @@ "Voicemail" "%s sec" "%s min %s sec" + "Cancel batch actions mode" "voicemail" "voicemails" "Yes" "No" "Delete selected %1$s?" + "%1$s selected" @string/call_log_header_today "%1$s at %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Loading from SIM card…" "SIM card contacts" - "No contacts app available" "Voice search not available" "Cannot make a phone call because the Phone application has been disabled." "Search contacts" @@ -145,10 +150,9 @@ "%s new missed calls" "No one is on your speed dial yet" "Add a favourite" - "You don\'t have any contacts yet" - "Add a contact" "Touch image to see all numbers, or touch & hold to re-arrange" "Remove" + "Select all" "Video call" "Send a message" "Call details" @@ -213,11 +217,9 @@ "Blocked numbers" "%1$s is already blocked." "Calling accounts" - "Turn on" "Set permissions" "To enable speed dial, turn on the Contacts permission." "To see your call log, turn on the Phone permission." - "To see your contacts, turn on the Contacts permission." "To access your voicemail, turn on the Phone permission." "To search your contacts, turn on the Contacts permissions." "To place a call, turn on the Phone permission." 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 9d80bc9e25..79d607fc78 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 @@ "Regresar a la llamada en curso" "Agregar llamada" "Llamadas entrantes" + "Entrando al modo de acción masiva" + "Saliendo del modo de acción masiva" + "Se seleccionó %1$s" + "Se anuló la selección de %1$s" "Reproducir mensaje de voz" "Ver contacto %1$s" "Llamar a %1$s" @@ -99,11 +103,13 @@ "Correo de voz" "%s s" "%s min %s s" + "Cancelar el modo de acción masiva" "el mensaje de voz" "los mensajes de voz" "Sí" "No" "¿Deseas borrar %1$s que seleccionaste?" + "%1$s seleccionada(s)" @string/call_log_header_today "El %1$s a la hora %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Cargando desde tarjeta SIM..." "Contactos de tarjeta SIM" - "No hay aplicaciones de contactos disponibles." "Búsqueda por voz no disponible" "No se pueden realizar llamadas porque se inhabilitó la aplicación Teléfono." "Buscar contactos" @@ -145,10 +150,9 @@ "%s llamadas perdidas nuevas" "Aún no tienes contactos en la opción de marcado rápido" "Agregar un favorito" - "Aún no tienes contactos" - "Agregar un contacto" "Toca la imagen para ver todos los números o mantenla presionada para reorganizar" "Eliminar" + "Seleccionar todo" "Videollamada" "Enviar un mensaje" "Detalles de la llamada" @@ -213,11 +217,9 @@ "Números bloqueados" "%1$s ya está bloqueado." "Cuentas telefónicas" - "Activar" "Configurar permisos" "Para habilitar el marcado rápido, activa el permiso Contactos." "Para ver el registro de llamadas, activa el permiso Teléfono." - "Para ver los contactos, activa el permiso Contactos." "Para acceder al buzón de voz, activa el permiso Teléfono." "Para buscar contactos, activa el permiso Contactos." "Para realizar una llamada, activa el permiso Teléfono." 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 b7383d9701..170edc8ca6 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 @@ "Volver a la llamada" "Añadir llamada" "Llamadas entrantes" + "Entrando en el modo de acción en bloque" + "Se ha salido del modo de acción en bloque" + "%1$s seleccionado" + "Selección de %1$s anulada" "Reproducir mensaje de voz" "Ver contacto %1$s" "Llamar a %1$s" @@ -99,11 +103,13 @@ "Buzón de voz" "%s s" "%s min y %s s" + "Cancelar el modo de acciones en lote" "mensaje de voz" "mensajes de voz" "Sí" "No" "¿Eliminar la selección de %1$s?" + "Se han seleccionado %1$s" @string/call_log_header_today "%1$s a las %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Cargando desde tarjeta SIM…" "Contactos de tarjeta SIM" - "No hay aplicaciones de contactos disponibles" "La búsqueda por voz no está disponible" "No se puede hacer llamadas porque se ha inhabilitado la aplicación Teléfono." "Buscar contactos" @@ -145,10 +150,9 @@ "%s llamadas perdidas nuevas" "Aún no tienes contactos en la función de marcación rápida" "Añadir un favorito" - "Aún no tienes contactos" - "Añadir un contacto" "Tocar la imagen para ver todos los números o mantenerla pulsada para cambiar el orden" "Eliminar" + "Seleccionar todo" "Videollamada" "Enviar un mensaje" "Detalles de la llamada" @@ -213,11 +217,9 @@ "Números bloqueados" "%1$s ya está bloqueado." "Cuentas de llamadas" - "Activar" "Establecer permisos" "Para habilitar la marcación rápida, activa el permiso la aplicación Contactos." "Para ver el registro de llamadas, activa el permiso de la aplicación Teléfono." - "Para ver tus contactos, activa el permiso de la aplicación Contactos." "Para acceder al buzón de voz, activa el permiso de la aplicación Teléfono." "Para poder buscar tus contactos, activa los permisos de contactos." "Para hacer una llamada, activa el permiso de la aplicación Teléfono." 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 d4e4faa59c..e32b104038 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 @@ "Tagasi käimasolevale kõnele" "Lisa kõne" "Sissetulevad kõned" + "Sisenemine hulgitoimingute režiimi" + "Lahkumine hulgitoimingute režiimist" + "%1$s on valitud" + "%1$s on valimata" "Esita kõnepostisõnum" "Kuva kontakt %1$s" "Helista kasutajale %1$s" @@ -99,11 +103,13 @@ "Kõnepost" "%s s" "%s min %s s" + "Mitme toimigu režiimi tühistamine" "kõnepostisõnum" "kõnepostisõnumid" "Jah" "Ei" "Kas kustutada valitud kõnepostisõnumid %1$s?" + "%1$s on valitud" @string/call_log_header_today "%1$s kell %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Laadimine SIM-kaardilt ..." "SIM-kaardi kontaktid" - "Kontaktide rakendus pole saadaval" "Häälotsing ei ole saadaval" "Helistada ei saa, sest telefonirakendus on keelatud." "Otsige kontakte" @@ -145,10 +150,9 @@ "%s uus/uut vastamata kõne(t)" "Te pole veel kedagi kiirvalimisse lisanud" "Lisa lemmik" - "Teil pole veel kontakte" - "Lisa kontakt" "Puudutage kujutist kõigi numbrite nägemiseks või puudutage pikalt järjestuse muutmiseks" "Eemalda" + "Vali kõik" "Videokõne" "Saada sõnum" "Kõne üksikasjad" @@ -213,11 +217,9 @@ "Blokeeritud numbrid" "%1$s on juba blokeeritud." "Helistamiskontod" - "Lülita sisse" "Määra load" "Kiirvalimise lubamiseks lülitage sisse kontaktiluba." "Kõnelogi vaatamiseks lülitage sisse telefoniluba." - "Kontaktide vaatamiseks lülitage sisse kontaktiluba." "Kõnepostile juurdepääsemiseks lülitage sisse telefoniluba." "Kontaktide otsimiseks lülitage sisse kontaktiload." "Helistamiseks lülitage sisse telefoniluba." 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 95f4621a49..57ef67d883 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 @@ "Itzuli abian den deira" "Gehitu deia" "Sarrerako deiak" + "Ekintzak multzoka gauzatzeko modua aktibatzen" + "Ekintzak multzoka gauzatzeko modua desaktibatu da" + "%1$s hautatu da" + "%1$s desautatu da" "Erreproduzitu erantzungailuko ahots-mezuak" "Ikusi %1$s kontaktua" "Deitu %1$s erabiltzaileari" @@ -99,11 +103,13 @@ "Erantzungailua" "%s s" "%s min %s s" + "Utzi bertan behera ekintzak multzoka gauzatzeko modua" "ahots-mezua" "ahots-mezuak" "Bai" "Ez" "Hautatutako %1$s ezabatu?" + "%1$s hautatu dira" @string/call_log_header_today "%1$s (%2$s)" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "SIM txarteletik kargatzen…" "SIM txarteleko kontaktuak" - "Ez dago kontaktuen aplikaziorik erabilgarri" "Ahozko bilaketa ez dago erabilgarri" "Ezin da telefono-deirik egin Telefonoa aplikazioa desgaitu egin delako." "Bilatu kontaktuetan" @@ -145,10 +150,9 @@ "%s dei galdu berri" "Ez duzu inor markatze bizkorrean oraindik" "Gehitu gogokoak" - "Ez duzu kontakturik oraindik" - "Gehitu kontaktua" "Ukitu irudia zenbaki guztiak ikusteko, edo eduki ezazu sakatuta berrantolatzeko" "Kendu" + "Hautatu guztiak" "Bideo-deia" "Bidali mezua" "Deiaren xehetasunak" @@ -213,11 +217,9 @@ "Blokeatutako zenbakiak" "%1$s blokeatuta dago dagoeneko." "Deiak egiteko kontuak" - "Aktibatu" "Ezarri baimenak" "Markatze bizkorra gaitzeko, aktibatu Kontaktuak erabiltzeko baimena." "Deien erregistroa ikusteko, aktibatu Telefonoa erabiltzeko baimena." - "Kontaktuak ikusteko, aktibatu Kontaktuak erabiltzeko baimena." "Erantzungailuan sartzeko, aktibatu Telefonoa erabiltzeko baimena." "Kontaktuak bilatzeko, aktibatu kontaktuak atzitzeko baimenak." "Deiak egiteko, aktibatu Telefonoa erabiltzeko baimena." 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 9c8c01b64a..eadb0dcb7a 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 @@ "برگشت به تماس درحال انجام" "افزودن تماس" "تماس‌های ورودی" + "درحال ورود به حالت اقدام انبوه" + "خروج از حالت اقدام انبوه" + "%1$s انتخاب شد" + "%1$s از حالت انتخاب خارج شد" "پخش پست صوتی" "مشاهده مخاطب %1$s" "تماس با %1$s" @@ -99,11 +103,13 @@ "پست صوتی" "%s ثانیه" "%s دقیقه %s ثانیه" + "لغو حالت اقدام‌ دسته‌ای" "پست صوتی" "پست‌های صوتی" "بله" "نه" "%1$s انتخاب‌شده حذف شود؟" + "%1$s مورد انتخاب شد" @string/call_log_header_today "%1$s ساعت %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "در حال بارگیری سیم کارت..." "مخاطبین سیم کارت" - "هیچ برنامه مخاطبی در دسترس نیست" "جستجوی گفتاری در دسترس نیست" "برقراری تماس تلفنی ممکن نیست، زیرا برنامه تلفن غیرفعال شده است." "جستجوی مخاطبین" @@ -145,10 +150,9 @@ "%s تماس‌ بی‌پاسخ جدید" "هنوز کسی در فهرست شماره‌گیری سریع شما نیست" "افزودن مورد دلخواه" - "هنوز هیچ مخاطبی ندارید" - "افزودن مخاطب" "برای مشاهده همه شماره‌ها، تصویر را لمس کنید، یا برای ترتیب مجدد، لمس کنید و نگه‌دارید" "حذف" + "انتخاب همه" "تماس ویدئویی" "ارسال پیام" "جزئیات تماس" @@ -213,11 +217,9 @@ "شماره‌های مسدود‌شده" "%1$s درحال‌حاضر مسدود شده است." "حساب‌های تماس" - "روشن کردن" "تنظیم مجوزها" "برای فعال کردن شماره‌گیری سریع، مجوز «مخاطبین» را روشن کنید." "برای دیدن گزارش تماستان، مجوز «تلفن» را روشن کنید." - "برای دیدن مخاطبینتان، مجوز «مخاطبین» را روشن کنید." "برای دسترسی به پست صوتی‌تان، مجوز «تلفن» را روشن کنید." "برای جستجوی مخاطبینتان، مجوزهای مخاطبین را روشن کنید." "برای برقراری تماس، مجوز «تلفن» را روشن کنید." 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 c5a103d48f..9510959088 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 @@ "Palaa käynnissä olevaan puheluun" "Lisää puhelu" "Saapuvat puhelut" + "Siirrytään joukkotoimintotilaan." + "Poistuttiin joukkotoimintotilasta." + "%1$s valittiin." + "%1$s ei ole enää valittuna." "Toista vastaajaviesti" "Näytä yhteystieto %1$s" "Soita: %1$s" @@ -99,11 +103,13 @@ "Vastaaja" "%s s" "%s min %s s" + "Peruuta joukkotoimintotila." "vastaajaviesti" "vastaajaviestit" "Kyllä" "Ei" "Poistetaanko %1$s?" + "%1$s valittu" @string/call_log_header_today "%1$s klo %2$s" "%1$02d.%2$02d" @@ -116,7 +122,6 @@ "MEID" "Ladataan SIM-kortilta…" "SIM-kortin yhteystiedot" - "Ei käytettävissä olevaa yhteystietosovellusta" "Puhehaku ei ole käytettävissä" "Puhelua ei voi soittaa, koska Puhelin-sovellus on poistettu käytöstä." "Hae yhteystiedoista" @@ -145,10 +150,9 @@ "%s uutta vastaamatonta puhelua" "Pikavalinnassa ei ole vielä yhtään yhteystietoa." "Lisää suosikki" - "Sinulla ei ole yhteystietoja." - "Lisää yhteystieto" "Katso kaikki numerot koskettamalla kuvaa tai järjestele tietoja koskettamalla kuvaa pitkään." "Poista" + "Valitse kaikki" "Videopuhelu" "Lähetä viesti" "Puhelun tiedot" @@ -213,11 +217,9 @@ "Estetyt numerot" "%1$s on jo estetty." "Puhelutilit" - "Ota käyttöön" "Määritä käyttöoikeudet" "Jos haluat käyttää pikavalintaa, ota Yhteystiedot-käyttöoikeus käyttöön." "Jos haluat katsella puhelulokiasi, ota Puhelin-käyttöoikeus käyttöön." - "Jos haluat katsella yhteystietojasi, ota Yhteystiedot-käyttöoikeus käyttöön." "Jos haluat käyttää puhelinvastaajaa, ota Puhelin-käyttöoikeus käyttöön." "Jos haluat hakea kontaktejasi, ota käyttöön kontaktien käyttöoikeudet." "Jos haluat soittaa puheluja, ota Puhelin-käyttöoikeus käyttöön." 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 d557d7442d..6aa285c501 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 @@ "Reprendre l\'appel en cours" "Autre appel" "Appels entrants" + "Entrée du mode d\'action groupée en cours…" + "Mode d\'action groupée quitté" + "Sélection : %1$s" + "Désélection : %1$s" "Écouter le message vocal" "Afficher le contact %1$s" "Appeler %1$s" @@ -99,11 +103,13 @@ "Messagerie vocale" "%s s" "%s min et %s sec" + "Annuler le mode d\'action par lots" "message vocal" "messages vocaux" "Oui" "Non" "Supprimer la sélection (%1$s)?" + "%1$s sélection(s)" @string/call_log_header_today "%1$s à %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Chargement depuis la carte SIM..." "Contacts de carte SIM" - "Aucune application de gestion des contacts n\'est disponible" "Recherche vocale non disponible" "Impossible d\'effectuer un appel téléphonique, car l\'application Téléphone a été désactivée." "Rechercher des contacts" @@ -145,10 +150,9 @@ "%s nouveaux appels manqués" "Aucun contact ne figure dans vos numéros de composition abrégée" "Ajouter un favori" - "Vous n\'avez pas encore de contacts" - "Ajouter un contact" "Touchez l\'image pour afficher tous les numéros, ou maintenez le doigt dessus pour les réorganiser" "Supprimer" + "Tout sélectionner" "Appel vidéo" "Envoyer un message" "Détails de l\'appel" @@ -213,11 +217,9 @@ "Numéros bloqués" "Le numéro %1$s est déjà bloqué." "Comptes d\'appel" - "Activer" "Définir les autorisations" "Pour activer la composition abrégée, activez l\'autorisation Contacts." "Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone." - "Pour consulter vos contacts, activez l\'autorisation Contacts." "Pour accéder à votre messagerie vocale, activez l\'autorisation Téléphone." "Pour rechercher vos contacts et les lieux à proximité, activez les autorisations Contacts." "Pour faire un appel, activez l\'autorisation Téléphone." 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 d8a59395be..f539d2e550 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 @@ "Reprendre l\'appel en cours" "Autre appel" "Appels entrants" + "Activation du mode d\'action groupée" + "Désactivation du mode d\'action groupée" + "%1$s sélectionné" + "%1$s désélectionné" "Écouter le message vocal" "Afficher le contact %1$s" "Appeler %1$s" @@ -99,11 +103,13 @@ "Messagerie vocale" "%s secondes" "%s min et %s s" + "Annuler le mode d\'actions groupées" "message vocal" "messages vocaux" "Oui" "Non" "Supprimer les messages vocaux sélectionnés (%1$s) ?" + "%1$s sélectionnés" @string/call_log_header_today "%1$s à %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Chargement depuis la carte SIM..." "Contacts de carte SIM" - "Aucune application de gestion des contacts n\'est disponible." "Recherche vocale non disponible" "Impossible d\'effectuer un appel téléphonique, car l\'application Téléphone a été désactivée." "Rech. des contacts" @@ -145,10 +150,9 @@ "Nouveaux appels manqués : %s" "Aucun contact pour la numérotation abrégée" "Ajouter un favori" - "Vous n\'avez pas encore de contacts." - "Ajouter un contact" "Appuyer sur l\'image pour afficher tous les numéros, ou appuyer dessus de manière prolongée pour réorganiser ces derniers" "Supprimer" + "Tout sélectionner" "Appel vidéo" "Envoyer un message" "Informations sur l\'appel" @@ -213,11 +217,9 @@ "Numéros bloqués" "Le numéro \"%1$s\" est déjà bloqué." "Comptes téléphoniques" - "Activer" "Définir les autorisations" "Pour activer la numérotation abrégée, activez l\'autorisation Contacts." "Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone." - "Pour consulter vos contacts, activez l\'autorisation Contacts." "Pour accéder à votre messagerie vocale, activez l\'autorisation Téléphone." "Pour rechercher vos contacts, activez l\'autorisation Contacts." "Pour passer un appel, activez l\'autorisation Téléphone." 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 33b55a7402..ca31c5e470 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 @@ "Volver á chamada en curso" "Engadir chamada" "Chamadas entrantes" + "Entrando no modo de acción masiva" + "Saíu do modo de acción masiva" + "Seleccionouse: %1$s" + "Anulouse a selección de: %1$s" "Reproducir correo de voz" "Ver contacto %1$s" "Chamar a %1$s" @@ -99,11 +103,13 @@ "Correo de voz" "%s s" "%s min %s s" + "Cancela o modo de accións en lote" "correo de voz" "correos de voz" "Si" "Non" "Queres eliminar a selección (%1$s)?" + "Cantidade seleccionada: %1$s" @string/call_log_header_today "%1$s ás %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Cargando da tarxeta SIM..." "Contactos da tarxeta SIM" - "Non hai aplicacións de contactos dispoñibles" "Busca por voz non dispoñible" "Non se pode facer unha chamada telefónica porque se desactivou a aplicación de teléfono." "Buscar contactos" @@ -145,10 +150,9 @@ "%s chamadas perdidas novas" "Aínda non tes ningún contacto na marcación directa" "Engade un favorito para a marcación directa" - "Aínda non tes contactos" - "Engade un contacto" "Toca a imaxe para ver todos os números ou mantena premida para reordenalos" "Eliminar" + "Seleccionar todos" "Videochamada" "Enviar unha mensaxe" "Detalles da chamada" @@ -213,11 +217,9 @@ "Números bloqueados" "O %1$s xa está bloqueado." "Contas de chamadas" - "Activar" "Establecer permisos" "Para activar a marcación rápida, activa o permiso de Contactos." "Para ver o teu rexistro de chamadas, activa o permiso de Teléfono." - "Para ver os teus contactos, activa o permiso de Contactos." "Para acceder ao correo de voz, activa o permiso de Teléfono." "Para buscar os teus contactos, activa os permisos de Contactos." "Para facer unha chamada, activa o permiso de Teléfono." 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 1df18269ee..fbe4d0aaab 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 @@ "કૉલ પર પાછા આવવું પ્રગતિ પર છે" "કૉલ ઉમેરો" "ઇનકમિંગ કૉલ્સ" + "બલ્ક ક્રિયા મોડમાં દાખલ થઈ રહ્યાં છે" + "બલ્ક ક્રિયા મોડ છોડી દીધો" + "%1$s પસંદ કર્યો" + "%1$s પસંદગીમાંથી દૂર કર્યો" "વૉઇસમેઇલ ચલાવો" "%1$s સંપર્ક જુઓ" "%1$s ને કૉલ કરો" @@ -99,11 +103,13 @@ "વૉઇસમેઇલ" "%s સેકંડ" "%s મિ %s સે" + "બૅચ ક્રિયા મોડ રદ કરો" "વૉઇસમેઇલ" "વૉઇસમેઇલ" "હા" "નહીં" "પસંદ કરેલ %1$sને કાઢી નાખીએ?" + "%1$s પસંદ કરી" @string/call_log_header_today "%1$s નાં રોજ %2$s વાગ્યે" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "SIM કાર્ડમાંથી લોડ કરી રહ્યું છે…" "SIM કાર્ડ સંપર્કો" - "કોઈ સંપર્કો ઍપ્લિકેશન ઉપલબ્ધ નથી" "વૉઇસ શોધ ઉપલબ્ધ નથી" "ફોન કૉલ કરી શકાતો નથી કારણ કે ફોન ઍપ્લિકેશન અક્ષમ કરવામાં આવી છે." "સંપર્કો શોધો" @@ -145,10 +150,9 @@ "%s નવા છૂટેલા કૉલ્સ" "તમારા ઝડપી ડાયલ પર હજી સુધી કોઇ નથી" "એક મનપસંદ ઉમેરો" - "તમે હજી સુધી કોઇપણ સંપર્કો ધરાવતાં નથી" - "સંપર્ક ઉમેરો" "બધા નંબર્સ જોવા માટે છબી ટચ કરો અથવા પુનઃક્રમાંકિત કરવા માટે ટચ કરો અને પકડી રાખો" "દૂર કરો" + "તમામ પસંદ કરો" "વિડિઓ કૉલ" "એક સંદેશ મોકલો" "કૉલની વિગતો" @@ -213,11 +217,9 @@ "અવરોધિત નંબરો" "%1$s ને પહેલેથી અવરોધિત કરવામાં આવ્યો છે." "કૉલિંગ એકાઉન્ટ્સ" - "ચાલુ કરો" "પરવાનગીઓ સેટ કરો" "ઝડપી ડાયલ સક્ષમ કરવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો." "તમારો કૉલ લૉગ જોવા માટે, ફોન પરવાનગી ચાલુ કરો." - "તમારા સંપર્કો જોવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો." "તમારી વૉઇસમેઇલને ઍક્સેસ કરવા માટે, ફોન પરવાનગી ચાલુ કરો." "તમારા સંપર્કો શોધવા માટે, સંપર્કોની પરવાનગીઓ ચાલુ કરો." "કૉલ કરવા માટે, ફોન પરવાનગી ચાલુ કરો." 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 84d2d974a6..c998e4402c 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 @@ "कॉल पर लौटना प्रगति पर है" "कॉल जोड़ें" "इनकमिंग कॉल" + "बल्क कार्रवाई मोड में प्रवेश कर रहे हैं" + "बल्क कार्रवाई मोड छोड़ा" + "%1$s को चुना गया" + "%1$s को नहीं चुना गया" "ध्‍वनिमेल चलाएं" "%1$s संपर्क देखें" "%1$s को कॉल करें" @@ -99,11 +103,13 @@ "वॉयस मेल" "%s सेकंड" "%s मि. %s से." + "बैच कार्रवाई मोड रद्द करें" "वॉयसमेल" "वॉयसमेल" "हां" "नहीं" "क्या चुने गए %1$s हटाना चाहते हैं?" + "%1$s चयनित" @string/call_log_header_today "%1$s को %2$s बजे" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "सिम कार्ड से लोड हो रहा है…" "सिम कार्ड के संपर्क" - "कोई भी संपर्क ऐप उपलब्‍ध नहीं है" "बोलकर खोजना उपलब्‍ध नहीं है" "फ़ोन कॉल नहीं किया जा सकता क्योंकि फ़ोन ऐप्लिकेशन अक्षम कर दिया गया है." "संपर्क खोजें" @@ -145,10 +150,9 @@ "%s छूटे हुए नए कॉल" "आपके स्‍पीड डायल पर अभी तक कोई भी नहीं है" "कोई पसंदीदा जोड़ें" - "आपके पास अभी कोई भी संपर्क नहीं है" - "कोई संपर्क जोड़ें" "सभी नंबर देखने के लिए चित्र को स्‍पर्श करें या पुन: क्रमित करने के लिए स्‍पर्श करके रखें" "निकालें" + "सभी चुनें" "वीडियो कॉल" "संदेश भेजें" "कॉल विवरण" @@ -213,11 +217,9 @@ "अवरोधित नंबर" "%1$s पहले से अवरोधित है." "कॉलिंग खाते" - "चालू करें" "अनुमतियां सेट करें" "स्पीड डायल सक्षम करने के लिए, संपर्क अनुमति चालू करें." "अपना कॉल लॉग देखने के लिए, फ़ोन अनुमति चालू करें." - "अपने संपर्क देखने के लिए, संपर्क अनुमति चालू करें." "अपना वॉइसमेल ऐक्सेस करने के लिए, फ़ोन अनुमति चालू करें." "अपने संपर्कों की खोज करने के लिए, संपर्क अनुमतियों को चालू करें." "कॉल करने के लिए, फ़ोन अनुमति चालू करें." 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 cd35353724..5261cfb0da 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 @@ "Natrag na poziv u tijeku" "Dodaj poziv" "Dolazni pozivi" + "Ulazak u način skupne radnje" + "Napuštanje načina skupne radnje" + "Odabrano: %1$s" + "Poništen odabir: %1$s" "Reprodukcija govorne pošte" "Prikaz kontakta %1$s" "Nazovi %1$s" @@ -100,11 +104,13 @@ "Govorna pošta" "%s s" "%s min %s s" + "Otkaži način skupnih radnji" "poruka govorne pošte" "poruke govorne pošte" "Da" "Ne" "Želite li izbrisati odabranu poruku/e govorne pošte %1$s?" + "Odabrano: %1$s" @string/call_log_header_today "%1$s u %2$s" "%1$02d.%2$02d" @@ -117,7 +123,6 @@ "MEID" "Učitavanje sa SIM kartice..." "Kontakti SIM kartice" - "Nije dostupna nijedna aplikacija za kontakte" "Glasovno pretraživanje nije dostupno" "Telefoniranje nije moguće jer je aplikacija Telefon onemogućena." "Pretraži kontakte" @@ -146,10 +151,9 @@ "Broj novih propuštenih poziva: %s" "Još nemate nikog na brzom biranju" "Dodaj omiljeni kontakt" - "Još nemate nijedan kontakt" - "Dodajte kontakt" "Dodirnite sliku da biste vidjeli sve brojeve ili dodirnite i zadržite da biste promijenili redoslijed" "Ukloni" + "Odaberi sve" "Videopoziv" "Pošalji poruku" "Pojedinosti poziva" @@ -215,11 +219,9 @@ "Blokirani brojevi" "Broj %1$s već je blokiran." "Pozivanje računa" - "Uključi" "Postavi dopuštenja" "Da biste omogućili brzo biranje, uključite dopuštenje za kontakte." "Da biste vidjeli zapisnik poziva, uključite dopuštenje za telefon." - "Da biste vidjeli svoje kontakte, uključite dopuštenje za kontakte." "Da biste pristupili govornoj pošti, uključite dopuštenje za telefon." "Da biste pretraživali kontakte, uključite dopuštenja za kontakte." "Da biste nazvali nekog, uključite dopuštenje za telefon." 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 2e64d745d4..452f0da47d 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 @@ "Vissza a folyamatban lévő híváshoz" "Hívás hozzáadása" "Bejövő hívások" + "Belépés tömeges műveleti módba" + "Kilépett a tömeges műveleti módból" + "Kijelölés: %1$s" + "Kijelölés megszüntetve: %1$s" "Hangposta lejátszása" "%1$s névjegyének megtekintése" "%1$s hívása" @@ -99,11 +103,13 @@ "Hangposta" "%s másodperc" "%s perc %s másodperc" + "Köteges művelet mód leállítva" "hangpostaüzenetet" "hangpostaüzeneteket" "Igen" "Nem" "Törli a kiválasztott %1$s?" + "%1$s kiválasztva" @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Betöltés a SIM kártyáról..." "Névjegyek a SIM kártyán" - "Nincs elérhető névjegyek alkalmazás" "A hangalapú keresés nem érhető el" "Nem lehet telefonhívást kezdeményezni, mert a Telefon alkalmazást letiltották." "Keresés a névjegyek között" @@ -145,10 +150,9 @@ "%s új nem fogadott hívás" "Még semelyik telefonszám sincs gyorshívón" "Kedvenc hozzáadása" - "Még nem rendelkezik egyetlen névjeggyel sem" - "Névjegy hozzáadása" "Koppintson a képre az összes szám megjelenítéséhez, vagy tartsa nyomva az átrendezéshez" "Eltávolítás" + "Az összes kijelölése" "Videohívás" "Üzenet küldése" "Hívás adatai" @@ -213,11 +217,9 @@ "Letiltott számok" "A következő szám már le van tiltva: %1$s." "Telefonos fiókok" - "Engedélyezés" "Engedélyek beállítása" "Gyorshívás engedélyezéséhez kapcsolja be a Névjegyek engedélyt." "A hívásnapló megtekintéséhez kapcsolja be a Telefon engedélyt." - "A névjegyek megtekintéséhez kapcsolja be a Névjegyek engedélyt." "A hangposta eléréséhez kapcsolja be a Telefon engedélyt." "A névjegyek kereséséhez adja meg a Névjegyek engedélyeket." "Hívásindításhoz kapcsolja be a Telefon engedélyt." 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 6f3931c9f6..97a84f2fef 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 @@ "Վերադառնալ ընթացիկ զանգին" "Ավելացնել զանգ" "Մուտքային զանգեր" + "Մուտք զանգվածային գործողությունների ռեժին" + "Դուք դուրս եկաք զանգվածային գործողությունների ռեժիմից" + "Ընտրվեց՝ %1$s" + "Ապընտրվեց՝ %1$s" "Նվագարկել ձայնային փոստը" "Դիտել %1$s կոնտակտը" "Զանգել %1$s-ին" @@ -99,11 +103,13 @@ "Ձայնային փոստ" "%s վրկ" "%s րոպե %s վայրկյան" + "Չեղարկել փաթեթային գործողությունների ռեժիմը" "ձայնային հաղորդագրություն" "ձայնային հաղորդագրություններ" "Այո" "Ոչ" "Ջնջե՞լ նշված %1$sը" + "Ընտրվել է՝ %1$s" @string/call_log_header_today "%1$s-ին, ժամը %2$s-ին" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "SIM քարտը բեռնվում է..." "SIM քարտի կոնտակտները" - "Կոնտակտների հավելված չկա" "Ձայնային որոնումը հասանելի չէ" "Հնարավոր չէ զանգահարել, քանի որ Հեռախոս հավելվածն անջատված է:" "Կոնտակտների որոնում" @@ -145,10 +150,9 @@ "%s նոր բաց թողնված զանգ" "Արագ համարահավաքման ցանկը դատարկ է" "Ավելացնել կոնտակտ" - "Դեռ կոնտակտներ չունեք" - "Ավելացնել կոնտակտ" "Բոլոր համարները տեսնելու համար հպեք պատկերին: Վերադասավորելու համար հպեք և պահեք:" "Հեռացնել" + "Ընտրել բոլորը" "Տեսազանգ" "Ուղարկել հաղորդագրություն" "Զանգի մանրամասները" @@ -213,11 +217,9 @@ "Արգելափակված համարներ" "%1$s համարն արդեն արգելափակված է:" "Հաշիվներ զանգերի համար" - "Միացնել" "Թույլտվությունների սահմանում" "Արագ համարահավաքը թույլատրելու համար միացրեք Կոնտակտների թույլտվությունը:" "Ձեր զանգերի մատյանը տեսնելու համար միացրեք Հեռախոսի թույլտվությունը:" - "Ձեր կոնտակտները տեսնելու համար միացրեք Կոնտակտների թույլտվությունը:" "Ձայնային փոստն օգտագործելու համար միացրեք Հեռախոսի թույլտվությունը:" "Կոնտակտները որոնելու համար միացրեք Կոնտակտների թույլտվությունները:" "Զանգ կատարելու համար միացրեք Հեռախոսի թույլտվությունը:" 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 c0de9b3b49..f309f927b3 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 @@ "Kembali ke panggilan sedang berlangsung" "Tambahkan panggilan" "Panggilan masuk" + "Masuk ke mode tindakan massal" + "Keluar dari mode tindakan massal" + "%1$s dipilih" + "%1$s tidak dipilih" "Putar pesan suara" "Lihat kontak %1$s" "Telepon %1$s" @@ -99,11 +103,13 @@ "Kotak Pesan" "%s dtk" "%s mnt %s dtk" + "Membatalkan mode tindakan kelompok" "pesan suara" "pesan suara" "Ya" "Tidak" "Hapus %1$s yang dipilih?" + "%1$s dipilih" @string/call_log_header_today "%1$s pukul %2$s" "%1$02d.%2$02d" @@ -116,7 +122,6 @@ "MEID" "Memuat dari kartu SIM..." "Kontak pada kartu SIM" - "Aplikasi kontak tidak tersedia" "Penelusuran suara tidak tersedia" "Tidak dapat melakukan panggilan telepon karena aplikasi Telepon telah dinonaktifkan." "Telusuri kontak" @@ -145,10 +150,9 @@ "%s panggilan tidak terjawab baru" "Daftar panggilan cepat masih kosong" "Tambahkan favorit" - "Anda belum memiliki kontak" - "Tambahkan kontak" "Sentuh foto untuk melihat semua nomor atau sentuh & tahan untuk menyusun ulang" "Hapus" + "Pilih semua" "Panggilan video" "Kirim pesan" "Detail panggilan" @@ -213,11 +217,9 @@ "Nomor yang diblokir" "%1$s sudah diblokir." "Akun panggilan" - "Aktifkan" "Setel izin" "Untuk mengaktifkan panggilan cepat, aktifkan izin Kontak." "Untuk melihat log panggilan, aktifkan izin Telepon." - "Untuk melihat kontak, aktifkan izin Kontak." "Untuk mengakses pesan suara, aktifkan izin Telepon." "Untuk menelusuri kontak, aktifkan izin Kontak." "Untuk melakukan panggilan, aktifkan izin Telepon." 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 fdd6356682..b291eae84a 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 @@ "Fara aftur í símtal í gangi" "Bæta við símtali" "Móttekin símtöl" + "Opnar fjöldaaðgerðastillingu" + "Fjöldaaðgerðastillingu lokað" + "Valdi %1$s" + "Fjarlægði val á %1$s" "Spila talhólfsskilaboð" "Skoða tengiliðinn %1$s" "Hringja í %1$s" @@ -99,11 +103,13 @@ "Talhólf" "%s sek." "%s mín. og %s sek." + "Hætta við runuaðgerðastillingu" "talhólfsskilaboð" "talhólfsskilaboð" "Já" "Nei" "Eyða völdum %1$s?" + "%1$s valin" @string/call_log_header_today "%1$s kl. %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Hleður af SIM-kortinu…" "Tengiliðir á SIM-korti" - "Ekkert tengiliðaforrit í boði" "Raddleit er ekki í boði" "Ekki er hægt að hringja vegna þess að forritið Sími hefur verið gert óvirkt." "Leita í tengiliðum" @@ -145,10 +150,9 @@ "%s ný ósvöruð símtöl" "Þú ert ekki með neinn í hraðvali enn sem komið er" "Bæta uppáhaldi við" - "Þú ert ekki með neina tengiliði enn sem komið er" - "Bæta tengilið við" "Snertu myndina til að sjá öll númer eða haltu henni inni til að endurraða" "Fjarlægja" + "Velja allt" "Myndsímtal" "Senda skilaboð" "Símtalsupplýsingar" @@ -213,11 +217,9 @@ "Númer á bannlista" "%1$s er nú þegar á bannlista." "Símtalareikningar" - "Kveikja" "Stilla heimildir" "Kveiktu á tengiliðaheimildinni til að gera hraðval virkt." "Kveiktu á heimild símaforritsins til að sjá símtalaskrána þína." - "Kveiktu á tengiliðaheimildinni til að sjá tengiliðina þína." "Kveiktu á heimild símaforritsins til að fá aðgang að talhólfinu þínu." "Kveiktu á heimildunum fyrir tengiliði til að leita að tengiliðum." "Kveiktu á heimild símaforritsins til að hringja símtal." 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 9bd8cd3599..711ab26eeb 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 @@ "Torna alla chiamata in corso" "Aggiungi chiamata" "Chiamate in arrivo" + "Attivazione della modalità di azione collettiva" + "Disttivazione della modalità di azione collettiva" + "%1$s selezionato" + "%1$s deselezionato" "Riproduci messaggio vocale" "Visualizza %1$s contatto" "Chiama %1$s" @@ -99,11 +103,13 @@ "Segreteria" "%s secondi" "%s min %s s" + "Annulla modalità di azione collettiva" "messaggio vocale" "messaggi vocali" "Sì" "No" "Eliminare i %1$s selezionati?" + "%1$s selezionate" @string/call_log_header_today "%1$s alle ore %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Caricamento da SIM..." "Contatti SIM" - "Nessuna app di contatti disponibile" "Ricerca vocale non disponibile" "Impossibile effettuare una telefonata perché l\'applicazione Telefono è stata disattivata." "Cerca contatti" @@ -145,10 +150,9 @@ "%s nuove chiamate perse" "Nessun preferito disponibile nella Composizione rapida" "Aggiungi un preferito" - "Nessun contatto disponibile" - "Aggiungi un contatto" "Tocca l\'immagine per visualizzare tutti i numeri oppure tieni premuto per cambiare l\'ordine" "Rimuovi" + "Seleziona tutto" "Videochiamata" "Invia un messaggio" "Dettagli chiamata" @@ -213,11 +217,9 @@ "Numeri bloccati" "%1$s è già bloccato." "Account di chiamata" - "Attiva" "Imposta autorizzazioni" "Per attivare la composizione rapida, attiva l\'autorizzazione Contatti." "Per accedere al registro chiamate, attiva l\'autorizzazione sul telefono." - "Per accedere ai tuoi contatti, attiva l\'autorizzazione Contatti." "Per accedere alla segreteria, attiva l\'autorizzazione sul telefono." "Per cercare nei tuoi contatti, attiva le autorizzazioni Contatti." "Per fare una chiamata, attiva l\'autorizzazione sul telefono." 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 bb115e2f88..bd2a05aec1 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 @@ "חזור לשיחה פעילה" "הוסף שיחה" "שיחות נכנסות" + "עברת למצב של ביצוע פעולות בכמות גדולה" + "עזבת את המצב של ביצוע פעולות בכמות גדולה" + "בחרת את %1$s" + "ביטלת את הבחירה של %1$s" "הפעל דואר קולי" "הצג את איש הקשר %1$s" "התקשר אל %1$s" @@ -101,11 +105,13 @@ "דואר קולי" "%s שניות" "%s דק\' %s שנ\'" + "ביטול המצב של ביצוע פעולות בכמות גדולה" "ההודעה הקולית" "ההודעות הקוליות" "כן" "לא" "האם למחוק את %1$s שבחרת?" + "%1$s נבחרו" @string/call_log_header_today "%1$s ב-%2$s" "%1$02d:%2$02d" @@ -118,7 +124,6 @@ "MEID" "‏טוען מכרטיס SIM…" "‏אנשי קשר בכרטיס SIM" - "אין אפליקציה זמינה עבור אנשי קשר" "חיפוש קולי אינו זמין" "לא ניתן לבצע שיחת טלפון מפני שאפליקציית הטלפון הושבתה." "חפש אנשי קשר" @@ -147,10 +152,9 @@ "%s שיחות חדשות שלא נענו" "עדיין לא הוגדר חיוג מהיר לאף איש קשר" "הוסף פריט מועדף" - "עדיין אין לך אנשי קשר" - "הוסף איש קשר" "גע בתמונה כדי להציג את כל המספרים או גע והחזק כדי לשנות את הסדר" "הסר" + "בחירת הכל" "שיחת וידאו" "שלח הודעה" "פרטי שיחה" @@ -217,11 +221,9 @@ "מספרים חסומים" "%1$s כבר חסום." "חשבונות לביצוע שיחות" - "הפעל" "הגדר הרשאות" "כדי להפעיל חיוג מהיר, הפעל את ההרשאה \'אנשי קשר\'." "כדי לראות את יומן השיחות, הפעל את ההרשאה \'טלפון\'." - "כדי להציג את אנשי הקשר, הפעל את ההרשאה \'אנשי קשר\'." "כדי לגשת לדואר הקולי, הפעל את ההרשאה \'טלפון\'." "כדי לחפש באנשי הקשר, הפעל את ההרשאה \'אנשי קשר\'." "כדי להתקשר, הפעל את ההרשאה \'טלפון\'." 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 63b15cbede..9ba40fb8f8 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 @@ "通話に戻る" "別の通話を追加" "着信" + "一括操作モードを開始します" + "一括操作モードを終了しました" + "%1$s を選択しました" + "%1$s を選択解除しました" "ボイスメールを再生" "%1$sの連絡先を表示" "%1$sに発信" @@ -99,11 +103,13 @@ "ボイスメール" "%s秒" "%s%s秒" + "一括操作モードをキャンセルします" "ボイスメール" "ボイスメール" "はい" "いいえ" "選択した%1$sを削除しますか?" + "%1$s 件選択済み" @string/call_log_header_today "%1$s%2$s" "%1$02d%2$02d 秒" @@ -116,7 +122,6 @@ "MEID" "SIMカードから読み取り中..." "SIMカードの連絡先" - "連絡先アプリがありません" "音声検索を利用できません" "電話アプリが無効になっているため発信できません。" "連絡先を検索" @@ -145,10 +150,9 @@ "%s件の不在着信" "クイックアクセスに登録済みの連絡先はまだありません" "お気に入りを追加" - "連絡先はまだありません" - "連絡先を追加" "画像をタップするとすべての番号が表示され、押し続けると番号を並べ替えることができます" "削除" + "すべて選択" "ビデオハングアウト" "メッセージを送信" "通話の詳細" @@ -213,11 +217,9 @@ "ブロックした番号" "%1$sは既にブロックしています。" "通話アカウント" - "ONにする" "権限を設定" "クイックアクセスを有効にするには、連絡先権限をONにしてください。" "通話履歴を表示するには、電話権限をONにしてください。" - "連絡先を表示するには、連絡先権限をONにしてください。" "ボイスメールにアクセスするには、電話権限をONにしてください。" "連絡先を検索するには、連絡先権限をONにしてください。" "電話をかけるには、電話権限をONにしてください。" 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 ae89505b5c..dbb48f4f50 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 @@ "მიმდინარე ზარზე დაბრუნება" "ზარის დამატება" "შემომავალი ზარები" + "მიმდინარეობს ერთიანი ქმედების რეჟიმში შესვლა" + "ერთიანი ქმედების რეჟიმიდან გამოხვედით" + "არჩეულია %1$s" + "%1$s-ის არჩევა გაუქმდა" "ხმოვანი ფოსტის ჩართვა" "კონტაქტის %1$s ნახვა" "%1$s-თან დარეკვა" @@ -99,11 +103,13 @@ "ხმოვანი ფოსტა" "%s წმ" "%s მინ %s წამ" + "ერთიანი ქმედების რეჟიმის გაუქმება" "ხმოვანი ფოსტა" "ხმოვანი ფოსტა" "დიახ" "არა" "გსურთ, წაშალოთ არჩეული %1$s?" + "არჩეულია %1$s" @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "იტვირთება SIM ბარათიდან…" "SIM ბარათის კონტაქტები" - "კონტაქტების აპლიკაცია არ არის ხელმისაწვდომი" "ხმოვანი ძიება არ არის ხელმისაწვდომი" "სატელეფონო ზარის განხორციელება ვერ ხერხდება, ვინაიდან ტელეფონის აპლიკაცია გაუქმებულია." "კონტაქტებში ძიება" @@ -145,10 +150,9 @@ "%s ახალი გაცდენილი ზარი" "სწრაფი აკრეფისთვის რჩეულები ჯერ არ გყავთ" "რჩეული კონტაქტის დამატება" - "კონტაქტები ჯერ არ გაქვთ" - "კონტაქტის დამატება" "ყველა ნომრის სანახავად შეეხეთ სურათს ან შეეხეთ და დააყოვნეთ მიმდევრობის შესაცვლელად" "ამოშლა" + "ყველას არჩევა" "ვიდეო ზარი" "შეტყობინების გაგზავნა" "ზარის მონაცემები" @@ -213,11 +217,9 @@ "დაბლოკილი ნომრები" "%1$s უკვე დაბლოკილია." "ანგარიშების გამოძახება" - "ჩართვა" "ნებართვების დაყენება" "სწრაფი აკრეფის გასააქტიურებლად, ჩართეთ კონტაქტების ნებართვა." "ზარების ჟურნალის სანახავად, ჩართეთ ტელეფონის ნებართვა." - "კონტაქტების სანახავად, ჩართეთ კონტაქტების ნებართვა." "ხმოვან ფოსტაზე წვდომისთვის, ჩართეთ ტელეფონის ნებართვა." "თქვენი კონტაქტების მოსაძებნად ჩართეთ კონტაქტების ნებართვები." "ზარის განსახორციელებლად, ჩართეთ ტელეფონის ნებართვა." 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 ba4238692d..8dfe531a1d 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 @@ "Қосылып тұрған қоңырауға оралу" "Қоңырау қосу" "Келген қоңыраулар" + "Жаппай әрекет режиміне өту" + "Жаппай әрекет режиімінен шығу" + "%1$s таңдалды" + "%1$s таңдауы алынды" "Дауыс-хабарды ойнату" "%1$s контактісін көру" "%1$s нөміріне қоңырау шалу" @@ -99,11 +103,13 @@ "Дауыстық пошта" "%s сек." "%s мин %s сек" + "Топтама әрекеттер режимін жабу" "дауыстық хабар" "дауыстық хабарлар" "Иә" "Жоқ" "Таңдалған %1$s хабарларын жою қажет пе?" + "%1$s таңдалды" @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID (ұялы жабдық анықтағыш)" "SIM картасынан жүктеу…" "SIM картасының контактілері" - "Контактілер қолданбасы қол жетімді емес" "Дауыс арқылы іздеу қол жетімді емес" "Телефон қоңырауын шалу мүмкін емес, өйткені «Телефон» қолданбасы өшірілген." "Контактілерді іздеу" @@ -145,10 +150,9 @@ "%s жаңа қабылданбаған қоңыраулар" "Жылдам теруде әлі ешкім жоқ" "Таңдаулыны қосу" - "Әлі ешқандай контактілер жоқ" - "Контакт қосу" "Барлық нөмірлерді көру үшін кескінді түртіңіз, ал ретін өзгерту үшін түртіп, ұстап тұрыңыз" "Алып тастау" + "Барлығын таңдау" "Бейне қоңырау" "Хабар жіберу" "Қоңырау мәліметтері" @@ -213,11 +217,9 @@ "Бөгелген нөмірлер" "%1$s бөгеліп қойылған." "Қоңырау шалу есептік жазбалары" - "Қосу" "Рұқсаттар орнату" "Жылдам теруді қосу үшін \"Контактілер\" рұқсатын қосыңыз." "Қоңыраулар журналы көру үшін \"Телефон\" рұқсатын қосыңыз." - "Контактілерді көру үшін \"Контактілер\" рұқсатын қосыңыз." "Дауыс поштасына қатынасу үшін \"Телефон\" рұқсатын қосыңыз." "Контактілерді іздеу үшін \"Контактілер\" рұқсаттарын қосыңыз." "Қоңырауды шалу үшін \"Телефон\" рұқсатын қосыңыз." 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 bdc91cf0b8..ed0db05e24 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 @@ "កំពុង​ត្រឡប់​ទៅកាន់​ការ​ហៅ" "បន្ថែម​ការ​ហៅ" "ការ​ហៅ​ចូល" + "ចូល​មុខងារ​សកម្មភាព​ច្រើន" + "បាន​ចាកចេញ​ពី​មុខងារ​សកម្មភាព​ច្រើន" + "បាន​ជ្រើសរើស %1$s" + "បាន​ដក​ការជ្រើសរើស %1$s" "ចាក់​សារ​ជា​សំឡេង" "មើល​ទំ​នាក់ទំនង %1$s" "ហៅ %1$s" @@ -99,11 +103,13 @@ "សារ​ជា​សំឡេង" "%s វិនាទី" "%s នាទី %s វិនាទី" + "បោះបង់​មុខងារ​សកម្មភាព​ជា​ក្រុម" "សារ​ជា​សំឡេង" "សារ​ជា​សំឡេង" "បាទ/ចាស" "ទេ" "លុប %1$s ដែល​បាន​ជ្រើសរើស?" + "បាន​ជ្រើសរើស %1$s" @string/call_log_header_today "%1$s នៅម៉ោង %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "កំពុង​ផ្ទុក​ពី​ស៊ីម​កាត..." "ទំនាក់ទំនង​នៅ​ក្នុង​ស៊ីម​កាត" - "មិនមានកម្មវិធីទំនាក់ទំនងទេ" "ការស្វែងរកជាសម្លេងមិនមានទេ" "មិន​អាច​ហៅ​បាន​ទេ​ ព្រោះ​កម្មវិធី​ទូរស័ព្ទ​ត្រូវ​បាន​បិទ។" "រក​ទំនាក់ទំនង" @@ -145,10 +150,9 @@ "ខកខាន​ទទួល​ថ្មី %s" "គ្មាននរណាម្នាក់នៅក្នុងការហៅរហ័សរបស់អ្នកនៅឡើយទេ" "បញ្ចូលសំណព្វ" - "អ្នកមិនទាន់មានទំនាក់ទំនងនៅឡើយទេ" - "បន្ថែមទំនាក់ទំនង" "ប៉ះរូបភាពដើម្បីមើលលេខទាំងអស់ ឬប៉ះ & សង្កត់ឲ្យជាប់ដើម្បីតម្រៀបឡើងវិញ" "លុបចេញ" + "ជ្រើសរើស​​ទាំងអស់" "ហៅជាវីដេអូ" "ផ្ញើសារ" "ព័ត៌មានលម្អិតអំពីការហៅ" @@ -213,11 +217,9 @@ "លេខបានរារាំង" "%1$s ត្រូវបានទប់ស្កាត់រួចហើយ" "គណនីហៅទូរសព្ទ" - "បើក" "កំណត់សិទ្ធិអនុញ្ញាត" "ដើម្បីបើកដំណើរការហៅរហ័ស សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីទំនាក់ទំនង។" "ដើម្បីមើលកំណត់ហេតុហៅទូរស័ព្ទរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។" - "ដើម្បីមើលទំនាក់ទំនងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីទំនាក់ទំនង។" "ដើម្បីចូលដំណើរការសារជាសំឡេងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។" "ដើម្បីស្វែងរកទំនាក់ទំនងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតទំនាក់ទំនង។" "ដើម្បីធ្វើការហៅទូរស័ព្ទ សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។" 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 dae544d3f9..932bc40350 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 @@ "ಪ್ರತ್ಯತ್ತರ ಕರೆಯು ಪ್ರಗತಿಯಲ್ಲಿದೆ" "ಕರೆಯನ್ನು ಸೇರಿಸಿ" "ಒಳಬರುವ ಕರೆಗಳು" + "ದೊಡ್ಡ ಪ್ರಮಾಣದ ಕ್ರಿಯೆಯ ಮೋಡ್‌ಗೆ ಪ್ರವೇಶಿಸಲಾಗುತ್ತಿದೆ" + "ದೊಡ್ಡ ಪ್ರಮಾಣದ ಕ್ರಿಯೆಯ ಮೋಡ್ ತೊರೆಯಲಾಗಿದೆ" + "%1$s ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ" + "%1$s ಆಯ್ಕೆಯನ್ನು ರದ್ದುಮಾಡಲಾಗಿದೆ" "ಧ್ವನಿಮೇಲ್‌ ಪ್ಲೇ ಮಾಡಿ" "%1$s ಸಂಪರ್ಕ ವೀಕ್ಷಿಸಿ" "%1$s ಕರೆ ಮಾಡಿ" @@ -99,11 +103,13 @@ "ಧ್ವನಿಮೇಲ್" "%s ಸೆಕೆಂ" "%s ನಿಮಿ %s ಸೆಕೆಂ" + "ಬ್ಯಾಚ್ ಕ್ರಿಯೆಗಳ ಮೋಡ್ ಅನ್ನು ರದ್ದುಮಾಡಿ" "ಧ್ವನಿಮೇಲ್" "ಧ್ವನಿಮೇಲ್‌ಗಳು" "ಹೌದು" "ಇಲ್ಲ" "ಆಯ್ಕೆ ಮಾಡಲಾದ %1$s ಅನ್ನು ಅಳಿಸುವುದೇ?" + "%1$s ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ" @string/call_log_header_today "%1$s ರಂದು %2$s ಗಂಟೆಗೆ" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "ಸಿಮ್‌ ಕಾರ್ಡ್‌ನಿಂದ ಲೋಡ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…" "ಸಿಮ್‌ ಕಾರ್ಡ್‌ ಸಂಪರ್ಕಗಳು" - "ಯಾವುದೇ ಸಂಪರ್ಕಗಳ ಅಪ್ಲಿಕೇಶನ್‌ ಲಭ್ಯವಿಲ್ಲ" "ಧ್ವನಿ ಹುಡುಕಾಟ ಲಭ್ಯವಿಲ್ಲ" "ಫೋನ್ ಅಪ್ಲಿಕೇಶನ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿರುವುದರಿಂದ ಫೋನ್ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ." "ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಿ" @@ -145,10 +150,9 @@ "%s ಹೊಸ ಮಿಸ್ಡ್‌ ಕರೆಗಳು" "ನಿಮ್ಮ ತ್ವರಿತ ಡಯಲ್‌ನಲ್ಲಿ ಇದುವರೆಗೆ ಯಾರೂ ಇಲ್ಲ" "ಮೆಚ್ಚಿನದನ್ನು ಸೇರಿಸಿ" - "ನೀವು ಇನ್ನೂ ಯಾವುದೇ ಸಂಪರ್ಕಗಳನ್ನು ಹೊಂದಿಲ್ಲ" - "ಸಂಪರ್ಕ ಸೇರಿಸಿ" "ಎಲ್ಲಾ ಸಂಖ್ಯೆಗಳನ್ನು ನೋಡಲು ಚಿತ್ರವನ್ನು ಸ್ಪರ್ಶಿಸಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಲು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹೋಲ್ಡ್‌‌ ಮಾಡಿ" "ತೆಗೆದುಹಾಕು" + "ಎಲ್ಲವನ್ನೂ ಆಯ್ಕೆ ಮಾಡಿ" "ವೀಡಿಯೊ ಕರೆ" "ಸಂದೇಶ ಕಳುಹಿಸಿ" "ಕರೆಯ ವಿವರಗಳು" @@ -213,11 +217,9 @@ "ನಿರ್ಬಂಧಿಸಲಾದ ಸಂಖ್ಯೆಗಳು" "%1$s ಈಗಾಗಲೇ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ." "ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು" - "ಆನ್‌ ಮಾಡಿ" "ಅನುಮತಿಗಳನ್ನು ಹೊಂದಿಸು" "ವೇಗ ಡಯಲ್ ಸಕ್ರಿಯಗೊಳಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." "ನಿಮ್ಮ ಕರೆಯ ಲಾಗ್ ಅನ್ನು ವೀಕ್ಷಿಸಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." - "ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." "ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಪ್ರವೇಶಿಸಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." "ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಗಳನ್ನು ಆನ್ ಮಾಡಿ." "ಕರೆ ಮಾಡಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." 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 1850b6ce1f..de6b93c01b 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 @@ "진행 중인 통화로 돌아가기" "통화 추가" "수신전화" + "일괄 작업 모드 시작 중" + "일괄 작업 모드 종료됨" + "%1$s 선택됨" + "%1$s 선택 취소됨" "음성사서함 재생" "%1$s님의 연락처 보기" "전화걸기: %1$s" @@ -99,11 +103,13 @@ "음성사서함" "%s초" "%s%s초" + "일괄 작업 모드 취소" "음성사서함" "음성사서함" "예" "아니요" "선택한 %1$s을(를) 삭제하시겠습니까?" + "%1$s개 선택됨" @string/call_log_header_today "%1$s %2$s" "%1$02d%2$02d초" @@ -116,7 +122,6 @@ "MEID" "SIM 카드에서 로딩 중..." "SIM 카드 주소록" - "사용할 수 있는 주소록 앱이 없습니다." "음성검색이 지원되지 않습니다." "전화 애플리케이션을 사용 중지했으므로 전화를 걸 수 없습니다." "주소록 검색" @@ -145,10 +150,9 @@ "새로운 부재중 전화 %s건" "아직 단축 다이얼이 설정된 연락처가 없습니다." "단축 다이얼 추가" - "아직 연락처가 없습니다." - "연락처 추가" "이미지를 터치하여 모든 번호를 확인하거나 길게 터치하여 재정렬합니다." "삭제" + "모두 선택" "화상 통화" "메시지 보내기" "통화 세부정보" @@ -213,11 +217,9 @@ "차단된 번호" "%1$s번은 이미 차단되었습니다." "통화 계정" - "사용" "권한 설정" "단축번호를 사용하려면 주소록 권한을 사용하도록 설정하세요." "통화 기록을 보려면 전화 권한을 사용하도록 설정하세요." - "주소록을 보려면 주소록 권한을 사용하도록 설정하세요." "음성사서함에 액세스하려면 전화 권한을 사용하도록 설정하세요." "주소록을 검색하려면 주소록 권한을 사용하도록 설정하세요." "전화를 걸려면 전화 권한을 사용하도록 설정하세요." 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 9e80e29ee7..ac9a617ed8 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 @@ "Токтотулган чалууга кайтуу" "Чалууну кошуу" "Кирүүчү чалуулар" + "Жапырт аракет режимине кирдиңиз" + "Жапырт аракет режиминен чыктыңыз" + "%1$s объект тандалды" + "%1$s объект тандоодон чыгарылды" "Үнкатты угуу" "Байланышты кароо %1$s" "Чалуу %1$s" @@ -99,11 +103,13 @@ "Үн почтасы" "%s сек." "%s мүн. %s сек." + "Жапырт аракет режимин жокко чыгаруу" "үн почтасы" "үн почталары" "Ооба" "Жок" "Тандалган %1$s жок кылынсынбы?" + "%1$s тандалды" @string/call_log_header_today "%1$s саат %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "SIM картадан жүктөлүүдө..." "SIM картадагы байланыштар" - "Жеткиликтүү байланыштар колдонмосу жок" "Үн менен издөө жеткиликтүү эмес" "Телефон колдонмосу өчүрүлгөндүктөн, чалуу мүмкүн болбой жатат." "Байланыштарды издөө" @@ -145,10 +150,9 @@ "%s жаңы өткөзүлгөн чалуу" "Азырынча тез териле турган номерлер жок" "Сүйүктүү номер кошуу" - "Азырынча бир дагы байланышыңыз жок" - "Байланыш кошуу" "Бардык номерлерди көрүү үчүн, сүрөткө тийип коюңуз же коё бербей басып туруп иретин өзгөртсөңүз болот." "Алып салуу" + "Баарын тандоо" "Видео чалуу" "Билдирүү жөнөтүү" "Чалуунун чоо-жайы" @@ -213,11 +217,9 @@ "Бөгөттөлгөн номерлер" "%1$s мурунтан эле бөгөттөлгөн." "Чалуу каттоо эсептери" - "Күйгүзүү" "Уруксаттарды берүү" "Тез терүүнү иштетүү үчүн, \"Байланыштар\" колдонмосуна уруксат бериңиз." "Чалуулар таржымалыңызды көрүү үчүн, \"Телефон\" колдонмосуна уруксат бериңиз." - "Байланыштар тизмесин көрүү үчүн, \"Байланыштар\" колдонмосуна уруксат бериңиз." "Үн почтаңызга кирүү үчүн, \"Телефон\" колдонмосуна уруксат бериңиз." "Байланыштарыңызды издөө үчүн, Байланыштарга уруксатты күйгүзүңүз." "Чалуу үчүн, \"Телефон\" колдонмосуна уруксат бериңиз." 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 8284e8de0a..2a829730fd 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 @@ "ກັບໄປການໂທທີ່ກຳລັງດຳເນີນຢູ່" "ເພີ່ມການໂທ" "ສາຍໂທເຂົ້າ" + "ກຳລັງເຂົ້າໂໝດຄຳສັ່ງຈຳນວນຫຼາຍ" + "ອອກຈາກໂໝດຄຳສັ່ງຈຳນວນຫຼາຍແລ້ວ" + "ເລືອກ %1$s ແລ້ວ" + "ເຊົາເລືອກ %1$s ແລ້ວ" "ເປີດຂໍ້ຄວາມສຽງ" "ເບິ່ງລາຍຊື່ຜູ່ຕິດຕໍ່ %1$s" "ໂທຫາ %1$s" @@ -99,11 +103,13 @@ "ຂໍ້ຄວາມສຽງ" "%s ວິນາທີ" "%s ນ​ທ %s ວິ" + "ຍົກເລີກໂໝດຄຳສັ່ງເປັນຊຸດ" "ຂໍ້ຄວາມສຽງ" "ຂໍ້ຄວາມສຽງ" "ແມ່ນແລ້ວ" "ບໍ່" "ລຶບ %1$s ທີ່ເລືອກອອກໄປບໍ?" + "ເລືອກ %1$s ລາຍການແລ້ວ" @string/call_log_header_today "%1$s ເວລາ %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "ກຳລັງໂຫລດຈາກ SIM card..." "ລາຍຊື່ຜູ່ຕິດຕໍ່ SIM card" - "ບໍ່​ມີ​ແອັບຯ​ລາຍ​ຊື່​ຕິດ​ຕໍ່​ຢູ່" "ບໍ່​ມີ​ການ​ຊອກ​ຫາ​ດ້ວຍ​ສຽງ​ຢູ່" "ບໍ່​ສາ​ມາດ​ໂທ​ໄດ​້​ເນື່ອງ​ຈາກ​ແອັບ​ພ​ລິ​ເຄ​ຊັນ​ໂທ​ລະ​ສັບ​ຖືກ​ປິດ​ການ​ນຳ​ໃຊ້​ໄວ້." "ຊອກຫາລາຍຊື່ຜູ່ຕິດຕໍ່" @@ -145,10 +150,9 @@ "%s ສາຍທີ່ບໍ່ໄດ້ຮັບໃໝ່" "ບໍ່​ມີ​ຜູ້​ໃດ​ຢູ່​ໃນ​ການ​ໂທ​ດ່ວນ​ຂອງ​ທ່ານ​ເທື່ອ" "ເພີ່ມ​ລາຍ​ການ​ທີ່​ມັກ" - "ທ່ານ​ບໍ່​ມີ​ລາຍ​ຊື່​ໃດ​ເທື່ອ" - "ເພີ່ມ​ລາຍ​ຊື່" "ແຕະຮູບເພື່ອເບິ່ງເບີໂທທັງໝົດ ຫຼື ແຕະຄ້າງໄວ້ເພື່ອຈັດລຳດັບໃໝ່" "​ລຶບ​ອອກ" + "ເລືອກທັງໝົດ" "​ໂທ​ດ້ວຍ​ວິ​ດີ​ໂອ" "ສົ່ງຂໍ້ຄວາມ" "ລາຍລະອຽດ​ການໂທ" @@ -213,11 +217,9 @@ "ເບີໂທລະສັບທີ່ບລັອກໄວ້" "%1$s ຖືກ​ບ​ລັອກ​ແລ້ວ." "ບັນ​ຊີ​ໂທ" - "ເປີດ​" "ຕັ້ງ​ການ​ອະ​ນຸ​ຍາດ" "ເພື່ອ​ເປີດ​ໃຊ້​ງານ​ການໂທດ່ວນ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ລາຍ​ຊື່." "ເພື່ອ​ເບິ່ງ​ບັນ​ທຶກ​ການ​ໂທ​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ." - "ເພື່ອ​ເບິ່ງ​ລາຍ​ຊື່​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ລາຍ​ຊື່" "ເພື່ອ​ເຂົ້າ​ຫາ​ຂໍ້​ຄວາມ​ສຽງ​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ." "ເພື່ອຄົ້ນຫາລາຍາຊື່ຂອງທ່ານ, ໃຫ້ເປີດການອະນຸຍາດລາຍຊື່." "ເພື່ອ​ເຮັດການໂທ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ." 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 a346d5d0a2..367c928f48 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 @@ "Grįžti prie vykdomo skambučio" "Pridėti skambutį" "Gaunami skambučiai" + "Įjungiamas masinių veiksmų režimas" + "Masinių veiksmų režimas išjungtas" + "Pasirinkta: %1$s" + "Pasirinkimas atšauktas: %1$s" "Paleisti balso pašto pranešimus" "Žiūrėti kontaktą %1$s" "Skambinti %1$s" @@ -101,11 +105,13 @@ "Balso paštas" "%s sek." "%s min. %s sek." + "Atšaukti masinių veiksmų režimą" "balso pašto praneš." "balso pašto praneš." "Taip" "Ne" "Ištrinti pasir. %1$s?" + "Pasirinkta: %1$s" @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -118,7 +124,6 @@ "MEID" "Įkeliama iš SIM kortelės..." "SIM kortelės adresatai" - "Nepasiekiama jokia kontaktų programa" "Paieška balsu nepasiekiama" "Negalima skambinti telefonu, nes Telefono programa išjungta." "Ieškoti adresatų" @@ -147,10 +152,9 @@ "Naujų praleistų skambučių: %s" "Dar nieko neįtraukėte į sparčiojo rinkimo sąrašą" "Pridėti mėgstamiausią" - "Dar neturite kontaktų" - "Pridėti kontaktą" "Palieskite vaizdą, kad peržiūrėtumėte visus numerius, arba palieskite ir palaikykite, kad pertvarkytumėte" "Pašalinti" + "Pasirinkti viską" "Vaizdo skambutis" "Siųsti pranešimą" "Išsami skambučio informacija" @@ -217,11 +221,9 @@ "Užblokuoti numeriai" "%1$s jau užblokuotas." "Skambinimo paskyros" - "Įjungti" "Nustatyti leidimus" "Jei norite įgalinti spartųjį rinkimą, įjunkite Kontaktų programos leidimą." "Jei norite peržiūrėti skambučių žurnalą, įjunkite Telefono programos leidimą." - "Jei norite peržiūrėti kontaktus, įjunkite Kontaktų programos leidimą." "Jei norite pasiekti balso paštą, įjunkite Telefono programos leidimą." "Kad galėtumėte ieškoti kontaktų, įjunkite Kontaktų leidimus." "Jei norite paskambinti, įjunkite Telefono programos leidimą." 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 808d7bfb70..2713b91b6e 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 @@ "Atgriezties pie pašreizējā zvana" "Pievienot zvanu" "Ienākošie zvani" + "Tiek atvērts lielapjoma darbību režīms" + "Tika aizvērts lielapjoma darbību režīms" + "Atlasīt: %1$s" + "Noņemt atlasi: %1$s" "Atskaņot balss pasta ziņojumu" "Skatīt kontaktpersonu %1$s" "Zvanīt: %1$s" @@ -100,11 +104,13 @@ "Balss pasts" "%s s" "%s min %s s" + "Iziet no grupas darbību režīma" "balss pasta ziņojums" "balss pasta ziņojumi" "Jā" "Nē" "Vai dzēst atlasi: %1$s?" + "Atlasīti: %1$s" @string/call_log_header_today "%1$s plkst. %2$s" "%1$02d:%2$02d" @@ -117,7 +123,6 @@ "MEID" "Notiek ielāde no SIM kartes..." "Kontaktpersonas SIM kartē" - "Nav pieejama neviena kontaktpersonu lietotne." "Meklēšana ar balsi nav pieejama." "Nevar veikt tālruņa zvanu, jo lietojumprogramma Tālrunis tika atspējota." "Meklēt kontaktpersonas" @@ -146,10 +151,9 @@ "Jauni neatbildēti zvani: %s" "Ātro zvanu sarakstā vēl nav nevienas kontaktpersonas." "Pievienot izlasei" - "Jums vēl nav nevienas kontaktpersonas." - "Pievienot kontaktpersonu" "Pieskarieties attēlam, lai skatītu visus numurus, vai pieskarieties attēlam un turiet to, lai veiktu pārkārtošanu." "Noņemt" + "Atlasīt visu" "Videozvans" "Sūtīt ziņojumu" "Informācija par zvanu" @@ -215,11 +219,9 @@ "Bloķētie numuri" "%1$s jau ir bloķēts." "Zvanu konti" - "Ieslēgt" "Iestatīt atļaujas" "Lai iespējotu ātros zvanus, ieslēdziet atļauju Kontaktpersonas." "Lai skatītu zvanu žurnālu, ieslēdziet atļauju Tālrunis." - "Lai skatītu kontaktpersonas, ieslēdziet atļauju Kontaktpersonas." "Lai piekļūtu balss pastam, ieslēdziet atļauju Tālrunis." "Lai meklētu savas kontaktpersonas, ieslēdziet atļauju Kontaktpersonas." "Lai veiktu zvanu, ieslēdziet atļauju Tālrunis." 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 6d2e533a5a..09725a6421 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 @@ "Врати се на повик во тек" "Додај повик" "Дојдовни повици" + "Влегувате во режим на групно дејство" + "Излеговте од режим на групно дејство" + "Избрано е %1$s" + "Поништен е изборот на %1$s" "Преслушај говорна пошта" "Прикажи контакт %1$s" "Повикај %1$s" @@ -99,11 +103,13 @@ "Говорна пошта" "%s сек." "%s мин. %s сек." + "Откажи го режимот на групни дејства" "говорна пошта" "говорни пораки" "Да" "Не" "Да се избришат избраните %1$s?" + "Избрани се %1$s" @string/call_log_header_today "%1$s во %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Вчитување од SIM картичка..." "Контакти од SIM картичка" - "Не е достапна апликација за контакти" "Гласовното пребарување не е достапно" "Не може да се воспостави телефонски повик, бидејќи апликацијата Телефон е оневозможена." "Пребарај контакти" @@ -145,10 +150,9 @@ "%s нови пропуштени повици" "Сè уште немате никого на брзо бирање" "Додај омилено" - "Сè уште немате контакти" - "Додај контакт" "Допрете ја сликата за да ги видите сите броеви или допрете и држете за промена на редоследот" "Отстрани" + "Изберете ги сите" "Видеоповик" "Испрати порака" "Детали на повик" @@ -213,11 +217,9 @@ "Блокирани броеви" "%1$s веќе е блокиран." "Сметки за повикување" - "Вклучи" "Постави дозволи" "За да овозможите брзо бирање, вклучете ја дозволата за контакти." "За да ја видите евиденцијата на повици, вклучете ја дозволата за телефон." - "За да ги видите контактите, вклучете ја дозволата за контакти." "За да пристапите кон говорната пошта, вклучете ја дозволата за телефон." "За да ги пребарувате контактите, вклучете ги дозволите за контакти." "За да воспоставите повик, вклучете ја дозволата за телефон." 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 91accf4422..7655dbe233 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 @@ "വിളിച്ചുകൊണ്ടിരിക്കുന്ന കോളിലേക്ക് മടങ്ങുക" "കോൾ ചേർക്കുക" "ഇൻകമിംഗ് കോളുകൾ" + "ബൾക്ക് പ്രവർത്തന മോഡിലേക്ക് പ്രവേശിക്കുന്നു" + "ബൾക്ക് പ്രവർത്തന മോഡ് വിട്ടു" + "%1$s തിരഞ്ഞെടുത്തു" + "%1$s തിരഞ്ഞെടുത്തത് മാറ്റി" "വോയ്‌സ്‌മെയിൽ പ്ലേ ചെയ്യുക" "%1$s എന്ന കോൺടാക്റ്റ് കാണുക" "വിളിക്കുക %1$s" @@ -99,11 +103,13 @@ "വോയ്‌സ്‌മെയിൽ" "%s സെക്കൻഡ്" "%s മി. %s സെ." + "\'ബാച്ച് പ്രവർത്തനങ്ങൾ\' മോഡ് റദ്ദാക്കുക" "വോയ്‌സ്‌മെയിൽ" "വോയ്‌സ്മെയിലുകൾ" "അതെ" "ഇല്ല" "തിരഞ്ഞെടുത്ത %1$s ഇല്ലാതാക്കണോ?" + "%1$s എണ്ണം തിരഞ്ഞെടുത്തു" @string/call_log_header_today "%1$s, %2$s-ന്" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "സിം കാർഡിൽ നിന്നും ലോഡുചെയ്യുന്നു…" "സിം കാർഡ് കോൺടാക്റ്റുകൾ" - "കോൺടാക്റ്റ് അപ്ലിക്കേഷനൊന്നും ലഭ്യമല്ല" "വോയ്‌സ് തിരയൽ ലഭ്യമല്ല" "ഫോൺ അപ്ലിക്കേഷൻ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നതിനാൽ ഫോൺ കോൾ ചെയ്യാനാകില്ല." "കോണ്‍‌ടാക്റ്റുകള്‍ തിരയുക" @@ -145,10 +150,9 @@ "%s പുതിയ മിസ്‌ഡ് കോളുകൾ" "ഇതുവരെ ആരും നിങ്ങളുടെ സ്പീഡ് ഡയലിൽ ഇല്ല" "പ്രിയപ്പെട്ടത് ചേർക്കുക" - "നിങ്ങൾക്ക് ഇതുവരെയും കോൺടാക്റ്റുകൾ ഒന്നുമില്ല." - "ഒരു കോണ്‍ടാക്റ്റ് ചേര്‍ക്കുക" "എല്ലാ നമ്പറുകളും കാണാൻ ചിത്രം സ്‌പർശിക്കുക അല്ലെങ്കിൽ വീണ്ടും ക്രമീകരിക്കാൻ സ്‌പർശിച്ച് പിടിക്കുക" "നീക്കംചെയ്യുക" + "എല്ലാം തിരഞ്ഞെടുക്കുക" "വീഡിയോ കോള്‍" "ഒരു സന്ദേശം അയയ്‌ക്കുക" "കോൾ വിശദാംശങ്ങൾ" @@ -213,11 +217,9 @@ "ബ്ലോക്കുചെയ്ത നമ്പറുകൾ" "ഇതിനകം തന്നെ %1$s ബ്ലോക്കുചെയ്തിരിക്കുന്നു" "കോളിംഗ് അക്കൗണ്ട്" - "ഓണാക്കുക" "അനുമതികൾ സജ്ജമാക്കുക" "സ്പീഡ് ഡയൽ പ്രവർത്തനക്ഷമാക്കുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക." "നിങ്ങളുടെ കോൾ ലോഗ് കാണുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക." - "നിങ്ങളുടെ കോൺടാക്റ്റുകൾ കാണുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക." "നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ ആക്സസ് ചെയ്യുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക." "നിങ്ങളുടെ കോൺടാക്റ്റുകൾ തിരയുന്നതിന് കോൺടാക്റ്റുകൾക്കുള്ള അനുമതികൾ ഓണാക്കുക." "കോൾ വിളിക്കുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക." 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 a07a826d56..29bd8af422 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 @@ "Үргэлжилж буй дуудлага руу буцах" "Дуудлага нэмэх" "Ирж буй дуудлага" + "Багц үйлдлийн горимд орж байна" + "Багц үйлдлийн горимоос гарсан" + "%1$s сонгосон" + "%1$s сонголтыг болиулсан" "Дуут шууданг тоглуулах" "%1$s харилцагчийг харах" "%1$s руу залгах" @@ -99,11 +103,13 @@ "Дуут шуудан" "%s сек" "%s минут %s секунд" + "Багц үйлдлийн горимыг цуцлах" "дуут шуудан" "дуут шуудан" "Тийм" "Үгүй" "Сонгосон %1$s-г устгах уу?" + "%1$s сонгосон" @string/call_log_header_today "%1$s %2$s-д" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "SIM картаас уншиж байна…" "SIM картны харилцагчид" - "Ямар ч харилцагчдын апликейшн байхгүй байна." "Дуут хайлт хийх боломжгүй байна" "Утас аппликешныг идэвхгүйжүүлсэн тул утасны дуудлага хийх боломжгүй." "Харилцагчдаас хайх" @@ -145,10 +150,9 @@ "%s шинэ аваагүй дуудлага" "Таны яаралтай залгах тохиргоон дээр одоогоор харилцагч байхгүй байна" "Таалагдсан хэсэгт нэмэх" - "Танд одоогоор харилцагч байхгүй байна" - "Харилцагч нэмэх" "Бүх дугаарыг харахын тулд зурганд хүрнэ үү эсвэл жагсаалтыг өөрчлөхийн тулд удаан дарна уу." "Хасах" + "Бүгдийг сонгох" "Видео дуудлага" "Зурвас илгээх" "Дуудлагын мэдээлэл" @@ -213,11 +217,9 @@ "Блоклосон дугаар" "%1$s-г аль хэдийн блоклосон байна." "Дуудах бүртгэл" - "Идэвхжүүлэх" "Зөвшөөрөл тохируулах" "Яаралтай дуудлагыг идэвхжүүлэхийн тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү." "Дуудлагын жагсаалтыг харахын тулд утасны зөвшөөрлийг идэвхжүүлнэ үү." - "Харилцагчдаа харахын тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү." "Дуут шууданд хандахын тулд Утасны зөвшөөрлийг идэвхжүүлнэ үү." "Харилцагчаа хайхын тулд, Харилцагчийн жагсаалтын зөвшөөрлийг идэвхжүүлнэ үү." "Залгахын тулд Утасны зөвшөөрлийг идэвхжүүлнэ үү." 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 5aca7a5e25..ee21291e81 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 @@ "चालू असलेल्या कॉलवर परत जा" "कॉल जोडा" "येणारे कॉल" + "मोठ्या प्रमाणात क्रिया मोडमध्ये प्रवेश करीत आहे" + "मोठ्या प्रमाणात क्रिया मोड सोडत आहे" + "%1$s निवडले" + "%1$s ची निवड रद्द केली" "व्हॉइसमेल प्ले करा" "%1$s संपर्क पहा" "%1$s ला कॉल करा" @@ -99,11 +103,13 @@ "व्हॉइसमेल" "%s सेकंद" "%s मिनिट %s सेकंद" + "बॅच क्रिया मोड रद्द करा" "व्हॉइसमेल" "व्हॉइसमेल" "होय" "नाही" "निवडलेले %1$s हटवायचेे?" + "%1$s निवडले" @string/call_log_header_today "%1$s रोजी %2$s वाजता" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "सिम कार्ड मधून लोड करीत आहे..." "सिम कार्ड संपर्क" - "कोणताही संपर्क अॅप उपलब्ध नाही" "व्हॉइस शोध उपलब्ध नाही" "फोन अनुप्रयोग अक्षम केला गेला असल्याने फोन कॉल करणे शक्य नाही." "संपर्क शोधा" @@ -145,10 +150,9 @@ "%s नवीन सुटलेले कॉल" "अद्याप आपल्‍या स्पीड डायलवर कोणीही नाही" "एक आवडते जोडा" - "आपल्‍याकडे अद्याप कोणतेही संपर्क नाहीत" - "एक संपर्क जोडा" "सर्व नंबर पाहण्यासाठी प्रतिमेस स्पर्श करा किंवा पुन्हा क्रम लावण्यासाठी स्पर्श करा आणि धरून ठेवा" "काढा" + "सर्व निवडा" "व्हिडिओ कॉल" "एक संदेश पाठवा" "कॉल तपशील" @@ -213,11 +217,9 @@ "अवरोधित केलेले नंबर" "%1$s आधीच अवरोधित केलेला आहे." "कॉल करण्याची खाती" - "चालू करा" "परवानग्या सेट करा" "स्पीड डायल सक्षम करण्‍यासाठी, संपर्क परवानगी चालू करा." "आपला कॉल लॉग पाहण्‍यासाठी, फोन परवानगी चालू करा." - "आपले संपर्क पाहण्‍यासाठी, संपर्क परवानगी चालू करा." "आपल्‍या व्हॉइसमेलमध्‍ये प्रवेश करण्‍यासाठी, फोन परवानगी चालू करा." "आपले संपर्क शोधण्‍यासाठी, संपर्क परवानग्या चालू करा." "कॉल करण्यासाठी, फोन परवानगी चालू करा." 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 9dbe541d97..dbb0213595 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 @@ "Kembali ke panggilan yang sedang berlangsung" "Tambah panggilan" "Panggilan masuk" + "Memasuki mod tindakan pukal" + "Meninggalkan mod tindakan pukal" + "%1$s dipilih" + "%1$s dinyahpilih" "Mainkan mel suara" "Lihat kenalan %1$s" "Panggil %1$s" @@ -99,11 +103,13 @@ "Mel suara" "%s saat" "%s min %s saat" + "Batalkan mod tindakan kelompok" "mel suara" "mel suara" "Ya" "Tidak" "Padam %1$s yang dipilih?" + "%1$s dipilih" @string/call_log_header_today "%1$s pada %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Memuatkan dari kad SIM..." "Kenalan kad SIM" - "Tiada apl kenalan tersedia" "Carian suara tidak tersedia" "Tidak boleh membuat panggilan telefon kerana aplikasi Telefon telah dilumpuhkan." "Cari dalam kenalan" @@ -145,10 +150,9 @@ "%s panggilan terlepas baharu" "Belum ada sesiapa pada dail pantas anda" "Tambahkan kegemaran" - "Anda belum mempunyai sebarang kenalan" - "Tambahkan kenalan" "Sentuh imej untuk melihat semua nombor atau sentuh & tahan untuk menyusun semula" "Alih keluar" + "Pilih semua" "Panggilan video" "Hantar mesej" "Butiran panggilan" @@ -213,11 +217,9 @@ "Nombor yang disekat" "%1$s sudah disekat." "Akaun panggilan" - "Hidupkan" "Tetapkan kebenaran" "Untuk mendayakan dail laju, hidupkan kebenaran Kenalan." "Untuk melihat log panggilan anda, hidupkan kebenaran Telefon." - "Untuk melihat kenalan anda, hidupkan kebenaran Kenalan." "Untuk mengakses mel suara anda, hidupkan kebenaran Telefon." "Untuk mencari kenalan anda, hidupkan kebenaran Kenalan." "Untuk membuat panggilan, hidupkan kebenaran Telefon." 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 2b51b2054d..eecfeb234d 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 @@ "ဖုန်းပြန်ခေါ်မှု ပြုလုပ်နေစဉ်" "ဖုန်းခေါ်မှု ထပ်ထည့်ပါ" "အဝင်ခေါ်ဆိုမှုများ" + "တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်မုဒ်ကို ထည့်သွင်းခြင်း" + "တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်မုဒ်မှ ထွက်လိုက်သည်" + "ရွေးချယ်ထားသော %1$s" + "မရွေးချယ်ထားသော %1$s" "အသံပို့စာ နားထောင်ရန်" "%1$s လိပ်စာကြည့်ရန်" "%1$s ကိုခေါ်ပါ" @@ -99,11 +103,13 @@ "အသံစာပို့စနစ်" "%s စက္ကန့်" "%s မိနစ် %s စက္ကန့်" + "တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်များမုဒ်ကိ ပယ်ဖျက်ရန်" "အသံမေးလ်" "အသံမေးလ်များ" "Yes" "No" "ရွေးထားသော %1$s ကို ဖျက်လိုပါသလား။" + "%1$s ကို ရွေးချယ်ထားသည်" @string/call_log_header_today "%1$s %2$s ၌" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEIDနံပါတ်" "ဆင်းမ်ကဒ်မှ ဖွင့်နေပါသည်..." "ဆင်းမ်ကဒ်မှ အဆက်အသွယ်များ" - "အဆက်အသွယ်များ app မရှိ" "အသံဖြင့် ရှာဖွေမှု မရှိ" "ဖုန်း အပလီကေးရှင်းကို ပိတ်ထား၍ ဖုန်း ခေါ်ဆိုမှု မပြုလုပ်နိုင်ခဲ့ပါ။" "အဆက်အသွယ်များရှာပါ" @@ -145,10 +150,9 @@ "လွတ်သွားသောဖုန်း %s ခါ" "သင်၏အမြန်ခေါ်စာရင်းတွင် မည်သူမျှ မရှိသေးပါ" "အနှစ်သက်ဆုံးတစ်ခု ထည့်ရန်" - "သင့်တွင် မည်သည့်အဆက်အသွယ်မျှ မရှိသေးပါ" - "အဆက်အသွယ်တစ်ယောက် ထည့်မည်" "နံပါတ်အားလုံးကိုကြည့်ရန် ပုံကိုထိပါ (သို့) ပြန်စီရန် ထိပြီးဖိထားပါ" "ဖယ်ရှာခြင်း" + "အားလုံးကို ရွေးချယ်ပါ" "ဗီဒီယို ခေါ်ဆိုမှု" "စာ တစ်စောင် ပို့ပါ" "ဖုန်းခေါ်မှု အသေးစိတ်အချက်အလက်" @@ -213,11 +217,9 @@ "ပိတ်ထားသည့် နံပါတ်များ" "%1$s အားပိတ်ဆို့ထားပြီးပါပြီ။" "ခေါ်ဆိုသော အကောင့်များ" - "ဖွင့်ထားရန်" "ခွင့်ပြုချက်များ သတ်မှတ်မည်" "မြန်နှုန်းမြင့်ဖုန်းခေါ်ဆိုမှုကို ဖွင့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။" "ခေါ်ဆိုမှုမှတ်တမ်းကို ကြည့်ရန်၊ ဖုန်းခွင့်ပြုချက်ကို ဖွင့်ပါ။" - "အဆက်အသွယ်များကိုကြည့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။" "အသံမေးလ်ကိုအသုံးပြုရန်၊ ဖုန်းခွင့်ပြုချက်ကိုဖွင့်ပါ။" "သင့်အဆက်အသွယ်များကို ရှာဖွေရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်များကို ဖွင့်ပါ။" "ဖုန်းခေါ်ဆိုရန်၊ ဖုန်းခွင့်ပြုချက်ကိုဖွင့်ပါ။" 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 d92edc6491..bda4915b50 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 @@ "Gå tilbake til aktiv samtale" "Legg til en samtale" "Innkommende samtaler" + "Starter massehandlingsmodus" + "Massehandlingsmodus er avsluttet" + "Du har valgt %1$s" + "Du har valgt bort %1$s" "Spill av talemelding" "Se kontakten %1$s" "Ring %1$s" @@ -99,11 +103,13 @@ "Telefonsvarer" "%s sek" "%s min %s sek" + "Avbryt massehandlinsmodus" "talepost" "talepost" "Ja" "Nei" "Slett markert %1$s?" + "%1$s er valgt" @string/call_log_header_today "%1$s kl. %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Henter fra SIM-kort…" "Kontakter på SIM-kort" - "Ingen kontaktapper er tilgjengelige" "Talesøk er ikke tilgjengelig" "Kan ikke ringe fordi Telefon-appen er deaktivert." "Søk i kontakter" @@ -145,10 +150,9 @@ "%s nye tapte anrop" "Du har ingen på hurtigoppringning ennå" "Legg til en favoritt" - "Du har ingen kontakter ennå" - "Legg til en kontakt" "Trykk på bildet for å se alle numrene, eller trykk og hold for å omorganisere" "Fjern" + "Velg alle" "Videoanrop" "Send en melding" "Samtaleinformasjon" @@ -213,11 +217,9 @@ "Blokkerte numre" "%1$s er allerede blokkert." "Ringekontoer" - "Slå på" "Angi tillatelser" "For å slå på hurtigoppringning, slå på Kontakter-tillatelsen." "For å se samtaleloggen din, slå på Telefon-tillatelsen." - "For å se kontaktene dine, slå på Kontakter-tillatelsen." "For å få tilgang til talepostkassen, slå på Telefon-tillatelsen." "For å søke i kontaktene dine, slå på tillatelser for Kontakter." "For å ringe, slå på Telefon-tillatelsen." 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 90a3016e2e..8262a316c4 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 @@ "हुदै गरेको कलमा फर्कनुहोस्" "कल थप्नुहोस्" "आगमन कलहरू" + "बल्क कारबाही सम्बन्धी मोडमा प्रवेश गर्दै" + "बल्क कारबाही सम्बन्धी मोड छोडियो" + "%1$s चयन गरियो" + "%1$s चयन हटाइयो" "भ्वाइसमेल बजाउनुहोस्" "%1$s सम्पर्क हेर्नुहोस्" "कल %1$s" @@ -99,11 +103,13 @@ "भ्वाइसमेल" "%s सेकेन्ड" "%s मिनेट %s सकेन्ड" + "ब्याच सम्बन्धी कारबाहीको मोडलाई रद्द गर्नुहोस्" "भ्वाइस मेल" "भ्वाइस मेलहरू" "हो" "होइन" "चयन गरिएका %1$s लाई मेटाउने हो?" + "%1$s चयन गरियो" @string/call_log_header_today "%1$s मा %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "SIM कार्डबाट लोड हुँदै" "SIM कार्ड सम्पर्कहरू" - "कुनै पनि सम्पर्क अनुप्रयोग उपलब्ध छैन" "आवाज खोजी उपलब्ध छैन" "फोन अनुप्रयोग असक्षम गरिएकोले फोन गर्न सकिँदैन।" "सम्पर्कहरू खोज्नुहोस्" @@ -145,10 +150,9 @@ "%s नयाँ छुटेका कलहरु" "तपाईँको स्पिड डायलमा अझसम्म कोही छैन" "एक मनपर्ने थप्नुहोस्" - "तपाईँसँग अझसम्म कुनै सम्पर्कहरू छैनन्" - "एउटा सम्पर्क थप्नुहोस्" "सबै नम्बरहरू हेर्न छविलाई छुनुहोस् वा पुन:क्रमबद्ध गर्न छोइराख्नुहोस्" "हटाउँनुहोस्" + "सबैलाई चयन गर्नुहोस्" "भिडियो कल" "सन्देश पठाउनुहोस्" "कल विवरणहरु" @@ -213,11 +217,9 @@ "रोकिएका नम्बरहरू" "%1$s पहिले नै रोकिएको छ।" "खाता कलिङ" - "सक्रिय पार्नुहोस्" "अनुमतिहरू सेट गर्नुहोस्" "तीव्र डायल सक्षम गर्न, सम्पर्क अनुमति सक्षम गर्नुहोस्।" "आफ्नो कल लग हेर्न, फोन अनुमति सक्रिय गर्नुहोस्।" - "आफ्नो सम्पर्क हेर्न सम्पर्क अनुमति सक्रिय गर्नुहोस्।" "आफ्नो भ्वाइस मेल पहुँच गर्न, फोन अनुमति सक्रिय गर्नुहोस्" "तपाईँको सम्पर्कहरू खोज गर्न सम्पर्क अनुमतिहरू सक्रिय गर्नुहोस्।" "कल गर्न फोन अनुमति सक्रिय गर्नुहोस्।" 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 5f41b8063c..eed412d69f 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 @@ "Terug naar actief gesprek" "Oproep toevoegen" "Inkomende oproepen" + "Modus voor bulkacties openen" + "Modus voor bulkacties verlaten" + "%1$s geselecteerd" + "Selectie van %1$s opgeheven" "Voicemail afspelen" "Contact %1$s bekijken" "%1$s bellen" @@ -99,11 +103,13 @@ "Voicemail" "%s sec." "%s min. %s sec." + "Modus voor batchacties annuleren" "voicemail" "voicemails" "Ja" "Nee" "Geselecteerde %1$s verwijderen?" + "%1$s geselecteerd" @string/call_log_header_today "%1$s om %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Laden vanaf SIM-kaart..." "Contacten op SIM-kaart" - "Geen app voor contacten beschikbaar" "Gesproken zoekopdracht niet beschikbaar" "Kan niet bellen omdat de Telefoon-app is uitgeschakeld." "Contacten zoeken" @@ -145,10 +150,9 @@ "%s nieuwe gemiste oproepen" "Er staat nog niemand in je snelkeuzelijst" "Een favoriet toevoegen" - "Je hebt nog geen contacten" - "Contact toevoegen" "Tik op de afbeelding om alle nummers te bekijken of tik op de afbeelding en houd vast om opnieuw te rangschikken" "Verwijderen" + "Alles selecteren" "Videogesprek" "Een bericht verzenden" "Oproepdetails" @@ -213,11 +217,9 @@ "Geblokkeerde nummers" "%1$s is al geblokkeerd." "Oproepaccounts" - "Inschakelen" "Toestemmingen instellen" "Als je de snelkeuzefunctie wilt inschakelen, schakel je de machtiging voor Contacten in." "Als je je gesprekkenlijst wilt bekijken, schakel je de machtiging voor Telefoon in." - "Als je je contacten wilt bekijken, schakel je de machtiging voor Contacten in." "Als je je voicemail wilt beluisteren, schakel je de machtiging voor Telefoon in." "Als je naar contacten wilt zoeken, schakel je de contacttoestemming in." "Als je iemand wilt bellen, schakel je de machtiging voor Telefoon in." 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 d92edc6491..bda4915b50 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 @@ "Gå tilbake til aktiv samtale" "Legg til en samtale" "Innkommende samtaler" + "Starter massehandlingsmodus" + "Massehandlingsmodus er avsluttet" + "Du har valgt %1$s" + "Du har valgt bort %1$s" "Spill av talemelding" "Se kontakten %1$s" "Ring %1$s" @@ -99,11 +103,13 @@ "Telefonsvarer" "%s sek" "%s min %s sek" + "Avbryt massehandlinsmodus" "talepost" "talepost" "Ja" "Nei" "Slett markert %1$s?" + "%1$s er valgt" @string/call_log_header_today "%1$s kl. %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Henter fra SIM-kort…" "Kontakter på SIM-kort" - "Ingen kontaktapper er tilgjengelige" "Talesøk er ikke tilgjengelig" "Kan ikke ringe fordi Telefon-appen er deaktivert." "Søk i kontakter" @@ -145,10 +150,9 @@ "%s nye tapte anrop" "Du har ingen på hurtigoppringning ennå" "Legg til en favoritt" - "Du har ingen kontakter ennå" - "Legg til en kontakt" "Trykk på bildet for å se alle numrene, eller trykk og hold for å omorganisere" "Fjern" + "Velg alle" "Videoanrop" "Send en melding" "Samtaleinformasjon" @@ -213,11 +217,9 @@ "Blokkerte numre" "%1$s er allerede blokkert." "Ringekontoer" - "Slå på" "Angi tillatelser" "For å slå på hurtigoppringning, slå på Kontakter-tillatelsen." "For å se samtaleloggen din, slå på Telefon-tillatelsen." - "For å se kontaktene dine, slå på Kontakter-tillatelsen." "For å få tilgang til talepostkassen, slå på Telefon-tillatelsen." "For å søke i kontaktene dine, slå på tillatelser for Kontakter." "For å ringe, slå på Telefon-tillatelsen." 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 76d4b9b700..8e6540727e 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 @@ "ਪ੍ਰਗਤੀ ਵਿੱਚ ਕਾਲ ਤੇ ਵਾਪਸ ਜਾਓ" "ਕਾਲ ਜੋੜੋ" "ਇਨਕਮਿੰਗ ਕਾਲਾਂ" + "ਬਲਕ ਕਾਰਵਾਈ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੋਇਆ ਜਾ ਰਿਹਾ ਹੈ" + "ਬਲਕ ਕਾਰਵਾਈ ਮੋਡ ਨੂੰ ਛੱਡਿਆ" + "%1$s ਨੂੰ ਚੁਣਿਆ ਗਿਆ" + "%1$s ਨੂੰ ਅਣ-ਚੁਣਿਆ ਕੀਤਾ ਗਿਆ" "ਵੌਇਸਮੇਲ ਪਲੇ ਕਰੋ" "ਸੰਪਰਕ %1$s ਦੇਖੋ" "%1$s ਨੂੰ ਕਾਲ ਕਰੋ" @@ -99,11 +103,13 @@ "ਵੌਇਸਮੇਲ" "%s ਸਕਿੰਟ" "%s ਮਿੰਟ %s ਸਕਿੰਟ" + "ਬੈਚ ਕਾਰਵਾਈਆਂ ਮੋਡ ਨੂੰ ਰੱਦ ਕਰੋ" "ਵੌਇਸਮੇਲ" "ਵੌਇਸਮੇਲਾਂ" "ਹਾਂ" "ਨਹੀਂ" "ਕੀ ਚੁਣੀ(ਆਂ) ਹੋਈ(ਆਂ) %1$s ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?" + "%1$s ਨੂੰ ਚੁਣਿਆ ਗਿਆ" @string/call_log_header_today "%1$s ਨੂੰ %2$s ਵਜੇ" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "SIM ਕਾਰਡ ਵਿੱਚੋਂ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…" "SIM ਕਾਰਡ ਸੰਪਰਕ" - "ਕੋਈ ਸੰਪਰਕ ਐਪ ਉਪਲਬਧ ਨਹੀਂ" "ਵੌਇਸ ਖੋਜ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" "ਇੱਕ ਫੋਨ ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ ਕਿਉਂਕਿ ਫੋਨ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ।" "ਸੰਪਰਕ ਖੋਜੋ" @@ -145,10 +150,9 @@ "%s ਨਵੀਆਂ ਮਿਸਡ ਕਾਲਾਂ" "ਅਜੇ ਤੁਹਾਡੇ ਸਪੀਡ ਡਾਇਲ \'ਤੇ ਕੋਈ ਵੀ ਵਿਅਕਤੀ ਨਹੀਂ ਹੈ" "ਕੋਈ ਮਨਪਸੰਦ ਸ਼ਾਮਲ ਕਰੋ" - "ਤੁਹਾਡੇ ਕੋਲ ਅਜੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਹਨ।" - "ਕੋਈ ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ" "ਸਾਰੇ ਨੰਬਰਾਂ ਨੂੰ ਵੇਖਣ ਲਈ ਚਿਤਰ ਨੂੰ ਸਪਰਸ਼ ਕਰੋ ਜਾਂ ਦੁਬਾਰਾ ਕ੍ਰਮਬੱਧ ਕਰਨ ਲਈ ਸਪਰਸ਼ ਕਰੋ ਅਤੇ ਦਬਾਈ ਰੱਖੋ" "ਹਟਾਓ" + "ਸਭ ਚੁਣੋ" "ਵੀਡੀਓ ਕਾਲ" "ਇੱਕ ਸੁਨੇਹਾ ਭੇਜੋ" "ਕਾਲ ਵੇਰਵੇ" @@ -213,11 +217,9 @@ "ਬਲੌਕ ਕੀਤੇ ਗਏ ਨੰਬਰ" "%1$s ਪਹਿਲਾਂ ਹੀ ਬਲੌਕ ਕੀਤਾ ਹੋਇਆ ਹੈ।" "ਕਾਲਿੰਗ ਖਾਤੇ" - "ਚਾਲੂ ਕਰੋ" "ਅਨੁਮਤੀਆਂ ਸੈੱਟ ਕਰੋ" "ਸਪੀਡ ਡਾਇਲ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ, ਸੰਪਰਕ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।" "ਆਪਣਾ ਕਾਲ ਲੌਗ ਵੇਖਣ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।" - "ਆਪਣੇ ਸੰਪਰਕਾਂ ਨੂੰ ਵੇਖਣ ਲਈ, ਸੰਪਰਕ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।" "ਆਪਣੀ ਵੌਇਸਮੇਲ ਐਕਸੈਸ ਕਰਨ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।" "ਆਪਣੇ ਸੰਪਰਕਾਂ ਦੀ ਖੋਜ ਕਰਨ ਲਈ,, ਸੰਪਰਕ ਅਨੁਮਤੀਆਂ ਨੂੰ ਚਾਲੂ ਕਰੋ।" "ਕਾਲ ਕਰਨ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।" 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 76adfe579e..8f57a82b43 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 @@ "Wróć do aktywnego połączenia" "Dodaj połączenie" "Połączenia przychodzące" + "Włączono tryb działań zbiorczych" + "Wyłączono tryb działań zbiorczych" + "Wybrano: %1$s" + "Anulowano wybór: %1$s" "Odtwórz pocztę głosową" "Wyświetl kontakt %1$s" "Zadzwoń do: %1$s" @@ -101,11 +105,13 @@ "Poczta głosowa" "%s s" "%s min %s s" + "Anuluj tryb działań zbiorczych" "wiadomości głosowe" "wiadomości głosowe" "Tak" "Nie" "Usunąć wybrane %1$s?" + "Wybrane: %1$s" @string/call_log_header_today "%1$s o %2$s" "%1$02d:%2$02d" @@ -118,7 +124,6 @@ "Numer MEID" "Wczytuję z karty SIM…" "Kontakty z karty SIM" - "Nie jest dostępna aplikacja do obsługi kontaktów" "Wyszukiwanie głosowe jest niedostępne" "Nie można zadzwonić, ponieważ aplikacja Telefon została wyłączona." "Przeszukuj kontakty" @@ -147,10 +152,9 @@ "Nowe nieodebrane połączenia: %s" "Lista szybkiego wybierania jest pusta" "Dodaj do ulubionych" - "Nie masz jeszcze żadnych kontaktów" - "Dodaj kontakt" "Kliknij obraz, by zobaczyć wszystkie numery, lub kliknij go i przytrzymaj, by zmienić kolejność" "Usuń" + "Zaznacz wszystkie" "Rozmowa wideo" "Wyślij wiadomość" "Szczegóły połączenia" @@ -217,11 +221,9 @@ "Zablokowane numery" "Numer %1$s jest już zablokowany." "Konta telefoniczne" - "Włącz" "Ustaw uprawnienia" "Aby włączyć szybkie wybieranie, włącz uprawnienie Kontakty." "Aby zobaczyć swój rejestr połączeń, włącz uprawnienie Telefon." - "Aby zobaczyć swoje kontakty, włącz uprawnienie Kontakty." "Aby uzyskać dostęp do poczty głosowej, włącz uprawnienie Telefon." "Aby wyszukać kontakty, włącz uprawnienia Kontakty." "Aby nawiązać połączenie, włącz uprawnienie Telefon." 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 780ca07dbd..eb61923e99 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 @@ "Retornar para a chamada em espera" "Ad. cham." "Chamadas recebidas" + "Entrando no modo de ação em massa" + "Saindo do modo de ação em massa" + "%1$s selecionado" + "%1$s não selecionado" "Reproduzir mensagem de voz" "Visualizar contato %1$s" "Ligar para %1$s" @@ -99,11 +103,13 @@ "Correio de voz" "%s seg" "%s m %s s" + "Cancelar modo de ações em lote" "correio de voz" "correios de voz" "Sim" "Não" "Excluir a seleção de %1$s?" + "Itens selecionados: %1$s" @string/call_log_header_today "%1$s às %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Carregando do cartão SIM..." "Contatos do cartão SIM" - "Nenhum app de contatos disponível" "A pesquisa por voz não está disponível" "Não é possível fazer uma chamada porque o app Telefone foi desativado." "Pesquisar contatos" @@ -145,10 +150,9 @@ "%s novas chamadas perdidas" "Ainda não há ninguém na sua discagem rápida" "Adicionar favorito" - "Você ainda não tem contatos" - "Adicionar um contato" "Toque na imagem para ver todos os números ou toque e segure para reordenar" "Remover" + "Selecionar tudo" "Videochamada" "Enviar uma mensagem" "Detalhes da chamada" @@ -213,11 +217,9 @@ "Números bloqueados" "O número %1$s já está bloqueado." "Contas de chamadas" - "Ativar" "Definir permissões" "Para ativar a discagem rápida, ative a permissão para o app Contatos." "Para ver seu registro de chamadas, ative a permissão para o app Telefone." - "Para ver seus contatos, ative a permissão para o app Contatos." "Para acessar seu correio de voz, ative a permissão para o app Telefone." "Para pesquisar seus contatos, ative as permissões para \"Contatos\"." "Para fazer uma chamada, ative a permissão para o app Telefone." 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 95fa75c7e7..493f846c4c 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 @@ "Voltar à chamada em curso" "Adicionar chamada" "Chamadas recebidas" + "A entrar no modo de ação em massa…" + "Saiu do modo de ação em massa" + "%1$s selecionado" + "%1$s não selecionado" "Reproduzir mensagem de correio de voz" "Ver o contacto %1$s" "Ligar a %1$s" @@ -99,11 +103,13 @@ "Correio de voz" "%s seg" "%s min. %s seg." + "Cancelar modo de ações em lote" "mensagem de correio de voz" "mensagens de correio de voz" "Sim" "Não" "Pretende eliminar a(s) %1$s selecionada(s)?" + "%1$s selecionada(s)" @string/call_log_header_today "%1$s às %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "A carregar a partir do cartão SIM..." "Contactos no cartão SIM" - "Não existe nenhuma aplicação de contactos disponível" "Pesquisa por voz não disponível" "Não é possível efetuar uma chamada porque a aplicação Telefone foi desativada." "Pesquisar contactos" @@ -145,10 +150,9 @@ "%s chamadas não atendidas novas" "Ainda não tem ninguém na marcação rápida" "Adicionar um favorito" - "Ainda não tem nenhum contacto" - "Adicionar um contacto" "Toque na imagem para ver todos os números ou toque sem soltar para reordenar" "Remover" + "Selecionar tudo" "Videochamada" "Enviar uma mensagem" "Detalhes da chamada" @@ -213,11 +217,9 @@ "Números bloqueados" "%1$s já está bloqueado." "Contas de chamadas" - "Ativar" "Definir autorizações" "Para ativar a marcação rápida, ative a autorização Contactos." "Para ver o registo de chamadas, ative a autorização Telemóvel." - "Para ver os seus contactos, ative a autorização Contactos." "Para aceder ao correio de voz, ative a autorização Telemóvel." "Para pesquisar os seus contactos, ative as autorizações Contactos." "Para efetuar uma chamada, ative a autorização Telemóvel." 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 780ca07dbd..eb61923e99 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 @@ "Retornar para a chamada em espera" "Ad. cham." "Chamadas recebidas" + "Entrando no modo de ação em massa" + "Saindo do modo de ação em massa" + "%1$s selecionado" + "%1$s não selecionado" "Reproduzir mensagem de voz" "Visualizar contato %1$s" "Ligar para %1$s" @@ -99,11 +103,13 @@ "Correio de voz" "%s seg" "%s m %s s" + "Cancelar modo de ações em lote" "correio de voz" "correios de voz" "Sim" "Não" "Excluir a seleção de %1$s?" + "Itens selecionados: %1$s" @string/call_log_header_today "%1$s às %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Carregando do cartão SIM..." "Contatos do cartão SIM" - "Nenhum app de contatos disponível" "A pesquisa por voz não está disponível" "Não é possível fazer uma chamada porque o app Telefone foi desativado." "Pesquisar contatos" @@ -145,10 +150,9 @@ "%s novas chamadas perdidas" "Ainda não há ninguém na sua discagem rápida" "Adicionar favorito" - "Você ainda não tem contatos" - "Adicionar um contato" "Toque na imagem para ver todos os números ou toque e segure para reordenar" "Remover" + "Selecionar tudo" "Videochamada" "Enviar uma mensagem" "Detalhes da chamada" @@ -213,11 +217,9 @@ "Números bloqueados" "O número %1$s já está bloqueado." "Contas de chamadas" - "Ativar" "Definir permissões" "Para ativar a discagem rápida, ative a permissão para o app Contatos." "Para ver seu registro de chamadas, ative a permissão para o app Telefone." - "Para ver seus contatos, ative a permissão para o app Contatos." "Para acessar seu correio de voz, ative a permissão para o app Telefone." "Para pesquisar seus contatos, ative as permissões para \"Contatos\"." "Para fazer uma chamada, ative a permissão para o app Telefone." 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 725ff4a3cd..93d01888a1 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 @@ "Reveniți la apelul în curs" "Adăugați un apel" "Apeluri de intrare" + "Se intră în modul acțiune în bloc" + "Ați ieșit din modul acțiune în bloc" + "S-a selectat %1$s" + "S-a deselectat %1$s" "Redați mesajul vocal" "Afișați persoana din agendă %1$s" "Apelați %1$s" @@ -100,11 +104,13 @@ "Mesagerie vocală" "%s secunde" "%s min. %s sec." + "Anulați modul de acțiuni în lot" "mesagerie vocală" "mesaje vocale" "Da" "Nu" "Ștergeți cele %1$s selectate?" + "%1$s selectate" @string/call_log_header_today "%1$s la %2$s" "%1$02d:%2$02d" @@ -117,7 +123,6 @@ "MEID" "Se încarcă de pe cardul SIM..." "Persoanele din agendă de pe cardul SIM" - "Nu este disponibilă nicio aplicație pentru agendă" "Căutarea vocală nu este disponibilă" "Nu se poate efectua un apel telefonic, deoarece aplicația Telefon a fost dezactivată." "Căutați în Agendă" @@ -146,10 +151,9 @@ "%s apeluri nepreluate noi" "Nicio persoană de contact setată pentru apelarea rapidă" "Adăugați o persoană de contact preferată" - "Nu aveți încă persoane de contact" - "Adăugați o persoană de contact" "Atingeți imaginea pentru a vedea toate numerele sau atingeți lung pentru reordonare" "Eliminați" + "Selectați tot" "Apel video" "Trimiteți un mesaj" "Detaliile apelului" @@ -215,11 +219,9 @@ "Numere blocate" "%1$s este deja blocat." "Conturi pentru apelare" - "Activați" "Setați permisiunile" "Pentru a activa apelarea rapidă, activați permisiunea Agendă." "Pentru a vedea jurnalul de apeluri, activați permisiunea Telefon." - "Pentru a vedea persoanele de contact, activați permisiunea Agendă." "Pentru a accesa mesageria vocală, activați permisiunea Telefon." "Pentru a căuta în persoanele de contact, activați permisiunea Agendă." "Pentru a apela, activați permisiunea Telefon." 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 557832bcda..54278c40b1 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 @@ "Вернуться к текущему вызову" "Добавить вызов" "Входящие вызовы" + "Вы вошли в режим массового действия" + "Вы вышли из режима массового действия" + "Выбран объект %1$s" + "Выбор объекта %1$s отменен" "Прослушать голосовую почту" "Просмотреть данные: %1$s" "Вызов: %1$s" @@ -101,11 +105,13 @@ "Голосовая почта" "%s сек." "%s мин. %s сек." + "Отмена режима массового действия" "голосовое сообщение" "голосовые сообщения" "Да" "Нет" "Удалить %1$s?" + "Выбрано: %1$s" @string/call_log_header_today "%1$s в %2$s" "%1$02d:%2$02d" @@ -118,7 +124,6 @@ "MEID" "Загрузка с SIM-карты…" "Контакты на SIM-карте" - "Нет приложения для работы с контактами" "Голосовой поиск недоступен" "Нельзя совершать телефонные звонки, поскольку приложение \"Телефон\" отключено." "Поиск в контактах" @@ -147,10 +152,9 @@ "Пропущенных вызовов: %s" "Нет номеров для быстрого набора" "Настроить быстрый набор" - "Нет контактов" - "Добавить контакт" "Коснитесь изображения, чтобы увидеть все номера, или нажмите и удерживайте, чтобы изменить порядок" "Удалить" + "Выбрать все" "Видеовстреча" "Отправить сообщение" "Сведения о вызове" @@ -217,11 +221,9 @@ "Заблокированные номера" "%1$s уже заблокирован." "Аккаунты для звонков" - "Включить" "Задать разрешения" "Чтобы настроить быстрый набор, предоставьте приложению разрешение \"Контакты\"." "Чтобы открыть список вызовов, предоставьте приложению разрешение \"Телефон\"." - "Чтобы открыть список контактов, предоставьте приложению разрешение \"Контакты\"." "Чтобы получить доступ к голосовой почте, предоставьте приложению разрешение \"Телефон\"." "Для поиска контактов включите разрешение \"Контакты\"." "Чтобы позвонить, предоставьте приложению разрешение \"Телефон\"." 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 329d89e8d8..63634577fa 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 @@ "පවතින ඇමතුමට නැවත යන්න" "ඇමතුමක් එක් කරන්න" "එන ඇමතුම්" + "තොග ක්‍රියා ප්‍රකාරය ඇතුළු කරමින්" + "තොග ක්‍රියා ප්‍රකාරය හැර යන ලදී" + "%1$s තෝරා ගන්නා ලදී" + "%1$s තෝරා ගැනීම ඉවත් කරන ලදී" "හඬ තැපෑල ධාවනය කිරීම" "%1$s සම්බන්ධතාවය බලන්න" "%1$s අමතන්න" @@ -99,11 +103,13 @@ "හඬ තැපෑල" "තත් %s" "මිනි %s තත් %s" + "කාණ්ඩ ක්‍රියා ප්‍රකාරය අවලංගු කරන්න" "හඬ තැපෑල" "හඬ තැපැල්" "ඔව්" "නැත" "තෝරා ගත් %1$s මකන්නද?" + "%1$s තෝරා ගන්නා ලදි" @string/call_log_header_today "%1$s දින %2$sට" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "SIM පතෙන් පූරණය කරමින්…" "SIM පත් සම්බන්ධතා" - "සබඳතා යෙදුමක් ලබාගත නොහැකිය" "හඬ සෙවුම ලබාගත නොහැකිය" "දුරකථන යෙදුම අබල කර ඇති නිසා දුරකථන ඇමතුම ලබාගැනීම කළ නොහැක." "සම්බන්ධතා සෙවීම" @@ -145,10 +150,9 @@ "නව මඟ හැරුණු ඇමතුම් %s" "ඔබගේ වේග ඩයල් එකේ තවමත් කවුරුවත් නැහැ" "ප්‍රියතම ලෙස එක් කරන්න" - "ඔබ තවමත් සම්බන්ධතා නැහැ" - "සම්බන්ධතාවයක් එක් කරන්න" "සියලු අංක බැලීමට රූපය ස්පර්ශ කරන්න නැතහොත් නැවත අනුපිළිවෙළට සැකසීමට ස්පර්ශ කර අල්ලාගෙන සිටින්න" "ඉවත් කරන්න" + "සියල්ල තෝරන්න" "වීඩියෝ ඇමතුම" "පණිවිඩයක් යවන්න" "ඇමතුම් විස්තර" @@ -213,11 +217,9 @@ "අවහිර කළ අංක" "%1$s දැනටමත් අවහිර කර ඇත." "ගිණුම් ඇමතීම" - "ක්‍රියාත්මක කරන්න" "අවසර සකසන්න" "වේග ඩයල් කිරීම සබල කිරීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න." "ඔබේ ඇමතුම් ලොගය බැලීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න." - "ඔබේ සම්බන්ධතා බැලීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න." "ඔබේ හඬ තැපෑල වෙත ප්‍රවේශ වීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න." "ඔබේ සම්බන්ධතා සෙවීමට, සම්බන්ධතා අවසර ක්‍රියාත්මක කරන්න." "ඇමතුමක් ලබා ගැනීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න." 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 60b63d5206..f7bf4237c4 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 @@ "Návrat k prebiehajúcemu hovoru" "Pridať hovor" "Prichádzajúce hovory" + "Vstupuje sa do režimu hromadných akcií" + "Odišli ste z režimu hromadných akcií" + "Položka %1$s bola vybraná" + "Výber položky %1$s bol zrušený" "Prehrať hlasovú správu" "Zobraziť kontakt %1$s" "Zavolať kontakt %1$s" @@ -101,11 +105,13 @@ "Hlasová schránka" "%s s" "%s min. %s s" + "Zrušiť režim hromadných akcií" "hlasová správa" "hlasové správy" "Áno" "Nie" "Chcete odstrániť vybraté položky (%1$s)?" + "Vybraté: %1$s" @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -118,7 +124,6 @@ "MEID" "Prebieha načítavanie z SIM karty..." "Kontakty na SIM karte" - "Nie je k dispozícii žiadna aplikácia na kontakty" "Hlasové vyhľadávanie nie je k dispozícii" "Nie je možné volať, pretože aplikácia Telefón bola deaktivovaná." "Hľadať v kontaktoch" @@ -147,10 +152,9 @@ "Nové zmeškané hovory: %s" "V rýchlej voľbe zatiaľ nemáte žiadny kontakt" "Pridať obľúbený kontakt" - "Zatiaľ nemáte žiadne kontakty" - "Pridať kontakt" "Klepnutím na obrázok môžete zobraziť všetky čísla. Pridržaním obrázka môžete zmeniť poradie." "Odstrániť" + "Vybrať všetko" "Videohovor" "Odoslať správu" "Podrobnosti hovoru" @@ -217,11 +221,9 @@ "Blokované čísla" "Číslo %1$s je už blokované." "Telefónne účty" - "Zapnúť" "Nastaviť povolenia" "Ak chcete aktivovať rýchlu voľbu, zapnite povolenie Kontakty." "Ak si chcete zobraziť denník hovorov, zapnite povolenie Telefón." - "Ak si chcete zobraziť kontakty, zapnite povolenie Kontakty." "Ak chcete používať hlasovú schránku, zapnite povolenie Telefón." "Ak chcete hľadať kontakty, zapnite povolenie Kontakty." "Ak chcete volať, zapnite povolenie Telefón." 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 b46b99ab58..d3c57dd92b 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 @@ "Nazaj na klic, ki poteka" "Dodaj klic" "Dohodni klici" + "Prehod v način množičnega dejanja" + "Prehod iz načina množičnega dejanja" + "Izbrano: %1$s" + "Preklican izbor: %1$s" "Predvajanje sporočil glasovne pošte" "Ogled stika %1$s" "Pokliči %1$s" @@ -101,11 +105,13 @@ "Glasovna pošta" "%s s" "%s min %s s" + "Prekliči način množičnega dejanja" "sporočilo v odzivniku" "sporočila v odzivniku" "Da" "Ne" "Želite izbrisati %1$s?" + "Št. izbranih: %1$s" @string/call_log_header_today "%1$s ob %2$s" "%1$02d:%2$02d" @@ -118,7 +124,6 @@ "MEID" "Nalaganje s kartice SIM ..." "Stiki na kartici SIM" - "Ni aplikacije za stike" "Glasovno iskanje ni na voljo" "Ni mogoče opraviti telefonskega klica, ker je aplikacija Telefon onemogočena." "Iskanje stikov" @@ -147,10 +152,9 @@ "Št. novih zgrešenih klicev: %s" "Na seznamu za hitro klicanje nimate še nikogar" "Dodajte priljubljenega" - "Nimate še stikov" - "Dodajte stik" "Dotaknite se slike, da prikažete vse številke, ali pa se je dotaknite in pridržite, da spremenite vrstni red." "Odstrani" + "Izberi vse" "Videoklic" "Pošljite sporočilo" "Podrobnosti klica" @@ -217,11 +221,9 @@ "Blokirane številke" "Telefonska številka %1$s je že blokirana." "Računi za klicanje" - "Vklop" "Nastavi dovoljenja" "Če želite omogočiti hitro klicanje, vklopite dovoljenje za stike." "Če si želite ogledati dnevnik klicev, vklopite dovoljenje za telefon." - "Če si želite ogledati stike, vklopite dovoljenje za stike." "Če želite dostopati do sporočil v odzivniku, vklopite dovoljenje za telefon." "Če želite iskati po stikih, vklopite dovoljenje za stike." "Če želite klicati, vklopite dovoljenje za telefon." 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 6a274fcd25..84704459c7 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 @@ "Kthehu te telefonata" "Shto një telefonatë" "Telefonatat hyrëse" + "Po hyn në modalitetin e veprimit në masë" + "U largove nga modaliteti i veprimit në masë" + "U zgjodh %1$s" + "Zgjedhja e %1$s u anulua" "Luaj postën zanore" "Shiko kontaktin %1$s" "Telefono %1$s" @@ -99,11 +103,13 @@ "Posta zanore" "%s sekonda" "%s min. e %s sek." + "Anulo modalitetin e veprimeve në grup" "posta zanore" "postat zanore" "Po" "Jo" "Të fshihen %1$s të zgjedhura?" + "%1$s të zgjedhura" @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Po ngarkon nga karta SIM…" "Kontaktet e kartës SIM" - "Nuk mund të përdoret asnjë aplikacion për kontaktet" "Kërkimi me zë nuk mundësohet" "Telefonata nuk mund të bëhet sepse aplikacioni \"Telefoni\" është i çaktivizuar." "Kërko për kontakte" @@ -145,10 +150,9 @@ "%s telefonata të reja të humbura" "Askush nuk është ende në thirrjen tënde të shpejtuar" "Shto një të preferuar" - "Nuk ke ende kontakte" - "Shto një kontakt" "Prek imazhin për të parë të gjithë numrat ose mbaje të shtypur për ta pozicionuar përsëri" "Hiq" + "Zgjidh të gjitha" "Telefonatë me video" "Dërgo një mesazh" "Detajet e telefonatës" @@ -213,11 +217,9 @@ "Numrat e bllokuar" "%1$s është i bllokuar tashmë." "Llogaritë e telefonatave" - "Aktivizo" "Cakto lejet" "Për të aktivizuar thirrjen e shpejtuar, aktivizo lejen e Kontakteve." "Për të parë evidencën e telefonatave, aktivizo lejen e Telefonit." - "Për të parë kontaktet, aktivizo lejen e Kontakteve." "Për të pasur qasje në postën zanore, aktivizo lejen e Telefonit." "Për të kërkuar kontaktet, aktivizo lejet e Kontakteve" "Për të kryer një telefonatë, aktivizo lejen e Telefonit." 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 0def958d49..6cf7a7c856 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 @@ "Врати се на позив који је у току" "Додај позив" "Долазни позиви" + "Улазите у режим групних радњи" + "Изашли сте из режима групних радњи" + "Изабрано је %1$s" + "Опозван је избор %1$s" "Пуштање говорне поште" "Прикажи контакт %1$s" "Позови %1$s" @@ -100,11 +104,13 @@ "Говорна пошта" "%s сек" "%s мин %s сек" + "Откажите режим групних радњи" "говорну поруку" "говорне поруке" "Да" "Не" "Желите ли да избришете изабрану(е) %1$s?" + "Изабраних: %1$s" @string/call_log_header_today "%1$s у %2$s" "%1$02d:%2$02d" @@ -117,7 +123,6 @@ "MEID" "Учитава се са SIM картице…" "Контакти на SIM картици" - "Нема доступне апликације за контакте" "Гласовна претрага није доступна" "Није могуће упутити телефонски позив јер је апликација Телефон онемогућена." "Претражи контакте" @@ -146,10 +151,9 @@ "Нових пропуштених позива: %s" "Немате ниједан контакт на брзом бирању" "Додај омиљен контакт" - "Још увек немате ниједан контакт" - "Додај контакт" "Додирните слику да бисте видели све бројеве или додирните и задржите да бисте им променили распоред" "Уклони" + "Изабери све" "Видео позив" "Пошаљи поруку" "Детаљи позива" @@ -215,11 +219,9 @@ "Блокирани бројеви" "%1$s је већ блокиран." "Налози за позивање" - "Укључи" "Подеси дозволе" "Да бисте омогућили брзо бирање, укључите дозволу за Контакте." "Да бисте видели евиденцију позива, укључите дозволу за Телефон." - "Да бисте видели контакте, укључите дозволу за Контакте." "Да бисте приступили говорној пошти, укључите дозволу за Телефон." "Да бисте претражили контакте, укључите дозволе за Контакте." "Да бисте упутили позив, укључите дозволу за Телефон." 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 75aa731f9b..71ef3e55bc 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 @@ "Återvänd till pågående samtal" "Lägg t. samt." "Inkommande samtal" + "Öppnar läget för massåtgärd" + "Stängde läget för massåtgärd" + "Markerade %1$s" + "Avmarkerade %1$s" "Spela upp röstmeddelande" "Visa kontakten %1$s" "Ring %1$s" @@ -99,11 +103,13 @@ "Röstbrevlåda" "%s sekund" "%s min %s sek" + "Avbryt läget för massåtgärd" "röstbrevlåda" "röstmeddelanden" "Ja" "Nej" "Vill du radera markerade %1$s?" + "%1$s har markerats" @string/call_log_header_today "%1$s kl. %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Läser in från SIM-kort…" "Kontakter från SIM-kort" - "Det finns inga appar för kontakter" "Röstsökning är inte tillgänglig" "Det går inte att ringa eftersom appen Telefon har inaktiverats." "Sök efter kontakter" @@ -145,10 +150,9 @@ "%s nya missade samtal" "Du har ingen kontakt som snabbval ännu" "Lägg till en favorit" - "Du har inga kontakter ännu" - "Lägg till en kontakt" "Tryck på bilden för att visa alla nummer eller tryck länge för att ändra ordningen" "Ta bort" + "Markera alla" "Videosamtal" "Skicka ett meddelande" "Samtalsinfo" @@ -213,11 +217,9 @@ "Blockerade nummer" "%1$s är redan blockerat." "Konton för samtal" - "Aktivera" "Ange behörigheter" "Du måste aktivera behörigheten Kontakter för att kunna använda snabbuppringning." "Du måste aktivera behörigheten Telefon för att kunna visa samtalsloggen." - "Du måste aktivera behörigheten Kontakter för att kunna visa kontakterna." "Du måste aktivera behörigheten Telefon för att kunna komma åt röstmeddelanden." "Aktivera behörigheter för Kontakter om du vill söka bland kontakterna." "Du måste aktivera behörigheten Telefon för att kunna ringa." 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 d3b8392d47..9cbdd3e8e3 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 @@ "Rudi kwa simu inayoendelea" "Ongeza simu" "Simu zinazoingia" + "Unaingia katika hali ya kutekeleza vitendo vingi" + "Umeondoka katika hali ya kutekeleza vitendo vingi" + "Umeteua %1$s" + "Umebatilisha uteuzi wa %1$s" "Sikiliza ujumbe wa sauti" "Angalia anwani %1$s" "Pigia %1$s" @@ -99,11 +103,13 @@ "Ujumbe wa sauti" "Sekunde %s" "Dak %s sek %s" + "Ghairi hali ya kutekeleza vitendo vingi" "ujumbe wa sauti" "ujumbe wa sauti" "Ndiyo" "Hapana" "Je, ungependa kufuta %1$s uliochagua?" + "%1$s zimechaguliwa" @string/call_log_header_today "%1$s saa %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Inapakia kutoka SIM kadi..." "Anwani za SIM kadi" - "Hakuna programu za mawasiliano zinazopatikana" "Kutafuta kwa kutamka hakupatikani" "Haiwezi kupiga simu kwa sababu programu ya Simu imezimwa." "Tafuta anwani" @@ -145,10 +150,9 @@ "Simu %s za karibuni ambazo hazikujibiwa" "Hakuna mtu aliye katika orodha yako ya watu unaowasiliana nao zaidi" "Ongeza anwani unazopenda zaidi" - "Bado huna anwani zozote" - "Ongeza anwani" "Gusa picha ili uone nambari zote ama uguse na kushikilia ili upange upya" "Ondoa" + "Chagua zote" "Hangout ya Video" "Tuma SMS" "Maelezo ya simu" @@ -213,11 +217,9 @@ "Nambari zilizozuiwa" "%1$s tayari imezuiwa." "Akaunti za simu" - "Washa" "Weka ruhusa" "Ili kuwasha kipengele cha unaowasiliana nao zaidi, washa ruhusa ya Anwani." "Ili uone rekodi yako ya nambari za simu, washa ruhusa ya Simu." - "Ili uone anwani zako, washa ruhusa ya Anwani." "Ili ufikie ujumbe wako wa sauti, washa ruhusa ya Simu." "Ili utafute anwani zako, washa ruhusa za Anwani." "Ili upige simu, washa ruhusa ya Simu." 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 afb852b6d1..a91088c4fd 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 @@ "செயலிலுள்ள அழைப்பிற்குத் திரும்பு" "அழைப்பைச் சேர்" "உள்வரும் அழைப்புகள்" + "மொத்தச் செயல் பயன்முறையில் நுழைகிறீர்கள்" + "மொத்தச் செயல் பயன்முறையிலிருந்து வெளியேறிவிட்டீர்கள்" + "தேர்ந்தெடுத்த %1$s" + "தேர்வுநீக்கிய %1$s" "குரலஞ்சலை இயக்கு" "%1$s தொடர்பைக் காட்டு" "%1$s ஐ அழை" @@ -99,11 +103,13 @@ "குரலஞ்சல்" "%s வி" "%s நிமிடம் %s வினாடி" + "தொகுப்புச் செயல்கள் பயன்முறையை ரத்துசெய்யும்" "குரலஞ்சல்" "குரலஞ்சல்கள்" "ஆம்" "வேண்டாம்" "தேர்ந்தெடுத்த %1$sஐ நீக்கவா?" + "%1$s தேர்ந்தெடுக்கப்பட்டன" @string/call_log_header_today "%1$s அன்று %2$s மணிக்கு" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "சிம் கார்டிலிருந்து ஏற்றுகிறது…" "சிம் கார்டின் தொடர்புகள்" - "தொடர்புகள் பயன்பாடு எதுவுமில்லை" "குரல் தேடல் இல்லை" "Phone பயன்பாடு முடக்கப்பட்டுள்ளதால், ஃபோன் அழைப்பைச் செய்ய முடியாது." "தொடர்புகளைத் தேடு" @@ -145,10 +150,9 @@ "%s புதிய தவறிய அழைப்புகள்" "இன்னும் விரைவு டயலில் யாரையும் சேர்க்கவில்லை" "முக்கியமானவர்களைச் சேர்" - "இதுவரை எந்தத் தொடர்புகளும் இல்லை" - "ஒரு தொடர்பைச் சேர்க்கவும்" "எல்லா எண்களையும் பார்க்க, படத்தைத் தொடவும் அல்லது மறுவரிசைப்படுத்த, தொட்டுப் பிடித்திருக்கவும்" "அகற்று" + "அனைத்தையும் தேர்ந்தெடு" "வீடியோ அழைப்பு" "செய்தி அனுப்பவும்" "அழைப்பு விவரங்கள்" @@ -213,11 +217,9 @@ "தடுக்கப்பட்ட எண்கள்" "%1$s ஏற்கனவே தடுக்கப்பட்டுள்ளது." "அழைப்பு கணக்குகள்" - "இயக்கு" "அனுமதிகளை அமை" "விரைவு டயலை இயக்க, தொடர்புகள் அனுமதியை இயக்கவும்." "அழைப்புப் பதிவைப் பார்க்க, ஃபோன் அனுமதியை இயக்கவும்." - "தொடர்புகளைப் பார்க்க, தொடர்புகள் அனுமதியை இயக்கவும்." "குரலஞ்சலை அணுக, ஃபோன் அனுமதியை இயக்கவும்." "தொடர்புகளைத் தேட, தொடர்புகள் அனுமதிகளை இயக்கவும்." "அழைக்க, ஃபோன் அனுமதியை இயக்கவும்." 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 ffc046f691..aecc1c4b93 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 @@ "ప్రోగ్రెస్‌లో ఉన్న కాల్‌కు వెళ్లు" "కాల్‌ను జోడించు" "ఇన్‌కమింగ్ కాల్‌లు" + "బల్క్ చర్య మోడ్‌లోకి ప్రవేశిస్తున్నారు" + "బల్క్ చర్య మోడ్ నుండి నిష్క్రమించారు" + "%1$s ఎంచుకోబడింది" + "%1$s ఎంపిక తీసివేయబడింది" "వాయిస్ మెయిల్ ప్లే చేయండి" "%1$s పరిచయాన్ని వీక్షించండి" "%1$sకు కాల్ చేయి" @@ -99,11 +103,13 @@ "వాయిస్ మెయిల్" "%s సెక" "%s నిమి %s సెక" + "సమూహ చర్యల మోడ్‌ను రద్దు చేస్తుంది" "వాయిస్ మెయిల్" "వాయిస్ మెయిల్‌లు" "అవును" "వద్దు" "ఎంచుకున్న %1$sను తొలగించాలా?" + "%1$s ఎంచుకోబడ్డాయి" @string/call_log_header_today "%1$s %2$sకి" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "సిమ్ కార్డు నుండి లోడ్ చేస్తోంది…" "సిమ్ కార్డు పరిచయాలు" - "పరిచయాల అనువర్తనం ఏదీ అందుబాటులో లేదు" "వాయిస్ శోధన అందుబాటులో లేదు" "ఫోన్ అనువర్తనం నిలిపివేయబడినందున ఫోన్ కాల్ చేయలేరు." "పరిచయాలను శోధించు" @@ -145,10 +150,9 @@ "%s కొత్త సమాధానం ఇవ్వని కాల్‌లు" "మీ స్పీడ్ డయల్‌లో ఇంకా ఎవరూ లేరు" "ఇష్టమైన వారిని జోడించండి" - "మీకు ఇప్పటికీ పరిచయాలేవీ లేవు" - "పరిచయాన్ని జోడించండి" "అన్ని నంబర్‌లను చూడటానికి చిత్రాన్ని తాకండి లేదా క్రమం మార్చడానికి తాకి, కాసేపు అలాగే ఉంచండి" "తీసివేయి" + "అన్నీ ఎంచుకోండి" "వీడియో కాల్" "సందేశాన్ని పంపు" "కాల్ వివరాలు" @@ -213,11 +217,9 @@ "బ్లాక్ చేయబడిన నంబర్‌లు" "%1$s ఇప్పటికే బ్లాక్ చేయబడింది." "కాల్ చేసే ఖాతాలు" - "ఆన్ చేయి" "అనుమతులను సెట్ చేయి" "స్పీడ్ డయల్‌ను ప్రారంభించడానికి, పరిచయాల అనుమతిని ఆన్ చేయండి." "మీ కాల్ లాగ్‌ను చూడటానికి, ఫోన్ అనుమతిని ఆన్ చేయండి." - "మీ పరిచయాలను చూడటానికి, పరిచయాల అనుమతిని ఆన్ చేయండి." "మీ వాయిస్ మెయిల్‌ను ప్రాప్యత చేయడానికి, ఫోన్ అనుమతిని ఆన్ చేయండి." "మీ పరిచయాలను శోధించడానికి, పరిచయాల అనుమతులను ఆన్ చేయండి." "కాల్ చేయడానికి, ఫోన్ అనుమతిని ఆన్ చేయండి." 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 13916a51d6..58507b49e6 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 @@ "กลับไปคุยสายต่อ" "เพิ่มการโทร" "สายโทรเข้า" + "กำลังเข้าสู่โหมดการดำเนินการแบบกลุ่ม" + "ออกจากโหมดการทำงานแบบกลุ่มแล้ว" + "เลือก %1$s แล้ว" + "ยกเลิกการเลือก %1$s แล้ว" "เล่นข้อความเสียง" "ดูรายชื่อติดต่อ %1$s" "โทรหา %1$s" @@ -99,11 +103,13 @@ "ข้อความเสียง" "%s วินาที" "%s นาที %s วินาที" + "ยกเลิกโหมดการทำงานแบบกลุ่ม" "ข้อความเสียง" "ข้อความเสียง" "ใช่" "ไม่" "ลบ%1$sที่เลือกหรือไม่" + "เลือกไว้ %1$s รายการ" @string/call_log_header_today "วันที่ %1$s เวลา %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "กำลังโหลดจากซิมการ์ด…" "รายชื่อบนซิมการ์ด" - "ไม่มีแอปรายชื่อติดต่อที่พร้อมใช้งาน" "การค้นหาด้วยเสียงไม่พร้อมใช้งาน" "ไม่สามารถโทรศัพท์ได้เนื่องจากแอปพลิเคชันโทรศัพท์ถูกปิดใช้งาน" "ค้นหารายชื่อติดต่อ" @@ -145,10 +150,9 @@ "สายที่ไม่ได้รับใหม่ %s สาย" "ยังไม่ได้กำหนดผู้ใดในการโทรด่วน" "เพิ่มรายการโปรด" - "คุณยังไม่มีรายชื่อติดต่อ" - "เพิ่มรายชื่อติดต่อ" "แตะรูปภาพเพื่อดูหมายเลขทั้งหมด หรือแตะค้างไว้เพื่อจัดเรียงใหม่" "ลบ" + "เลือกทั้งหมด" "แฮงเอาท์วิดีโอ" "ส่งข้อความ" "รายละเอียดการโทร" @@ -201,7 +205,7 @@ "ข้อความเสียง" "เลือกซิมสำหรับการตั้งค่าข้อความเสียง" "การบล็อกสายเรียกเข้าปิดชั่วคราว" - "ระบบปิดใช้การบล็อกสายเรียกเข้าเนื่องจากคุณติดต่อบริการฉุกเฉินจากโทรศัพท์เครื่องนี้ภายใน 48 ชั่วโมงที่ผ่านมา ระบบจะเปิดใช้คุณลักษณะนี้อีกครั้งโดยอัตโนมัติเมื่อครบ 48 ชั่วโมง" + "ระบบปิดใช้การบล็อกสายเรียกเข้าเนื่องจากคุณติดต่อบริการฉุกเฉินจากโทรศัพท์เครื่องนี้ภายใน 48 ชั่วโมงที่ผ่านมา ระบบจะเปิดใช้ฟีเจอร์นี้อีกครั้งโดยอัตโนมัติเมื่อครบ 48 ชั่วโมง" "นำเข้าหมายเลข" "ก่อนหน้านี้คุณได้ทำเครื่องหมายว่าให้ส่งผู้โทรบางคนไปยังข้อความเสียงโดยอัตโนมัติผ่านแอปอื่นๆ" "ดูหมายเลข" @@ -213,11 +217,9 @@ "หมายเลขที่ถูกบล็อก" "%1$s ถูกบล็อกอยู่แล้ว" "บัญชีการโทร" - "เปิด" "ตั้งค่าสิทธิ์" "หากต้องการเปิดใช้การโทรด่วน ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ" "หากต้องการดูประวัติการโทร ให้เปิดสิทธิ์เข้าถึงโทรศัพท์" - "หากต้องการดูรายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ" "หากต้องการเข้าถึงข้อความเสียง ให้เปิดสิทธิ์เข้าถึงโทรศัพท์" "หากต้องการค้นหารายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ" "หากต้องการโทรออก ให้เปิดสิทธิ์เข้าถึงโทรศัพท์" 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 cc44cb5f25..9a8157feae 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 @@ "Bumalik sa kasalukuyang tawag" "Mag-add: tawag" "Mga paparating na tawag" + "Pumapasok sa bulk action mode" + "Umalis sa bulk action mode" + "Napili %1$s" + "Inalis sa pagkakapili %1$s" "I-play ang voicemail" "Tingnan ang contact na si %1$s" "Tawagan si %1$s" @@ -99,11 +103,13 @@ "Voicemail" "%s sec" "%s min %s sec" + "Kanselahin ang batch actions mode" "voicemail" "mga voicemail" "Oo" "Hindi" "I-delete ang napiling %1$s?" + "%1$s ang napili" @string/call_log_header_today "%1$s ng %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Naglo-load mula sa SIM card…" "Mga contact sa SIM card" - "Walang available na app ng mga contact" "Hindi available ang paghahanap gamit ang boses" "Hindi makagawa ng tawag sa telepono dahil naka-disable ang application na Telepono." "Maghanap ng mga contact" @@ -145,10 +150,9 @@ "%s (na) bagong hindi nasagot na tawag" "Wala pang tao sa iyong speed dial" "Magdagdag ng paborito" - "Wala ka pang sinumang mga contact" - "Magdagdag ng contact" "Pindutin ang larawan upang makita ang lahat ng numero o pindutin nang matagal upang ayusing muli" "Alisin" + "Piliin lahat" "Mag-video call" "Magpadala ng mensahe" "Mga detalye ng tawag" @@ -213,11 +217,9 @@ "Mga naka-block na numero" "Naka-block na ang %1$s" "Account sa pagtawag" - "I-on" "Magtakda ng mga pahintulot" "Upang i-enable ang speed dial, i-on ang pahintulot ng Mga Contact." "Upang makita ang iyong log ng tawag, i-on ang pahintulot ng Telepono." - "Upang makita ang iyong mga contact, i-on ang pahintulot ng Mga Contact." "Upang ma-access ang iyong voicemail, i-on ang pahintulot ng Telepono." "Upang hanapin ang iyong mga contact, i-on ang mga pahintulot sa Mga Contact." "Upang tumawag, i-on ang pahintulot ng Telepono." 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 2f6f704f89..17bd6645c7 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 @@ "Çağrıya dön" "Çağrı ekle" "Gelen çağrılar" + "Toplu işlem moduna giriliyor" + "Toplu işlem modundan çıkıldı" + "Seçildi: %1$s" + "Seçimi kaldırıldı: %1$s" "Sesli mesajı oynat" "Kişiyi görüntüle: %1$s" "Ara: %1$s" @@ -99,11 +103,13 @@ "Sesli Mesaj" "%s sn." "%s dk. %s sn." + "Toplu işlemler modu iptal edilir" "sesli mesaj" "sesli mesajlar" "Evet" "Hayır" "Seçili %1$s silinsin mi?" + "%1$s öğe seçildi" @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "SIM karttan yükleniyor..." "SIM kart kişileri" - "Kullanılabilir rehber uygulaması yok" "Sesli arama kullanılamaz" "Telefon uygulaması devre dışı bırakıldığından telefon edilemiyor." "Kişilerde ara" @@ -145,10 +150,9 @@ "%s yeni cevapsız çağrı" "Hızlı arama listenizde henüz kimse yok" "Favori ekle" - "Henüz kayıtlı kişi yok" - "Kişi ekle" "Tüm numaraları görmek için resme dokunun veya yeniden sıralamak için dokunup basılı tutun" "Kaldır" + "Tümünü seç" "Video görüşmesi" "İleti gönder" "Çağrı ayrıntıları" @@ -213,11 +217,9 @@ "Engellenen numaralar" "%1$s numaralı telefon zaten engellendi." "Çağrı hesapları" - "Aç" "İzinleri ayarla" "Hızlı aramayı etkinleştirmek için Kişiler iznini açın." "Çağrı günlüğünüzü görmek için Telefon iznini açın." - "Kişilerinizi görmek için Kişiler iznini açın." "Sesli mesajınıza erişmek için Telefon iznini açın." "Kişilerinizde arama yapmak için Kişiler izinlerini açın." "Telefon etmek için Telefon iznini açın." 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 9a790125b9..a020a1f1b7 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 @@ "Повернутися до поточного виклику" "Додати виклик" "Вхідні виклики" + "Перехід у режим масових дій" + "Ви вийшли з режиму масових дій" + "Вибрано користувача %1$s" + "Скасовано вибір користувача %1$s" "Відтворити голосову пошту" "Переглянути контакт %1$s" "Набрати %1$s" @@ -101,11 +105,13 @@ "Голосова пошта" "%s с" "%s хв %s с" + "Скасувати режим масових дій" "голосова пошта" "голосова пошта" "Так" "Ні" "Видалити вибране (%1$s)?" + "Вибрано %1$s" @string/call_log_header_today "%1$s о %2$s" "%1$02d:%2$02d" @@ -118,7 +124,6 @@ "MEID" "Завантаж. із SIM-карти…" "Контакти SIM-карти" - "Немає додатка з контактами" "Голосовий пошук недоступний" "Не вдається здійснити дзвінок, оскільки додаток Телефон вимкнено." "Пошук контактів" @@ -147,10 +152,9 @@ "Нових пропущених дзвінків: %s" "Немає номерів для швидкого набору" "Додати номер" - "Ще немає контактів" - "Додати контакт" "Торкніться зображення, щоб побачити всі номери, або натисніть і утримуйте, щоб змінити порядок." "Видалити" + "Вибрати все" "Відеодзвінок" "Надіслати повідомлення" "Деталі виклику" @@ -217,11 +221,9 @@ "Заблоковані номери" "Номер %1$s уже заблоковано." "Обл. записи для дзвінків" - "Увімкнути" "Налаштувати дозволи" "Щоб активувати швидкий набір, увімкніть дозвіл \"Контакти\"." "Щоб переглянути журнал викликів, увімкніть дозвіл \"Телефон\"." - "Щоб переглянути контакти, увімкніть дозвіл \"Контакти\"." "Щоб користуватися голосовою поштою, увімкніть дозвіл \"Телефон\"." "Щоб шукати контакти, увімкніть дозвіл \"Контакти\"." "Щоб зателефонувати, увімкніть дозвіл \"Телефон\"." 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 25198711bf..d696bd54c1 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 @@ "جاری کال پر واپس لوٹیں" "کال شامل کریں" "آنے والی کالیں" + "بلک کاروائی موڈ میں داخل ہو رہا ہے" + "بلک کاروائی موڈ چھوڑ دیا" + "منتخب کردہ %1$s" + "غیر منتخب کردہ %1$s" "صوتی میل چلائیں" "رابطہ %1$s دیکھیں" "%1$s کو کال کریں" @@ -99,11 +103,13 @@ "صوتی میل" "%s سیکنڈ" "%s منٹ %s سیکنڈ" + "بیچ کاروائی موڈ منسوخ کریں" "صوتی میل" "صوتی میلز" "ہاں" "نہیں" "منتخب کردہ %1$s حذف کریں؟" + "%1$s منتخب کردہ" @string/call_log_header_today "%1$s بوقت %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "‏SIM کارڈ سے لوڈ ہو رہا ہے…" "‏SIM کارڈ کے رابطے" - "رابطوں کی کوئی ایپ دستیاب نہیں ہے" "صوتی تلاش دستیاب نہیں ہے" "فون کال نہیں کی جا سکتی ہے کیونکہ فون ایپلیکیشن کو غیر فعال کر دیا گیا ہے۔" "رابطے تلاش کریں" @@ -145,10 +150,9 @@ "%s نئی چھوٹی ہوئی کالیں" "آپ کے اسپیڈ ڈائل پر ابھی تک کوئی نہیں ہے" "ایک پسندیدہ شامل کریں" - "آپ کے پاس ابھی تک کوئی رابطے نہیں ہیں" - "ایک رابطہ شامل کریں" "سبھی نمبرز دیکھنے کیلئے تصویر ٹچ کریں یا دوبارہ ترتیب دینے کیلئے ٹچ کریں اور پکڑے رہیں" "ہٹائیں" + "سبھی کو منتخب کریں" "ویڈیو کال" "پیغام بھیجیں" "کال کی تفصیلات" @@ -213,11 +217,9 @@ "مسدود کردہ نمبرز" "%1$s پہلے ہی مسدود ہے۔" "کالنگ اکاؤنٹس" - "آن کریں" "اجازتیں طے کریں" "اسپیڈ ڈائل کو فعال کرنے کیلئے رابطوں کی اجازت آن کریں۔" "اپنا کال لاگ دیکھنے کیلئے فون کی اجازت آن کریں۔" - "اپنے رابطے دیکھنے کیلئے رابطوں کی اجازت آن کریں۔" "اپنی صوتی میل تک رسائی کیلئے فون کی اجازت آن کریں۔" "اپنے رابطوں کو تلاش کرنے کیلئے رابطوں کی اجازتیں آن کریں۔" "کال کرنے کیلئے فون کی اجازت آن کریں۔" 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 705cae7654..aa645bf88c 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 @@ "Amaldagi chaqiruvga qaytish" "Chaqiruv qo‘shish" "Kiruvchi qo‘ng‘iroqlar" + "Yoppasiga bajariladigan amallar rejimiga o‘tilmoqda" + "Yoppasiga bajariladigan amallar rejimidan chiqib ketildi" + "%1$s tanlandi" + "%1$s tanlovi bekor qilindi" "Ovozli xabarni eshitish" "%1$s kontaktini ko‘rish" "Qo‘ng‘iroq: %1$s" @@ -99,11 +103,13 @@ "Ovozli pochta" "%s soniya" "%s daq %s son" + "Yoppasiga bajariladigan amallar rejimini bekor qilish" "ovozli xabar" "ovozli xabarlar" "Ha" "Yo‘q" "Tanlangan %1$s o‘chirib tashlansinmi?" + "Tanlandi: %1$s" @string/call_log_header_today "%1$s, %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "SIM kartadan yuklanmoqda…" "SIM karta kontaktlari" - "Hech qanday kontakt ilovasi yo‘q" "Ovozli qidiruv mavjud emas" "Telefon ilovasi o‘chirib qo‘yilgani sababli telefon qo‘ng‘iroqlarini amalga oshirib bo‘lmaydi." "Kontaktlar ichidan qidirish" @@ -145,10 +150,9 @@ "%s ta javobsiz chaqiruv" "Tezkor terish uchun hech kim yo‘q" "Tezkor raqam terishni sozlang" - "Sizda hali hech qanday kontakt yo‘q" - "Yangi kontakt qo‘shing" "Barcha raqamlarni ko‘rish uchun rasm ustiga bosing yoki joyini o‘zgartirish uchun rasmni bosib turing." "O‘chirish" + "Hammasini tanlash" "Video qo‘ng‘iroq" "Xabar yuborish" "Chaqiruv tafsilotlari" @@ -213,11 +217,9 @@ "Bloklangan raqamlar" "%1$s raqami allaqachon bloklangan." "Chaqiruv uchun hisoblar" - "Yoqish" "Ruxsatnomalarni sozlash" "Tezkor raqam terish uchun “Kontaktlar” ruxsatnomasini yoqing." "Qo‘ng‘iroqlaringiz ro‘yxatini ko‘rish uchun “Telefon” ruxsatnomasini yoqing." - "Kontaktlaringizni ko‘rish uchun “Kontaktlar” ruxsatnomasini yoqing." "Ovozli pochtaga kirish uchun “Telefon” ruxsatnomasini yoqing." "Kontaktlarni qidirish uchun “Kontaktlar” ruxsatnomasini yoqing." "Qo‘ng‘iroq qilish uchun “Telefon” ruxsatnomasini yoqing." 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 5a60e0ac3c..dda7c15230 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 @@ "Quay lại cuộc gọi đang thực hiện" "Thêm cuộc gọi" "Cuộc gọi đến" + "Truy cập chế độ tác vụ hàng loạt" + "Đã rời khỏi chế độ tác vụ hàng loạt" + "Đã chọn %1$s" + "Đã bỏ chọn %1$s" "Phát thư thoại" "Xem thông tin liên hệ của %1$s" "Gọi %1$s" @@ -99,11 +103,13 @@ "Thư thoại" "%s giây" "%s phút %s giây" + "Hủy chế độ tác vụ hàng loạt" "thư thoại" "thư thoại" "Có" "Không" "Xóa %1$s đã chọn?" + "Đã chọn %1$s" @string/call_log_header_today "%1$s lúc %2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "Đang tải từ thẻ SIM…" "Danh bạ trên thẻ SIM" - "Không có ứng dụng danh bạ" "Không có tính năng tìm kiếm bằng giọng nói" "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." "Tìm kiếm trong danh bạ" @@ -145,10 +150,9 @@ "%s cuộc gọi nhỡ mới" "Chưa có ai trong danh bạ quay số nhanh của bạn" "Thêm liên hệ quay số nhanh yêu thích" - "Bạn chưa có bất kỳ liên hệ nào" - "Thêm liên hệ" "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" "Xóa" + "Chọn tất cả" "Cuộc gọi điện video" "Gửi tin nhắn" "Chi tiết cuộc gọi" @@ -213,11 +217,9 @@ "Số bị chặn" "%1$s đã bị chặn." "Tài khoản gọi" - "Bật" "Đặt quyền" "Để bật quay số nhanh, bật quyền đối với Danh bạ." "Để xem nhật ký cuộc gọi của bạn, bật quyền đối với Điện thoại." - "Để xem danh bạ của bạn, bật quyền đối với Danh bạ." "Để truy cập thư thoại của bạn, bật quyền đối với Điện thoại." "Để tìm kiếm liên hệ của bạn, hãy bật quyền đối với Danh bạ." "Để thực hiện cuộc gọi, bật quyền đối với Điện thoại." 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 98abc396a6..672614e484 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 @@ "返回正在进行的通话" "添加通话" "来电" + "正在进入批量操作模式" + "已退出批量操作模式" + "已选择 %1$s" + "已取消选择 %1$s" "播放语音邮件" "查看联系人%1$s" "呼叫%1$s" @@ -99,11 +103,13 @@ "语音信箱" "%s 秒" "%s 分钟 %s 秒" + "取消批量操作模式" "语音邮件" "语音邮件" "是" "否" "要删除所选的%1$s吗?" + "已选择 %1$s 封" @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "正从 SIM 卡中加载..." "SIM卡联系人" - "没有可用的通讯录应用" "无法使用语音搜索" "“电话”应用已被停用,因此无法拨打电话。" "搜索联系人" @@ -145,10 +150,9 @@ "%s个新的未接电话" "尚未给任何联系人设定快速拨号" "添加常用联系人" - "您还没有任何联系人" - "添加联系人" "触摸图片可查看所有号码,触摸并按住可重新排序" "移除" + "全选" "视频通话" "发送短信" "通话详情" @@ -213,11 +217,9 @@ "已屏蔽的号码" "%1$s 已被屏蔽。" "通话帐号" - "开启" "设置权限" "要启用快速拨号功能,请开启“通讯录”权限。" "要查看您的通话记录,请开启“电话”权限。" - "要查看您的联系人,请开启“通讯录”权限。" "要使用您的语音信箱,请开启“电话”权限。" "要搜索您的联系人,请开启“通讯录”权限。" "要拨打电话,请开启“电话”权限。" 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 2a96ce045d..f3dc44baf9 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 @@ "返回進行中的通話" "新增通話" "來電" + "正在進入大量操作模式" + "已離開大量操作模式" + "已選取%1$s" + "已取消選取%1$s" "播放語音留言" "查看聯絡人%1$s" "打電話給%1$s" @@ -99,11 +103,13 @@ "留言" "%s 秒" "%s%s 秒" + "取消批量操作模式" "留言" "留言" "是" "否" "要刪除所選的%1$s嗎?" + "已選取 %1$s 個" @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "正在從 SIM 卡載入..." "SIM 卡聯絡人" - "沒有可用的聯絡人應用程式" "無法使用語音搜尋" "由於「電話」應用程式已停用,因此無法打電話。" "搜尋聯絡人" @@ -145,10 +150,9 @@ "%s 個新的未接來電" "快速撥號名單中沒有聯絡人" "新增常用聯絡人" - "暫時沒有聯絡人" - "新增聯絡人" "輕觸圖片以查看所有電話號碼,或輕觸並按住圖片以重新排序" "移除" + "全選" "視像通話" "傳送訊息" "通話詳情" @@ -213,11 +217,9 @@ "已封鎖的號碼" "已封鎖 %1$s。" "通話帳戶" - "開放權限" "設定權限" "如要啟用快速撥號功能,請開放「通訊錄」權限。" "如要查看通話記錄,請開放「手機」權限。" - "如要查看聯絡人,請開放「通訊錄」權限。" "如要存取留言信箱,請開放「手機」權限。" "如要搜尋聯絡人,請開啟「通訊錄」權限。" "如要撥打電話,請開放「手機」權限。" 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 9174521339..473955c5d9 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 @@ "返回進行中的通話" "新增通話" "來電" + "已進入大量操作模式" + "已離開大量操作模式" + "已選取:%1$s" + "已取消選取:%1$s" "播放語音留言" "查看聯絡人%1$s" "撥電話給%1$s" @@ -99,11 +103,13 @@ "語音留言" "%s 秒" "%s%s 秒" + "取消批次操作模式" "語音留言" "語音留言" "是" "否" "要刪除選取的%1$s嗎?" + "已選取 %1$s 個" @string/call_log_header_today "%1$s%2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "MEID" "從 SIM 卡讀取中…" "SIM 卡聯絡人" - "沒有可用的聯絡人應用程式" "無法使用語音搜尋" "「電話」應用程式已遭停用,因此無法撥打電話。" "搜尋聯絡人" @@ -145,10 +150,9 @@ "%s 通新的未接來電" "您的快速撥號功能尚未設定任何聯絡人" "新增常用聯絡人" - "您尚未加入任何聯絡人" - "新增聯絡人" "輕觸圖片即可查看所有號碼,按住則可重新排序" "移除" + "全選" "視訊通話" "傳送簡訊" "通話詳細資料" @@ -213,11 +217,9 @@ "已封鎖的號碼" "%1$s 已在封鎖清單中。" "通話帳戶" - "開啟" "設定權限" "如要啟用快速撥號,請開啟「聯絡人」存取權限。" "如要查看您的通話紀錄,請開啟「電話」存取權限。" - "如要查看您的聯絡人,請開啟「聯絡人」存取權限。" "如要存取您的語音信箱,請開啟「電話」存取權限。" "如要搜尋您的聯絡人,請開啟「聯絡人」存取權限。" "如要撥打電話,請開啟「電話」存取權限。" 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 9c8a6b8e10..93843aa2ca 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 @@ "Buyela kukholi eqhubekayo" "Yengeza ikholi" "Amakholi angenayo" + "Kungenwa kumodi yesenzo senqwaba" + "Ishiye imodi yesenzo senqwaba" + "Kukhethwe i-%1$s" + "Akukhethiwe i-%1$s" "Dlala i-imeyli yezwi" "Bheka oxhumana naye %1$s" "Shayela %1$s" @@ -99,11 +103,13 @@ "Ivoyisimeyili" "%s isekhondi" "%s amaminithi %s amasekhondi" + "Khansela imodi lezenzo zeqoqo" "ivoyisimeyili" "ama-meyli ezwi" "Yebo" "Cha" "Susa okukhethiwe %1$s?" + "Engu-%1$s ekhethiwe" @string/call_log_header_today "%1$s ngo-%2$s" "%1$02d:%2$02d" @@ -116,7 +122,6 @@ "I-MEID" "Ilayisha kusuka ekhadini le-SIM..." "Othintana nabo bekhadi le-SIM" - "Alukho uhlelo lokusebenza loxhumana nabo olutholakalayo" "Usesho lwezwi alutholakali" "Ayikwazi ukwenza ikholi yefoni ngoba uhlelo lokusebenza lwefoni likhutshaziwe." "Sesha othintana nabo" @@ -145,10 +150,9 @@ "%s amakholi amasha owaphuthelwe" "Akekho umuntu osekudayeleni kwakho okusheshayo okwamanje" "Engeza intandokazi" - "Awunabo oxhumana nabo okwamanje" - "Engeza oxhumana naye" "Thinta isithombe ukuze ubone zonke izinombolo noma thinta bese ubambe ukuze uhlele kabusha" "Susa" + "Khetha konke" "Ikholi yevidiyo" "Thumela umlayezo" "Imininingwane yekholi" @@ -213,11 +217,9 @@ "Izinombolo ezivinjiwe" "%1$s isivinjiwe kakade." "Ama-akhawunti wokushaya" - "Vula" "Setha izimvume" "Nika amandla ukudayela okusheshayo, vula imvume yoxhumana nabo." "Ukuze ubone irekhodi lakho lamakholi, vuma imvume yefoni." - "Ukuze ubone oxhumana nabo, vula imvume yoxhumana nabo." "Ukuze ufinyelele ivoyisimeyili, vula imvume yefoni." "Ukuze useshe oxhumana nabo, vula izimvume zoxhumana nabo." "Ukuze ubeke ikholi, vula imvume yefoni." diff --git a/java/com/android/dialer/app/res/values/colors.xml b/java/com/android/dialer/app/res/values/colors.xml index cf6b926be6..2f6d87b498 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 @@ @color/dialer_theme_color - - #fafafa #f9f9f9 @color/background_dialer_light @@ -69,8 +67,6 @@ #4d4d4d - #b2b2b2 - #ffffff diff --git a/java/com/android/dialer/app/res/values/dimens.xml b/java/com/android/dialer/app/res/values/dimens.xml index 7da29c7a32..57c43ebbd4 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 @@ 10dp - 20dp - 16sp - 16dp 16dp diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml index 9e1fdeb5a5..6110601d81 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 @@ Incoming calls + + Entering bulk action mode + + + Left bulk action mode + + + Selected %1$s + + + Unselected %1$s + %s min %s sec + + Cancel batch actions mode + voicemail voicemails Yes No Delete selected %1$s? + %1$s selected + @@ -411,9 +446,6 @@ SIM card contacts - - No contacts app available - Voice search not available @@ -514,12 +546,6 @@ Add a favorite - - You don\'t have any contacts yet - - - Add a contact - Remove + + Select all + @@ -554,7 +583,7 @@ Call ^1 - Missed call from ^1, ^2, ^3, ^4. @@ -841,9 +870,6 @@ button_dtmf_settings - - Turn on - Set permissions @@ -853,9 +879,6 @@ To see your call log, turn on the Phone permission. - - To see your contacts, turn on the Contacts permission. - To access your voicemail, turn on the Phone permission. diff --git a/java/com/android/dialer/app/res/values/styles.xml b/java/com/android/dialer/app/res/values/styles.xml index 7adf7ca2c5..592f06d29f 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 @@ true @style/DialtactsActionBarStyle @style/DialtactsActionBarStyle + @style/ActionModeStyle + @style/ActionModeStyle + @null true - @drawable/ic_back_arrow + @drawable/quantum_ic_arrow_back_vd_theme_24 @style/ListViewStyle - @drawable/list_title_holo 32dip 7dp 24dp @@ -66,7 +68,7 @@ @style/DialerButtonTextStyle - 32dip + 48dip 8dip @style/Dialpad.Light @@ -129,6 +131,12 @@ @dimen/actionbar_contentInsetStart + + - - - - - + + + + + + + diff --git a/java/com/android/dialer/util/CallUtil.java b/java/com/android/dialer/util/CallUtil.java index 81a4bb21e1..b6ab3b30e0 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 466e862043..72a59eaefe 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 9e10583830..fe0e861102 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 similarity index 87% rename from java/com/android/dialer/app/widget/EmptyContentView.java rename to java/com/android/dialer/widget/EmptyContentView.java index cfc8665a21..a76ab98d6a 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 b136f47eb4..615ad3b776 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 similarity index 100% rename from java/com/android/dialer/app/res/drawable-hdpi/empty_contacts.png rename to java/com/android/dialer/widget/res/drawable-hdpi/empty_contacts.png 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 similarity index 100% rename from java/com/android/dialer/app/res/drawable-mdpi/empty_contacts.png rename to java/com/android/dialer/widget/res/drawable-mdpi/empty_contacts.png 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 similarity index 100% rename from java/com/android/dialer/app/res/drawable-xhdpi/empty_contacts.png rename to java/com/android/dialer/widget/res/drawable-xhdpi/empty_contacts.png 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 similarity index 100% rename from java/com/android/dialer/app/res/drawable-xxhdpi/empty_contacts.png rename to java/com/android/dialer/widget/res/drawable-xxhdpi/empty_contacts.png 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 similarity index 100% rename from java/com/android/dialer/app/res/drawable-xxxhdpi/empty_contacts.png rename to java/com/android/dialer/widget/res/drawable-xxxhdpi/empty_contacts.png 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 c4aac65fb3..023b0ffe2e 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"/> + android:visibility="gone" + android:maxLines="1" + android:ellipsize="end"/> \ 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 similarity index 92% rename from java/com/android/dialer/app/res/layout/empty_content_view.xml rename to java/com/android/dialer/widget/res/layout/empty_content_view.xml index 96a6a02621..1777443853 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 @@ + android:layout_toStartOf="@+id/count_and_send_container" + android:inputType="textShortMessage|textCapSentences" + android:imeOptions="actionSend"/> "Skryf \'n gepasmaakte boodskap" "Maak toe" + "Jy het nog nie enige kontakte nie" + "Voeg \'n kontak by" + "Skakel aan" + "Skakel die kontaktetoestemming aan om jou kontakte te sien." + "Geen kontakte-program beskikbaar nie" 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 f11b468350..8a5353e18b 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"> "ብጁ መልዕክት ይጻፉ" "ዝጋ" + "ገና ምንም እውቂያዎች የሉዎትም" + "እውቂያ ያክሉ" + "አብራ" + "የእርስዎን እውቂያዎች ለማየት፣ የእውቂያዎች ፍቃዱን ያብሩ።" + "ምንም የእውቂያዎች መተግበሪያ አይገኝም" 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 cb2e733787..7947903ce7 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"> "كتابة رسالة مخصصة" "إغلاق" + "ليست لديك أية جهات اتصال حتى الآن" + "إضافة جهة اتصال" + "تشغيل" + "للاطلاع على جهات الاتصال، شغِّل إذن جهات الاتصال." + "لا يتوفر تطبيق لجهات الاتصال" 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 3860a58467..7a1389a1a4 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"> "Fərdi mesaj yazın" "Bağlayın" + "Hələ heç bir kontakt yoxdur" + "Kontakt əlavə edin" + "Aktiv edin" + "Kontaktları görmək üçün Kontakt icazəsini aktiv edin." + "Kontakt tətbiqi əlçatan deyil" 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 daefd90202..46b29d27cf 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"> "Napišite prilagođenu poruku" "Zatvorite" + "Još uvek nemate nijedan kontakt" + "Dodaj kontakt" + "Uključi" + "Da biste videli kontakte, uključite dozvolu za Kontakte." + "Nema dostupne aplikacije za kontakte" 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 87861321fc..38c8a80ca8 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"> "Напісаць карыстальніцкае паведамленне" "Закрыць" + "У вас пакуль няма ніякіх кантактаў" + "Дадаць кантакт" + "Уключыць" + "Каб бачыць свае кантакты, уключыце дазвол для Кантактаў." + "Праграмы для аперацый з кантактамі няма" 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 35e980c5fc..00ce56454d 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"> "Напишете свое съобщение" "Затваряне" + "Още нямате контакти" + "Добавяне на контакт" + "Включване" + "За да видите контактите си, включете разрешението за Контакти." + "Няма налично приложение за контакти" 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 9e17071147..96b75db59a 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"> "একটি কাস্টম বার্তা লিখুন" "বন্ধ করুন" + "আপনার এখনও পর্যন্ত কোনো পরিচিতি নেই" + "একটি পরিচিতি যোগ করুন" + "চালু করুন" + "আপনার পরিচিতিগুলি দেখতে, পরিচিতিগুলির অনুমতি চালু করুন।" + "কোনো পরিচিতি অ্যাপ্লিকেশান উপলব্ধ নয়" 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 0bc1a9c15e..df24ee16b7 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"> "Napišite prilagođenu poruku" "Zatvori" + "Još nemate nijedan kontakt" + "Dodajte kontakt" + "Uključi" + "Da vidite kontakte, uključite dozvolu za Kontakte." + "Nije dostupna nijedna aplikacija za kontakte" 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 8639300394..f7bbaa7461 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"> "Escriu un miss. personalitzat" "Tanca" + "Encara no tens cap contacte" + "Afegeix un contacte" + "Activa" + "Activa el permís Contactes per veure els teus contactes." + "No hi ha cap contacte disponible" 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 829aab8ddb..19e5d17dac 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"> "Napište vlastní zprávu" "Zavřít" + "Zatím nemáte žádné kontakty" + "Přidat kontakt" + "Povolit" + "Pokud chcete zobrazit kontakty, povolte aplikaci přístup ke Kontaktům." + "Není k dispozici žádná aplikace pro práci s kontakty" 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 9381f36f52..67fb244c4a 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"> "Skriv en tilpasset besked" "Luk" + "Du har endnu ikke nogen kontaktpersoner" + "Tilføj en kontaktperson" + "Slå til" + "Slå tilladelsen Kontaktpersoner til for at se dine kontaktpersoner." + "Der er ingen tilgængelig app til kontaktpersoner" 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 949fe9e493..14146d65f4 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"> "Eigene Nachricht schreiben" "Schließen" + "Du hast noch keine Kontakte" + "Kontakt hinzufügen" + "Aktivieren" + "Aktiviere die Berechtigung \"Kontakte\", um deine Kontakte abzurufen." + "Keine Kontakte-App verfügbar" 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 21e049bf71..0db6b26945 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"> "Γράψτε ένα προσαρμ. μήνυμα" "Κλείσιμο" + "Δεν έχετε επαφές ακόμη" + "Προσθήκη επαφής" + "Ενεργοποίηση" + "Για να δείτε τις επαφές σας, ενεργοποιήστε την άδεια πρόσβασης στις Επαφές." + "Δεν υπάρχει διαθέσιμη εφαρμογή επαφών" 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 7f22b46da2..a87cd28ffb 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"> "Write a custom message" "Close" + "You don\'t have any contacts yet" + "Add a contact" + "Turn on" + "To see your contacts, turn on the Contacts permission." + "No contacts app available" 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 7f22b46da2..a87cd28ffb 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"> "Write a custom message" "Close" + "You don\'t have any contacts yet" + "Add a contact" + "Turn on" + "To see your contacts, turn on the Contacts permission." + "No contacts app available" 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 7f22b46da2..a87cd28ffb 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"> "Write a custom message" "Close" + "You don\'t have any contacts yet" + "Add a contact" + "Turn on" + "To see your contacts, turn on the Contacts permission." + "No contacts app available" 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 c7fbdaa58c..5ecc22b3da 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"> "Escribe tu propio mensaje" "Cerrar" + "Aún no tienes contactos" + "Agregar un contacto" + "Activar" + "Para ver los contactos, activa el permiso Contactos." + "No hay ninguna app de contactos disponible" 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 507e8af0dc..e561d06f7f 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"> "Mensaje personalizado" "Cerrar" + "Aún no tienes contactos" + "Añadir un contacto" + "Activar" + "Para ver tus contactos, activa el permiso de Contactos." + "No hay aplicaciones de contactos disponibles" 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 71dab4276a..054b42281d 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"> "Kirjutage kohandatud sõnum" "Sule" + "Teil pole veel kontakte" + "Kontakti lisamine" + "Lülita sisse" + "Kontaktide vaatamiseks lülitage sisse kontaktide luba." + "Kontaktide rakendus pole saadaval" 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 b8e4085a06..7d191925e5 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"> "Idatzi mezu bat" "Itxi" + "Oraindik ez duzu kontakturik" + "Gehitu kontaktu bat" + "Aktibatu" + "Kontaktuak ikusteko, aktibatu Kontaktuak atzitzeko baimena." + "Ez dago kontaktu-aplikaziorik erabilgarri" 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 0c3b1d4f5f..5ed23131ab 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"> "پیام سفارشی بنویسید" "بستن" + "هنوز هیچ مخاطبی ندارید" + "افزودن مخاطب" + "فعال‌سازی" + "برای دیدن مخاطبینتان، مجوز «مخاطبین» را روشن کنید." + "هیچ برنامه مخاطبی در دسترس نیست" 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 e0e971cd87..1a153072c8 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"> "Kirjoita oma viesti" "Sulje" + "Sinulla ei ole vielä yhteystietoja." + "Lisää yhteystieto." + "Ota käyttöön" + "Jos haluat katsella yhteystietojasi, ota Yhteystiedot-käyttöoikeus käyttöön." + "Yhteystietosovellusta ei ole käytettävissä." 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 9776385b4d..62e1f37fbb 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"> "Rédiger message personnalisé" "Fermer" + "Vous n\'avez pas encore de contacts" + "Ajouter un contact" + "Activer" + "Pour consulter vos contacts, activez l\'autorisation Contacts." + "Aucune application Contacts n\'est disponible" 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 fececd84aa..85a32b8752 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"> "Écrire mon propre message" "Fermer" + "Vous n\'avez pas encore de contacts." + "Ajouter un contact" + "Activer" + "Pour consulter vos contacts, activez l\'autorisation Contacts." + "Aucune application de gestion des contacts n\'est disponible" 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 6a756810ba..8a9089fdb8 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"> "Escribe unha mensaxe personalizada" "Pechar" + "Aínda non tes ningún contacto" + "Engadir un contacto" + "Activar" + "Para ver os teus contactos, activa o permiso de Contactos." + "Non hai ningunha aplicación de contactos dispoñible" 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 c2f8cf0e19..794245d3db 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"> "એક કસ્ટમ સંદેશ લખો" "બંધ કરો" + "તમે હજી સુધી કોઇપણ સંપર્કો ધરાવતાં નથી" + "સંપર્ક ઉમેરો" + "ચાલુ કરો" + "તમારા સંપર્કો જોવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો." + "કોઈ સંપર્કો ઍપ્લિકેશન ઉપલબ્ધ નથી" 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 63c94e7f69..5cdb8bbfc3 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"> "कोई कस्टम संदेश लिखें" "बंद करें" + "आपके पास अभी कोई भी संपर्क नहीं है" + "कोई संपर्क जोड़ें" + "चालू करें" + "अपने संपर्क देखने के लिए, संपर्क अनुमति चालू करें." + "कोई भी संपर्क ऐप उपलब्‍ध नहीं है" 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 28a58d4537..9ded4d4a79 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"> "Napišite prilagođenu poruku" "Zatvaranje" + "Još nemate nijedan kontakt" + "Dodavanje kontakta" + "Uključi" + "Da biste vidjeli svoje kontakte, uključite dopuštenje za kontakte." + "Nije dostupna nijedna aplikacija za kontakte" 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 dcd2b36ea5..92ae71de8f 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"> "Egyéni üzenet írása" "Bezárás" + "Még nem rendelkezik egyetlen névjeggyel sem" + "Névjegy hozzáadása" + "Bekapcsolás" + "A névjegyek megtekintéséhez kapcsolja be a Névjegyek engedélyt." + "Nincs elérhető névjegykezelő alkalmazás" 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 7b78bb23e1..ffa7132c5c 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"> "Գրել տեքստն ինքնուրույն" "Փակել" + "Դեռ կոնտակտներ չունեք" + "Ավելացնել կոնտակտ" + "Միացնել" + "Ձեր կոնտակտները տեսնելու համար միացրեք Կոնտակտների թույլտվությունը:" + "Կոնտակտների հավելված չկա" 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 b4b65504b7..69849ae023 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"> "Tulis pesan khusus" "Tutup" + "Anda belum memiliki kontak" + "Tambahkan kontak" + "Aktifkan" + "Untuk melihat kontak, aktifkan izin Kontak." + "Aplikasi kontak tidak tersedia" 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 fd844197e4..98a172904d 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"> "Skrifa sérsniðin skilaboð" "Loka" + "Þú ert ekki með neina tengiliði enn sem komið er" + "Bæta tengilið við" + "Kveikja" + "Kveiktu á tengiliðaheimildinni til að sjá tengiliðina þína." + "Ekkert tengiliðaforrit í boði" 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 0af3fd2eb9..1a6e6c1352 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"> "Scrivi un messaggio personalizzato" "Chiudi" + "Nessun contatto disponibile" + "Aggiungi un contatto" + "Attiva" + "Per accedere ai tuoi contatti, attiva l\'autorizzazione Contatti." + "Nessuna app di contatti disponibile" 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 a485888ae0..f2a732a67c 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"> "כתוב הודעה מותאמת אישית" "סגירה" + "עדיין אין לך אנשי קשר" + "הוספה של איש קשר" + "הפעלה" + "עליך להפעיל את ההרשאה \'אנשי קשר\' כדי להציג את אנשי הקשר שלך." + "אין אף אפליקציה לניהול אנשי קשר" 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 9fd65a8062..7994c62623 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"> "カスタム メッセージを入力" "閉じる" + "連絡先はまだありません" + "連絡先を追加" + "ON にする" + "連絡先を表示するには、連絡先へのアクセスを許可する設定を ON にしてください。" + "利用できる連絡先アプリがありません" 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 6dde044307..865a66b453 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"> "დაწერეთ მორგებ. შეტყობინება" "დახურვა" + "კონტაქტები ჯერ არ გაქვთ" + "კონტაქტის დამატება" + "ჩართვა" + "კონტაქტების სანახავად ჩართეთ კონტაქტების ნებართვა." + "კონტაქტების აპი მიუწვდომელია" 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 334d915e25..08856aaeca 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"> "Арнаулы хабар жазу" "Жабу" + "Әлі ешқандай контактілер жоқ" + "Контакт қосу" + "Қосу" + "Контактілерді көру үшін \"Контактілер\" рұқсатын қосыңыз." + "Контактілер қолданбасы қолжетімді емес" 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 d0f5633e4a..c092332534 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"> "សរសេរ​សារ​ផ្ទាល់ខ្លួន" "បិទ" + "អ្នកមិនទាន់មានទំនាក់ទំនងនៅឡើយទេ" + "បញ្ចូល​ទំនាក់ទំនង" + "បើក" + "ដើម្បីមើលទំនាក់ទំនងរបស់អ្នក សូមបើកការ​អនុញ្ញាតកម្មវិធីទំនាក់ទំនង។" + "មិនមានកម្មវិធីទំនាក់ទំនងទេ" 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 3535bfcb76..a502d087ec 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"> "ಕಸ್ಟಮ್ ಸಂದೇಶವನ್ನು ಬರೆಯಿರಿ" "ಮುಚ್ಚಿ" + "ನಿಮ್ಮ ಬಳಿ ಇನ್ನೂ ಯಾವುದೇ ಸಂಪರ್ಕಗಳಿಲ್ಲ" + "ಸಂಪರ್ಕ ಸೇರಿಸಿ" + "ಆನ್ ಮಾಡಿ" + "ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ." + "ಯಾವುದೇ ಸಂಪರ್ಕಗಳ ಅಪ್ಲಿಕೇಶನ್‌ ಲಭ್ಯವಿಲ್ಲ" 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 8c00cea8b1..045dc54dce 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"> "맞춤 메시지를 작성하세요." "닫기" + "아직 연락처가 없습니다." + "연락처 추가" + "사용" + "연락처를 보려면 연락처에 액세스할 권한을 부여하세요." + "사용할 수 있는 연락처 앱이 없습니다." 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 46ea8514cc..7ef10e707a 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"> "Башка билдирүүнү жазыңыз" "Жабуу" + "Азырынча эч байланышыңыз жок" + "Байланыш кошуу" + "Күйгүзүү" + "Байланыштарыңызды көрүү үчүн, \"Байланыштар\" уруксатын күйгүзүңүз." + "Жеткиликтүү байланыштар колдонмосу жок" 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 0db64a78a4..dc7ba44c1f 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"> "ຂຽນຂໍ້ຄວາມດ້ວຍຕົນເອງ" "ປິດ" + "ທ່ານຍັງບໍ່ມີລາຍຊື່ຜູ້ຕິດຕໍ່ເທື່ອ" + "ເພີ່ມລາຍຊື່" + "ເປີດໃຊ້" + "ເພື່ອເບິ່ງລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານ, ໃຫ້ເປີດການອະນຸຍາດລາຍຊື່ຜູ້ຕິດຕໍ່ກ່ອນ" + "ບໍ່ມີແອັບລາຍຊື່ຜູ້ຕິດຕໍ່ທີ່ສາມາດໃຊ້ໄດ້" 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 a10b91ef69..be12520f80 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"> "Parašykite tinkintą praneš." "Uždaryti" + "Dar neturite jokių kontaktų" + "Pridėkite kontaktą" + "Įjungti" + "Jei norite peržiūrėti kontaktus, įjunkite Kontaktų leidimą." + "Nepasiekiama jokia kontaktų programa" 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 8ff079390d..acefbaea42 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"> "Rakstīt pielāgotu ziņojumu" "Aizvērt" + "Jums vēl nav nevienas kontaktpersonas." + "Pievienot kontaktpersonu" + "Ieslēgt" + "Lai skatītu savas kontaktpersonas, ieslēdziet atļauju Kontaktpersonas." + "Nav pieejama neviena kontaktpersonu lietotne." 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 aa9be30552..20b18e8d99 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"> "Напиши приспособена порака" "Затвори" + "Сè уште немате контакти" + "Додајте контакт" + "Вклучи" + "За да ги видите контактите, вклучете ја дозволата за контакти." + "Нема достапна апликација за контакти" 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 b52ee401cf..a97a7d8627 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"> "ഒരു ഇ‌ഷ്‌ടാനുസൃത സന്ദേശം രചിക്കൂ" "അടയ്‌ക്കുക" + "നിങ്ങൾക്ക് ഇതുവരെയും കോൺടാക്റ്റുകൾ ഒന്നുമില്ല." + "ഒരു കോണ്‍ടാക്റ്റ് ചേര്‍ക്കുക" + "ഓൺ ചെയ്യുക" + "നിങ്ങളുടെ കോൺടാക്റ്റുകൾ കാണുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക." + "കോൺടാക്റ്റ് അപ്ലിക്കേഷനൊന്നും ലഭ്യമല്ല" 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 6bdad8983d..bbcfc7cf65 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"> "Тусгай зурвас бичих" "Хаах" + "Танд одоогоор харилцагч байхгүй байна" + "Харилцагч нэмэх" + "Асаах" + "Харилцагчдаа харахын тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү." + "Ямар ч харилцагчдын апликейшн байхгүй байна" 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 5661fa8b9b..38d913a85d 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"> "एक सानुकूल संदेश लिहा" "बंद करा" + "आपल्‍याकडे अद्याप कोणतेही संपर्क नाहीत" + "एक संपर्क जोडा" + "चालू करा" + "आपले संपर्क पाहण्‍यासाठी, संपर्क परवानगी चालू करा." + "कोणताही संपर्क अॅप उपलब्ध नाही" 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 8889ccc8de..bc67c67648 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"> "Tulis mesej tersuai" "Tutup" + "Anda belum mempunyai sebarang kenalan" + "Tambahkan kenalan" + "Hidupkan" + "Untuk melihat kenalan anda, hidupkan kebenaran Kenalan." + "Tiada apl kenalan yang tersedia" 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 9a69f29ebf..c8e783bf4a 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"> "စိတ်ကြိုက် မက်ဆေ့ဂျ်တစ်ခု ရေးပါ" "ပိတ်ရန်" + "သင့်တွင် မည်သည့်အဆက်အသွယ်မျှ မရှိသေးပါ" + "အဆက်အသွယ်တစ်ယောက် ထည့်မည်" + "ဖွင့်ရန်" + "အဆက်အသွယ်များကိုကြည့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။" + "အဆက်အသွယ်များ app မရှိပါ" 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 100156bd14..822f07ed17 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"> "Skriv egendefinert melding" "Lukk" + "Du har ingen kontakter ennå" + "Legg til en kontakt" + "Slå på" + "For å se kontaktene dine må du slå på Kontakter-tillatelsen." + "Ingen kontaktapper er tilgjengelige" 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 abb8bb04b4..ebb31d5791 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"> "आफू अनुकूल सन्देश लेख्‍ने" "बन्द गर्नुहोस्" + "अहिलेसम्म तपाईंसँग कुनै सम्पर्कहरू छैनन्" + "कुनै सम्पर्क थप्नुहोस्" + "सक्रिय गर्नुहोस्" + "आफ्ना सम्पर्कहरू हेर्न सम्पर्क सम्बन्धी अनुमतिलाई सक्रिय गर्नुहोस्।" + "सम्पर्क सम्बन्धी कुनै अनुप्रयोग उपलब्ध छैन" 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 5560288937..cbc286ba36 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"> "Schrijf zelf een bericht" "Sluiten" + "Je hebt nog geen contacten" + "Een contact toevoegen" + "Inschakelen" + "Als je je contacten wilt bekijken, schakel je de machtiging voor Contacten in." + "Geen app voor contacten beschikbaar" 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 100156bd14..822f07ed17 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"> "Skriv egendefinert melding" "Lukk" + "Du har ingen kontakter ennå" + "Legg til en kontakt" + "Slå på" + "For å se kontaktene dine må du slå på Kontakter-tillatelsen." + "Ingen kontaktapper er tilgjengelige" 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 4c69c2c6e4..06f191e50d 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"> "ਵਿਸ਼ੇਸ਼-ਵਿਉਂਤਬੱਧ ਸੰਦੇਸ਼ ਲਿਖੋ" "ਬੰਦ ਕਰੋ" + "ਤੁਹਾਡੇ ਕੋਲ ਹਾਲੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਹਨ" + "ਕੋਈ ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ" + "ਚਾਲੂ ਕਰੋ" + "ਆਪਣੇ ਸੰਪਰਕਾਂ ਨੂੰ ਵੇਖਣ ਲਈ, ਸੰਪਰਕ ਇਜਾਜ਼ਤ ਚਾਲੂ ਕਰੋ।" + "ਕੋਈ ਸੰਪਰਕ ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" 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 cec7a40452..5d62a07f15 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"> "Wpisz wiadomość" "Zamknij" + "Nie masz jeszcze żadnych kontaktów" + "Dodaj kontakt" + "Włącz" + "Aby zobaczyć swoje kontakty, włącz uprawnienia Kontakty." + "Nie jest dostępna żadna aplikacja do obsługi kontaktów" 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 b15bfac8df..0afc0f1d65 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"> "Escreva sua mensagem" "Fechar" + "Você ainda não tem contatos" + "Adicionar um contato" + "Ativar" + "Para ver seus contatos, ative a permissão para o app Contatos." + "Nenhum app de contatos disponível" 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 ece2ef2c32..35f71a3714 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"> "Escreva uma mensagem" "Fechar" + "Ainda não tem nenhum contacto" + "Adicionar um contacto" + "Ativar" + "Para ver os seus contactos, ative a autorização Contactos." + "Não existe nenhuma aplicação de contactos disponível" 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 b15bfac8df..0afc0f1d65 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"> "Escreva sua mensagem" "Fechar" + "Você ainda não tem contatos" + "Adicionar um contato" + "Ativar" + "Para ver seus contatos, ative a permissão para o app Contatos." + "Nenhum app de contatos disponível" 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 753b920b47..6c51d23ac7 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"> "Scrieți mesaj personalizat" "Închideți" + "Nu aveți încă persoane de contact." + "Adăugați o persoană de contact" + "Activați" + "Pentru a vedea persoanele de contact, activați permisiunea pentru Agendă." + "Nu este disponibilă nicio aplicație pentru agendă" 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 bdebd3ce4e..c36874de56 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"> "Добавьте свой текст" "Закрыть" + "Контактов нет" + "Добавить контакт" + "Предоставить разрешение" + "Чтобы открыть список контактов, предоставьте приложению разрешение \"Контакты\"." + "Нет приложения для работы с контактами" 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 4988259d4c..10eb7b5b55 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"> "අභිරුචි පණිවිඩයක් ලියන්න" "වසන්න" + "ඔබට තවම කිසිදු සම්බන්ධතාවක් නැත" + "සම්බන්ධතාවක් එක් කරන්න" + "ක්‍රියාත්මක කරන්න" + "ඔබේ සම්බන්ධතා බැලීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න." + "සබඳතා යෙදුම ලබා ගැනීමට නොහැකිය" 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 5dc1bd5053..56f7ceb97d 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"> "Napíšte vlastnú správu" "Zavrieť" + "Zatiaľ nemáte žiadne kontakty" + "Pridať kontakt" + "Zapnúť" + "Ak si chcete zobraziť kontakty, zapnite povolenie Kontakty." + "Nie je k dispozícii žiadna aplikácia na prácu s kontaktmi" 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 0ba965b2ed..52f0293773 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"> "Napišite sporočilo po meri" "Zapri" + "Nimate še nobenega stika" + "Dodaj stik" + "Vklopi" + "Če si želite ogledati stike, vklopite dovoljenje za stike." + "Na voljo ni nobene aplikacije za stike" 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 7f5e0f2857..c7943dfd38 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"> "Shkruaj mesazh të person." "Mbyll" + "Nuk ke ende kontakte" + "Shto një kontakt" + "Aktivizo" + "Për të parë kontaktet, aktivizo lejen e Kontakteve." + "Nuk ka asnjë aplikacion për kontaktet" 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 446c273639..00b9b4f6cf 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"> "Напишите прилагођену поруку" "Затворите" + "Још увек немате ниједан контакт" + "Додај контакт" + "Укључи" + "Да бисте видели контакте, укључите дозволу за Контакте." + "Нема доступне апликације за контакте" 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 7d2f44c454..3593970268 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"> "Skriv anpassat meddelande" "Stäng" + "Du har inga kontakter ännu" + "Lägg till en kontakt" + "Aktivera" + "Du måste aktivera behörigheten Kontakter för att visa kontakterna." + "Det finns inga appar för kontakter" 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 d2c2a97212..b0892108b2 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"> "Andika ujumbe maalum" "Funga" + "Bado huna anwani zozote" + "Ongeza anwani" + "Washa" + "Ili uone anwani zako, washa ruhusa ya Anwani." + "Hakuna programu ya anwani iliyopatikana" 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 4061c169f8..83ca080e5c 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"> "தனிப்பயன் செய்தியை எழுதவும்" "மூடு" + "இதுவரை தொடர்புகள் எதுவுமில்லை" + "தொடர்பைச் சேர்" + "இயக்கு" + "தொடர்புகளைப் பார்க்க, தொடர்புகள் அனுமதியை இயக்கவும்." + "தொடர்புகள் பயன்பாடு எதுவுமில்லை" 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 c2474b7ce2..418cc3d0b2 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"> "అనుకూల సందేశాన్ని వ్రాయండి" "మూసివేయి" + "మీకు ఇప్పటికీ పరిచయాలేవీ లేవు" + "పరిచయాన్ని జోడించండి" + "ఆన్ చేయి" + "మీ పరిచయాలను చూడటానికి, పరిచయాల అనుమతిని ఆన్ చేయండి." + "పరిచయాల అనువర్తనం ఏదీ అందుబాటులో లేదు" 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 d450b4b131..c556d1c37a 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"> "เขียนข้อความที่กำหนดเอง" "ปิด" + "คุณยังไม่มีรายชื่อติดต่อ" + "เพิ่มรายชื่อติดต่อ" + "เปิด" + "หากต้องการดูรายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ" + "ไม่มีแอปรายชื่อติดต่อที่พร้อมใช้งาน" 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 ee7c52f7b3..be02d1989c 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"> "Sumulat ng custom na mensahe" "Isara" + "Wala ka pang sinumang contact" + "Magdagdag ng contact" + "I-on" + "Upang makita ang iyong mga contact, i-on ang pahintulot ng Mga Contact." + "Walang available na app ng mga contact" 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 64e2ea535b..90d5db6490 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"> "Özel bir mesaj yazın" "Kapat" + "Henüz hiç kişiniz yok" + "Kişi ekleyin" + "Etkinleştir" + "Kişilerinizi görmek için Kişiler iznini etkinleştirin." + "Kullanılabilir kişi uygulaması yok" 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 f8d9bb8715..cf5a7d1db1 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"> "Ваше власне повідомлення" "Закрити" + "Ще немає контактів" + "Додати контакт" + "Увімкнути" + "Щоб переглянути контакти, увімкніть дозвіл \"Контакти\"." + "Немає додатка з контактами" 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 6edeb5c95e..e5199afe48 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"> "ایک حسب ضرورت پیغام لکھیں" "بند کریں" + "آپ کے پاس ابھی تک کوئی رابطے نہیں ہیں" + "ایک رابطہ شامل کریں" + "آن کریں" + "اپنے رابطے دیکھنے کیلئے رابطوں کی اجازت آن کریں۔" + "رابطوں کی کوئی ایپ دستیاب نہیں ہے" 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 434464aef5..eb0e0adaef 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"> "Boshqa xabar yozing" "Yopish" + "Kontaktlar yo‘q" + "Kontakt qo‘shish" + "Ruxsat berish" + "Kontaktlar ro‘yxatini ko‘rish uchun ilovaga Kontaktlarga kirishga ruxsat bering." + "Kontaktlarni ochadigan ilova yo‘q" 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 1a30f7c966..62e94b82e6 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"> "Viết tin nhắn tùy chỉnh" "Đóng" + "Bạn chưa có bất kỳ liên hệ nào" + "Thêm liên hệ" + "Bật" + "Để xem danh bạ của bạn, bật quyền đối với Danh bạ." + "Không có ứng dụng danh bạ" 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 7999723938..063301ae05 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"> "自行撰写信息" "关闭" + "您还没有任何联系人" + "添加联系人" + "开启" + "要查看您的联系人,请开启“通讯录”权限。" + "没有可用的通讯录应用" 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 b0bfcc8d96..e2e69b75b0 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"> "撰寫自訂訊息" "關閉" + "您尚無任何聯絡人" + "新增聯絡人" + "開放" + "如要查看聯絡人,請開放「通訊錄」權限。" + "沒有可用的聯絡人應用程式" 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 b0bfcc8d96..85768af8fb 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"> "撰寫自訂訊息" "關閉" + "你還沒有任何聯絡人" + "新增聯絡人" + "開啟" + "如要查看你的聯絡人,請開啟「聯絡人」存取權限。" + "沒有可用的聯絡人應用程式" 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 074aa58226..a3ba84a9a7 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"> "Bhala umlayezo wangokwezifiso" "Vala" + "Awunabo oxhumana nabo okwamanje" + "Engeza oxhumana naye" + "Vula" + "Ukuze ubone oxhumana nabo, vula imvume yoxhumana nabo." + "Alukho uhlelo lokusebenza loxhumana nabo olutholakalayo" 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 0000000000..c974609ef4 --- /dev/null +++ b/java/com/android/dialer/widget/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #b2b2b2 + \ 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 20393a8425..537ad7bd77 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 @@ 14sp 12sp 4dp + 4dp + + + 20dp + 16sp \ 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 a5829bb0b8..d6ea2e7cd6 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 @@ Close + + + You don\'t have any contacts yet + + + Add a contact + + + Turn on + + + To see your contacts, turn on the Contacts permission. + + + No contacts app available \ No newline at end of file diff --git a/java/com/android/dialershared/bubble/AndroidManifest.xml b/java/com/android/dialershared/bubble/AndroidManifest.xml new file mode 100644 index 0000000000..1a94aafc1e --- /dev/null +++ b/java/com/android/dialershared/bubble/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/java/com/android/dialershared/bubble/Bubble.java b/java/com/android/dialershared/bubble/Bubble.java new file mode 100644 index 0000000000..3eb88aa228 --- /dev/null +++ b/java/com/android/dialershared/bubble/Bubble.java @@ -0,0 +1,667 @@ +/* + * 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.dialershared.bubble; + +import android.animation.Animator; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.animation.PropertyValuesHolder; +import android.annotation.SuppressLint; +import android.app.PendingIntent.CanceledException; +import android.content.Context; +import android.content.Intent; +import android.content.res.ColorStateList; +import android.graphics.PixelFormat; +import android.graphics.drawable.RippleDrawable; +import android.net.Uri; +import android.os.Handler; +import android.provider.Settings; +import android.support.annotation.ColorInt; +import android.support.annotation.IntDef; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.annotation.VisibleForTesting; +import android.support.v4.graphics.ColorUtils; +import android.support.v4.os.BuildCompat; +import android.support.v4.view.animation.FastOutLinearInInterpolator; +import android.support.v4.view.animation.LinearOutSlowInInterpolator; +import android.transition.TransitionManager; +import android.transition.TransitionValues; +import android.view.ContextThemeWrapper; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewPropertyAnimator; +import android.view.ViewTreeObserver.OnPreDrawListener; +import android.view.WindowManager; +import android.view.WindowManager.LayoutParams; +import android.view.animation.AnticipateInterpolator; +import android.view.animation.OvershootInterpolator; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.ViewAnimator; +import com.android.dialershared.bubble.BubbleInfo.Action; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.List; + +/** + * Creates and manages a bubble window from information in a {@link BubbleInfo}. Before creating, be + * sure to check whether bubbles may be shown using {@link #canShowBubbles(Context)} and request + * permission if necessary ({@link #getRequestPermissionIntent(Context)} is provided for + * convenience) + */ +public class Bubble { + + // How long text should show after showText(CharSequence) is called + private static final int SHOW_TEXT_DURATION_MILLIS = 3000; + // How long the new window should show before destroying the old one during resize operations. + // This ensures the new window has had time to draw first. + private static final int WINDOW_REDRAW_DELAY_MILLIS = 50; + + private static Boolean canShowBubblesForTesting = null; + + private final Context context; + private final WindowManager windowManager; + + private LayoutParams windowParams; + + // Initialized in factory method + @SuppressWarnings("NullableProblems") + @NonNull + private BubbleInfo currentInfo; + + private boolean isShowing; + private boolean expanded; + private boolean textShowing; + private boolean hideAfterText; + + private final Handler handler = new Handler(); + + private ViewHolder viewHolder; + + @Retention(RetentionPolicy.SOURCE) + @IntDef({CollapseEnd.NOTHING, CollapseEnd.HIDE}) + private @interface CollapseEnd { + int NOTHING = 0; + int HIDE = 1; + } + + /** + * Determines whether bubbles can be shown based on permissions obtained. This should be checked + * before attempting to create a Bubble. + * + * @return true iff bubbles are able to be shown. + * @see Settings#canDrawOverlays(Context) + */ + public static boolean canShowBubbles(@NonNull Context context) { + return canShowBubblesForTesting != null + ? canShowBubblesForTesting + : Settings.canDrawOverlays(context); + } + + @VisibleForTesting(otherwise = VisibleForTesting.NONE) + public static void setCanShowBubblesForTesting(boolean canShowBubbles) { + canShowBubblesForTesting = canShowBubbles; + } + + /** Returns an Intent to request permission to show overlays */ + @NonNull + public static Intent getRequestPermissionIntent(@NonNull Context context) { + return new Intent( + Settings.ACTION_MANAGE_OVERLAY_PERMISSION, + new Uri.Builder().scheme("package").fragment(context.getPackageName()).build()); + } + + /** Creates instances of Bubble. The default implementation just calls the constructor. */ + @VisibleForTesting + public interface BubbleFactory { + Bubble createBubble(@NonNull Context context); + } + + private static BubbleFactory bubbleFactory = Bubble::new; + + public static Bubble createBubble(@NonNull Context context, @NonNull BubbleInfo info) { + Bubble bubble = bubbleFactory.createBubble(context); + bubble.setBubbleInfo(info); + return bubble; + } + + @VisibleForTesting + public static void setBubbleFactory(@NonNull BubbleFactory bubbleFactory) { + Bubble.bubbleFactory = bubbleFactory; + } + + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + Bubble(@NonNull Context context) { + context = new ContextThemeWrapper(context, R.style.Theme_AppCompat); + this.context = context; + windowManager = context.getSystemService(WindowManager.class); + + viewHolder = new ViewHolder(context); + } + + /** + * Make the bubble visible. Will show a short entrance animation as it enters. If the bubble is + * already showing this method does nothing. + */ + public void show() { + if (isShowing) { + return; + } + + hideAfterText = false; + + if (windowParams == null) { + // Apps targeting O+ must use TYPE_APPLICATION_OVERLAY, which is not available prior to O. + @SuppressWarnings("deprecation") + @SuppressLint("InlinedApi") + int type = + BuildCompat.isAtLeastO() + ? LayoutParams.TYPE_APPLICATION_OVERLAY + : LayoutParams.TYPE_PHONE; + + windowParams = + new LayoutParams( + type, + LayoutParams.FLAG_NOT_TOUCH_MODAL + | LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH + | LayoutParams.FLAG_NOT_FOCUSABLE, + PixelFormat.TRANSLUCENT); + windowParams.gravity = Gravity.TOP | Gravity.LEFT; + windowParams.x = + context.getResources().getDimensionPixelOffset(R.dimen.bubble_initial_offset_x); + windowParams.y = + context.getResources().getDimensionPixelOffset(R.dimen.bubble_initial_offset_y); + windowParams.height = LayoutParams.WRAP_CONTENT; + windowParams.width = LayoutParams.WRAP_CONTENT; + } + + windowManager.addView(viewHolder.getRoot(), windowParams); + ObjectAnimator showAnimator = + ObjectAnimator.ofPropertyValuesHolder( + viewHolder.getPrimaryButton(), + PropertyValuesHolder.ofFloat(View.SCALE_X, 0, 1), + PropertyValuesHolder.ofFloat(View.SCALE_Y, 0, 1)); + showAnimator.setInterpolator(new OvershootInterpolator()); + showAnimator.start(); + isShowing = true; + } + + /** + * Hide the button if visible. Will run a short exit animation before hiding. If the bubble is + * currently showing text, will hide after the text is done displaying. If the bubble is not + * visible this method does nothing. + */ + public void hide() { + if (!isShowing) { + return; + } + + if (textShowing) { + hideAfterText = true; + return; + } + + if (expanded) { + startCollapse(CollapseEnd.HIDE); + return; + } + + viewHolder + .getPrimaryButton() + .animate() + .setInterpolator(new AnticipateInterpolator()) + .scaleX(0) + .scaleY(0) + .withEndAction( + () -> { + windowManager.removeView(viewHolder.getRoot()); + isShowing = false; + }) + .start(); + } + + /** Returns whether the bubble is currently visible */ + public boolean isShowing() { + return isShowing; + } + + /** + * Set the info for this Bubble to display + * + * @param bubbleInfo the BubbleInfo to display in this Bubble. + */ + public void setBubbleInfo(@NonNull BubbleInfo bubbleInfo) { + currentInfo = bubbleInfo; + update(); + } + + /** + * Update the state and behavior of actions. + * + * @param actions the new state of the bubble's actions + */ + public void updateActions(@NonNull List actions) { + currentInfo = BubbleInfo.from(currentInfo).setActions(actions).build(); + updateButtonStates(); + } + + /** Returns the currently displayed BubbleInfo */ + public BubbleInfo getBubbleInfo() { + return currentInfo; + } + + /** + * Display text in the main bubble. The bubble's drawer is not expandable while text is showing, + * and the drawer will be closed if already open. + * + * @param text the text to display to the user + */ + public void showText(@NonNull CharSequence text) { + textShowing = true; + if (expanded) { + startCollapse(CollapseEnd.NOTHING); + doShowText(text); + } else { + // Need to transition from old bounds to new bounds manually + ChangeOnScreenBounds transition = new ChangeOnScreenBounds(); + // Prepare and capture start values + TransitionValues startValues = new TransitionValues(); + startValues.view = viewHolder.getPrimaryButton(); + transition.addTarget(startValues.view); + transition.captureStartValues(startValues); + + doResize( + () -> { + doShowText(text); + // Hide the text so we can animate it in + viewHolder.getPrimaryText().setAlpha(0); + + ViewAnimator primaryButton = viewHolder.getPrimaryButton(); + // Cancel the automatic transition scheduled in doShowText + TransitionManager.endTransitions((ViewGroup) primaryButton.getParent()); + primaryButton + .getViewTreeObserver() + .addOnPreDrawListener( + new OnPreDrawListener() { + @Override + public boolean onPreDraw() { + primaryButton.getViewTreeObserver().removeOnPreDrawListener(this); + + // Prepare and capture end values + TransitionValues endValues = new TransitionValues(); + endValues.view = primaryButton; + transition.addTarget(endValues.view); + transition.captureEndValues(endValues); + + // animate the primary button bounds change + Animator bounds = + transition.createAnimator(primaryButton, startValues, endValues); + + // Animate the text in + Animator alpha = + ObjectAnimator.ofFloat(viewHolder.getPrimaryText(), View.ALPHA, 1f); + + AnimatorSet set = new AnimatorSet(); + set.play(bounds).before(alpha); + set.start(); + return false; + } + }); + }); + } + handler.removeCallbacks(null); + handler.postDelayed( + () -> { + textShowing = false; + if (hideAfterText) { + hide(); + } else { + doResize( + () -> viewHolder.getPrimaryButton().setDisplayedChild(ViewHolder.CHILD_INDEX_ICON)); + } + }, + SHOW_TEXT_DURATION_MILLIS); + } + + void onMoveStart() { + startCollapse(CollapseEnd.NOTHING); + viewHolder + .getPrimaryButton() + .animate() + .translationZ( + context.getResources().getDimensionPixelOffset(R.dimen.bubble_move_elevation_change)); + } + + void onMoveFinish() { + viewHolder.getPrimaryButton().animate().translationZ(0); + } + + void primaryButtonClick() { + if (expanded || textShowing || currentInfo.getActions().isEmpty()) { + try { + currentInfo.getPrimaryAction().send(); + } catch (CanceledException e) { + throw new RuntimeException(e); + } + return; + } + + boolean onRight = (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT; + doResize( + () -> { + onLeftRightSwitch(onRight); + viewHolder.getExpandedView().setVisibility(View.VISIBLE); + }); + View expandedView = viewHolder.getExpandedView(); + expandedView + .getViewTreeObserver() + .addOnPreDrawListener( + new OnPreDrawListener() { + @Override + public boolean onPreDraw() { + expandedView.getViewTreeObserver().removeOnPreDrawListener(this); + expandedView.setTranslationX( + onRight ? expandedView.getWidth() : -expandedView.getWidth()); + expandedView + .animate() + .setInterpolator(new LinearOutSlowInInterpolator()) + .translationX(0); + return false; + } + }); + setFocused(true); + expanded = true; + } + + void onLeftRightSwitch(boolean onRight) { + viewHolder + .getRoot() + .setLayoutDirection(onRight ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR); + View primaryContainer = viewHolder.getRoot().findViewById(R.id.bubble_primary_container); + ViewGroup.LayoutParams layoutParams = primaryContainer.getLayoutParams(); + ((FrameLayout.LayoutParams) layoutParams).gravity = onRight ? Gravity.RIGHT : Gravity.LEFT; + primaryContainer.setLayoutParams(layoutParams); + + viewHolder + .getExpandedView() + .setBackgroundResource( + onRight + ? R.drawable.bubble_background_pill_rtl + : R.drawable.bubble_background_pill_ltr); + } + + LayoutParams getWindowParams() { + return windowParams; + } + + View getRootView() { + return viewHolder.getRoot(); + } + + private void update() { + RippleDrawable backgroundRipple = + (RippleDrawable) + context.getResources().getDrawable(R.drawable.bubble_ripple_circle, context.getTheme()); + int primaryTint = + ColorUtils.compositeColors( + context.getColor(R.color.bubble_primary_background_darken), + currentInfo.getPrimaryColor()); + backgroundRipple.getDrawable(0).setTint(primaryTint); + viewHolder.getPrimaryButton().setBackground(backgroundRipple); + + setBackgroundDrawable(viewHolder.getFirstButton(), primaryTint); + setBackgroundDrawable(viewHolder.getSecondButton(), primaryTint); + setBackgroundDrawable(viewHolder.getThirdButton(), primaryTint); + + int numButtons = currentInfo.getActions().size(); + viewHolder.getThirdButton().setVisibility(numButtons < 3 ? View.GONE : View.VISIBLE); + viewHolder.getSecondButton().setVisibility(numButtons < 2 ? View.GONE : View.VISIBLE); + + viewHolder.getPrimaryIcon().setImageIcon(currentInfo.getPrimaryIcon()); + + viewHolder + .getExpandedView() + .setBackgroundTintList(ColorStateList.valueOf(currentInfo.getPrimaryColor())); + + updateButtonStates(); + } + + private void setBackgroundDrawable(CheckableImageButton view, @ColorInt int color) { + RippleDrawable itemRipple = + (RippleDrawable) + context + .getResources() + .getDrawable(R.drawable.bubble_ripple_checkable_circle, context.getTheme()); + itemRipple.getDrawable(0).setTint(color); + view.setBackground(itemRipple); + } + + private void updateButtonStates() { + int numButtons = currentInfo.getActions().size(); + + if (numButtons >= 1) { + configureButton(currentInfo.getActions().get(0), viewHolder.getFirstButton()); + if (numButtons >= 2) { + configureButton(currentInfo.getActions().get(1), viewHolder.getSecondButton()); + if (numButtons >= 3) { + configureButton(currentInfo.getActions().get(2), viewHolder.getThirdButton()); + } + } + } + } + + private void doShowText(@NonNull CharSequence text) { + TransitionManager.beginDelayedTransition((ViewGroup) viewHolder.getPrimaryButton().getParent()); + viewHolder.getPrimaryText().setText(text); + viewHolder.getPrimaryButton().setDisplayedChild(ViewHolder.CHILD_INDEX_TEXT); + } + + private void configureButton(Action action, CheckableImageButton button) { + action + .getIcon() + .loadDrawableAsync( + context, + d -> { + button.setImageIcon(action.getIcon()); + button.setContentDescription(action.getName()); + button.setChecked(action.isChecked()); + button.setEnabled(action.isEnabled()); + }, + handler); + button.setOnClickListener(v -> doAction(action)); + } + + private void doAction(Action action) { + try { + action.getAction().send(); + } catch (CanceledException e) { + throw new RuntimeException(e); + } + } + + private void doResize(@Nullable Runnable operation) { + // If we're resizing on the right side of the screen, there is an implicit move operation + // necessary. The WindowManager does not sync the move and resize operations, so serious jank + // would occur. To fix this, instead of resizing the window, we create a new one and destroy + // the old one. There is a short delay before destroying the old view to ensure the new one has + // had time to draw. + boolean onRight = (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT; + ViewHolder oldViewHolder = viewHolder; + if (onRight) { + viewHolder = new ViewHolder(oldViewHolder.getRoot().getContext()); + update(); + viewHolder + .getPrimaryButton() + .setDisplayedChild(oldViewHolder.getPrimaryButton().getDisplayedChild()); + viewHolder.getPrimaryText().setText(oldViewHolder.getPrimaryText().getText()); + } + + if (operation != null) { + operation.run(); + } + + if (onRight) { + swapViewHolders(oldViewHolder); + } + } + + private void swapViewHolders(ViewHolder oldViewHolder) { + ViewGroup root = viewHolder.getRoot(); + windowManager.addView(root, windowParams); + root.getViewTreeObserver() + .addOnPreDrawListener( + new OnPreDrawListener() { + @Override + public boolean onPreDraw() { + root.getViewTreeObserver().removeOnPreDrawListener(this); + // Wait a bit before removing the old view; make sure the new one has drawn over it. + handler.postDelayed( + () -> windowManager.removeView(oldViewHolder.getRoot()), + WINDOW_REDRAW_DELAY_MILLIS); + return true; + } + }); + } + + private ViewPropertyAnimator startCollapse(@CollapseEnd int collapseEndAction) { + setFocused(false); + boolean onRight = (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT; + View expandedView = viewHolder.getExpandedView(); + return expandedView + .animate() + .translationX(onRight ? expandedView.getWidth() : -expandedView.getWidth()) + .setInterpolator(new FastOutLinearInInterpolator()) + .withEndAction( + () -> { + expanded = false; + if (collapseEndAction == CollapseEnd.HIDE) { + hide(); + } else if (!textShowing) { + // Don't swap the window while the user is moving it, even if we're on the right. + // The movement will help hide the jank of the resize. + boolean swapWindow = onRight && !viewHolder.isMoving(); + if (swapWindow) { + // We don't actually need to set the drawer to GONE since in the new window it + // will already be GONE. Just do the resize operation. + doResize(null); + } else { + expandedView.setVisibility(View.GONE); + } + } + }); + } + + private void setFocused(boolean focused) { + if (focused) { + windowParams.flags &= ~LayoutParams.FLAG_NOT_FOCUSABLE; + } else { + windowParams.flags |= LayoutParams.FLAG_NOT_FOCUSABLE; + } + windowManager.updateViewLayout(getRootView(), windowParams); + } + + private class ViewHolder { + + public static final int CHILD_INDEX_ICON = 0; + public static final int CHILD_INDEX_TEXT = 1; + + private final MoveHandler moveHandler; + private final WindowRoot root; + private final ViewAnimator primaryButton; + private final ImageView primaryIcon; + private final TextView primaryText; + + private final CheckableImageButton firstButton; + private final CheckableImageButton secondButton; + private final CheckableImageButton thirdButton; + private final View expandedView; + + public ViewHolder(Context context) { + // Window root is not in the layout file so that the inflater has a view to inflate into + this.root = new WindowRoot(context); + LayoutInflater inflater = LayoutInflater.from(root.getContext()); + View contentView = inflater.inflate(R.layout.bubble_base, root, true); + expandedView = contentView.findViewById(R.id.bubble_expanded_layout); + primaryButton = contentView.findViewById(R.id.bubble_button_primary); + primaryIcon = contentView.findViewById(R.id.bubble_icon_primary); + primaryText = contentView.findViewById(R.id.bubble_text); + + firstButton = contentView.findViewById(R.id.bubble_icon_first); + secondButton = contentView.findViewById(R.id.bubble_icon_second); + thirdButton = contentView.findViewById(R.id.bubble_icon_third); + + root.setOnBackPressedListener( + () -> { + if (isShowing && expanded) { + startCollapse(CollapseEnd.NOTHING); + return true; + } + return false; + }); + root.setOnTouchListener( + (v, event) -> { + if (expanded && event.getActionMasked() == MotionEvent.ACTION_OUTSIDE) { + startCollapse(CollapseEnd.NOTHING); + return true; + } + return false; + }); + moveHandler = new MoveHandler(primaryButton, Bubble.this); + } + + public ViewGroup getRoot() { + return root; + } + + public ViewAnimator getPrimaryButton() { + return primaryButton; + } + + public ImageView getPrimaryIcon() { + return primaryIcon; + } + + public TextView getPrimaryText() { + return primaryText; + } + + public CheckableImageButton getFirstButton() { + return firstButton; + } + + public CheckableImageButton getSecondButton() { + return secondButton; + } + + public CheckableImageButton getThirdButton() { + return thirdButton; + } + + public View getExpandedView() { + return expandedView; + } + + public boolean isMoving() { + return moveHandler.isMoving(); + } + } +} diff --git a/java/com/android/dialershared/bubble/BubbleInfo.java b/java/com/android/dialershared/bubble/BubbleInfo.java new file mode 100644 index 0000000000..52417ae7b1 --- /dev/null +++ b/java/com/android/dialershared/bubble/BubbleInfo.java @@ -0,0 +1,116 @@ +/* + * 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.dialershared.bubble; + +import android.app.PendingIntent; +import android.graphics.drawable.Icon; +import android.support.annotation.ColorInt; +import android.support.annotation.NonNull; +import com.google.auto.value.AutoValue; +import java.util.Collections; +import java.util.List; + +/** Info for displaying a {@link Bubble} */ +@AutoValue +public abstract class BubbleInfo { + @ColorInt + public abstract int getPrimaryColor(); + + @NonNull + public abstract Icon getPrimaryIcon(); + + @NonNull + public abstract PendingIntent getPrimaryAction(); + + @NonNull + public abstract List getActions(); + + public static Builder builder() { + return new AutoValue_BubbleInfo.Builder().setActions(Collections.emptyList()); + } + + public static Builder from(@NonNull BubbleInfo bubbleInfo) { + return builder() + .setPrimaryAction(bubbleInfo.getPrimaryAction()) + .setPrimaryColor(bubbleInfo.getPrimaryColor()) + .setPrimaryIcon(bubbleInfo.getPrimaryIcon()) + .setActions(bubbleInfo.getActions()); + } + + /** Builder for {@link BubbleInfo} */ + @AutoValue.Builder + public abstract static class Builder { + + public abstract Builder setPrimaryColor(@ColorInt int primaryColor); + + public abstract Builder setPrimaryIcon(@NonNull Icon primaryIcon); + + public abstract Builder setPrimaryAction(@NonNull PendingIntent primaryAction); + + public abstract Builder setActions(List actions); + + public abstract BubbleInfo build(); + } + + /** Represents actions to be shown in the bubble when expanded */ + @AutoValue + public abstract static class Action { + + @NonNull + public abstract Icon getIcon(); + + @NonNull + public abstract CharSequence getName(); + + @NonNull + public abstract PendingIntent getAction(); + + public abstract boolean isEnabled(); + + public abstract boolean isChecked(); + + public static Builder builder() { + return new AutoValue_BubbleInfo_Action.Builder().setEnabled(true).setChecked(false); + } + + public static Builder from(@NonNull Action action) { + return builder() + .setAction(action.getAction()) + .setChecked(action.isChecked()) + .setEnabled(action.isEnabled()) + .setName(action.getName()) + .setIcon(action.getIcon()); + } + + /** Builder for {@link Action} */ + @AutoValue.Builder + public abstract static class Builder { + + public abstract Builder setIcon(@NonNull Icon icon); + + public abstract Builder setName(@NonNull CharSequence name); + + public abstract Builder setAction(@NonNull PendingIntent action); + + public abstract Builder setEnabled(boolean enabled); + + public abstract Builder setChecked(boolean checked); + + public abstract Action build(); + } + } +} diff --git a/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java b/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java new file mode 100644 index 0000000000..4da6a3561b --- /dev/null +++ b/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java @@ -0,0 +1,166 @@ +/* + * 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.dialershared.bubble; + +import android.animation.Animator; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.graphics.Path; +import android.graphics.PointF; +import android.graphics.Rect; +import android.transition.Transition; +import android.transition.TransitionValues; +import android.util.Property; +import android.view.View; +import android.view.ViewGroup; + +/** Similar to {@link android.transition.ChangeBounds ChangeBounds} but works across windows */ +public class ChangeOnScreenBounds extends Transition { + + private static final String PROPNAME_BOUNDS = "bubble:changeScreenBounds:bounds"; + private static final String PROPNAME_SCREEN_X = "bubble:changeScreenBounds:screenX"; + private static final String PROPNAME_SCREEN_Y = "bubble:changeScreenBounds:screenY"; + + private static final Property TOP_LEFT_PROPERTY = + new Property(PointF.class, "topLeft") { + @Override + public void set(ViewBounds viewBounds, PointF topLeft) { + viewBounds.setTopLeft(topLeft); + } + + @Override + public PointF get(ViewBounds viewBounds) { + return null; + } + }; + + private static final Property BOTTOM_RIGHT_PROPERTY = + new Property(PointF.class, "bottomRight") { + @Override + public void set(ViewBounds viewBounds, PointF bottomRight) { + viewBounds.setBottomRight(bottomRight); + } + + @Override + public PointF get(ViewBounds viewBounds) { + return null; + } + }; + private final int[] tempLocation = new int[2]; + + @Override + public void captureStartValues(TransitionValues transitionValues) { + captureValues(transitionValues); + } + + @Override + public void captureEndValues(TransitionValues transitionValues) { + captureValues(transitionValues); + } + + private void captureValues(TransitionValues values) { + View view = values.view; + + if (view.isLaidOut() || view.getWidth() != 0 || view.getHeight() != 0) { + values.values.put( + PROPNAME_BOUNDS, + new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom())); + values.view.getLocationOnScreen(tempLocation); + values.values.put(PROPNAME_SCREEN_X, tempLocation[0]); + values.values.put(PROPNAME_SCREEN_Y, tempLocation[1]); + } + } + + @Override + public Animator createAnimator( + ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) { + Rect startBounds = (Rect) startValues.values.get(PROPNAME_BOUNDS); + + // Offset the startBounds by the difference in screen position + int startScreenX = (Integer) startValues.values.get(PROPNAME_SCREEN_X); + int startScreenY = (Integer) startValues.values.get(PROPNAME_SCREEN_Y); + int endScreenX = (Integer) endValues.values.get(PROPNAME_SCREEN_X); + int endScreenY = (Integer) endValues.values.get(PROPNAME_SCREEN_Y); + startBounds.offset(startScreenX - endScreenX, startScreenY - endScreenY); + + Rect endBounds = (Rect) endValues.values.get(PROPNAME_BOUNDS); + final int startLeft = startBounds.left; + final int endLeft = endBounds.left; + final int startTop = startBounds.top; + final int endTop = endBounds.top; + final int startRight = startBounds.right; + final int endRight = endBounds.right; + final int startBottom = startBounds.bottom; + final int endBottom = endBounds.bottom; + ViewBounds viewBounds = new ViewBounds(endValues.view); + viewBounds.setTopLeft(new PointF(startLeft, startTop)); + viewBounds.setBottomRight(new PointF(startRight, startBottom)); + + // Animate the top left and bottom right corners along a path + Path topLeftPath = getPathMotion().getPath(startLeft, startTop, endLeft, endTop); + ObjectAnimator topLeftAnimator = + ObjectAnimator.ofObject(viewBounds, TOP_LEFT_PROPERTY, null, topLeftPath); + + Path bottomRightPath = getPathMotion().getPath(startRight, startBottom, endRight, endBottom); + ObjectAnimator bottomRightAnimator = + ObjectAnimator.ofObject(viewBounds, BOTTOM_RIGHT_PROPERTY, null, bottomRightPath); + AnimatorSet set = new AnimatorSet(); + set.playTogether(topLeftAnimator, bottomRightAnimator); + return set; + } + + private static class ViewBounds { + private int left; + private int top; + private int right; + private int bottom; + private final View view; + private int topLeftCalls; + private int bottomRightCalls; + + public ViewBounds(View view) { + this.view = view; + } + + public void setTopLeft(PointF topLeft) { + left = Math.round(topLeft.x); + top = Math.round(topLeft.y); + topLeftCalls++; + if (topLeftCalls == bottomRightCalls) { + updateLeftTopRightBottom(); + } + } + + public void setBottomRight(PointF bottomRight) { + right = Math.round(bottomRight.x); + bottom = Math.round(bottomRight.y); + bottomRightCalls++; + if (topLeftCalls == bottomRightCalls) { + updateLeftTopRightBottom(); + } + } + + private void updateLeftTopRightBottom() { + view.setLeft(left); + view.setTop(top); + view.setRight(right); + view.setBottom(bottom); + topLeftCalls = 0; + bottomRightCalls = 0; + } + } +} diff --git a/java/com/android/dialershared/bubble/CheckableImageButton.java b/java/com/android/dialershared/bubble/CheckableImageButton.java new file mode 100644 index 0000000000..7a5a432a6d --- /dev/null +++ b/java/com/android/dialershared/bubble/CheckableImageButton.java @@ -0,0 +1,101 @@ +/* + * 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.dialershared.bubble; + +import android.content.Context; +import android.support.v4.view.AccessibilityDelegateCompat; +import android.support.v4.view.ViewCompat; +import android.support.v4.view.accessibility.AccessibilityEventCompat; +import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; +import android.support.v7.widget.AppCompatImageButton; +import android.util.AttributeSet; +import android.view.View; +import android.view.accessibility.AccessibilityEvent; +import android.widget.Checkable; + +/** + * An {@link android.widget.ImageButton ImageButton} that implements {@link Checkable} and + * propagates the checkable state + */ +public class CheckableImageButton extends AppCompatImageButton implements Checkable { + + // Copied without modification from AppCompat library + + private static final int[] DRAWABLE_STATE_CHECKED = new int[] {android.R.attr.state_checked}; + + private boolean mChecked; + + public CheckableImageButton(Context context) { + this(context, null); + } + + public CheckableImageButton(Context context, AttributeSet attrs) { + this(context, attrs, android.R.attr.imageButtonStyle); + } + + public CheckableImageButton(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + ViewCompat.setAccessibilityDelegate( + this, + new AccessibilityDelegateCompat() { + @Override + public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) { + super.onInitializeAccessibilityEvent(host, event); + event.setChecked(isChecked()); + } + + @Override + public void onInitializeAccessibilityNodeInfo( + View host, AccessibilityNodeInfoCompat info) { + super.onInitializeAccessibilityNodeInfo(host, info); + info.setCheckable(true); + info.setChecked(isChecked()); + } + }); + } + + @Override + public void setChecked(boolean checked) { + if (mChecked != checked) { + mChecked = checked; + refreshDrawableState(); + sendAccessibilityEvent(AccessibilityEventCompat.TYPE_WINDOW_CONTENT_CHANGED); + } + } + + @Override + public boolean isChecked() { + return mChecked; + } + + @Override + public void toggle() { + setChecked(!mChecked); + } + + @Override + public int[] onCreateDrawableState(int extraSpace) { + if (mChecked) { + return mergeDrawableStates( + super.onCreateDrawableState(extraSpace + DRAWABLE_STATE_CHECKED.length), + DRAWABLE_STATE_CHECKED); + } else { + return super.onCreateDrawableState(extraSpace); + } + } +} diff --git a/java/com/android/dialershared/bubble/MoveHandler.java b/java/com/android/dialershared/bubble/MoveHandler.java new file mode 100644 index 0000000000..8a21cd7e1f --- /dev/null +++ b/java/com/android/dialershared/bubble/MoveHandler.java @@ -0,0 +1,250 @@ +/* + * 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.dialershared.bubble; + +import android.content.Context; +import android.graphics.Point; +import android.support.animation.FloatPropertyCompat; +import android.support.animation.SpringAnimation; +import android.support.animation.SpringForce; +import android.support.annotation.NonNull; +import android.support.v4.math.MathUtils; +import android.view.Gravity; +import android.view.MotionEvent; +import android.view.VelocityTracker; +import android.view.View; +import android.view.View.OnTouchListener; +import android.view.ViewConfiguration; +import android.view.WindowManager; +import android.view.WindowManager.LayoutParams; +import android.widget.Scroller; + +/** Handles touches and manages moving the bubble in response */ +class MoveHandler implements OnTouchListener { + + // Amount the ViewConfiguration's minFlingVelocity will be scaled by for our own minVelocity + private static final int MIN_FLING_VELOCITY_FACTOR = 8; + // The friction multiplier to control how slippery the bubble is when flung + private static final float SCROLL_FRICTION_MULTIPLIER = 8f; + + private final Context context; + private final WindowManager windowManager; + private final Bubble bubble; + private final int minX; + private final int minY; + private final int maxX; + private final int maxY; + private final int bubbleSize; + private final int shadowPaddingSize; + private final float touchSlopSquared; + + private boolean isMoving; + private float firstX; + private float firstY; + + private SpringAnimation moveXAnimation; + private SpringAnimation moveYAnimation; + private VelocityTracker velocityTracker; + private Scroller scroller; + + // Handles the left/right gravity conversion and centering + private final FloatPropertyCompat xProperty = + new FloatPropertyCompat("xProperty") { + @Override + public float getValue(LayoutParams windowParams) { + int realX = windowParams.x; + realX = realX + bubbleSize / 2; + realX = realX + shadowPaddingSize; + if (relativeToRight(windowParams)) { + int displayWidth = context.getResources().getDisplayMetrics().widthPixels; + realX = displayWidth - realX; + } + return MathUtils.clamp(realX, minX, maxX); + } + + @Override + public void setValue(LayoutParams windowParams, float value) { + int displayWidth = context.getResources().getDisplayMetrics().widthPixels; + boolean onRight = value > displayWidth / 2; + int centeringOffset = bubbleSize / 2 + shadowPaddingSize; + windowParams.x = + (int) (onRight ? (displayWidth - value - centeringOffset) : value - centeringOffset); + windowParams.gravity = Gravity.TOP | (onRight ? Gravity.RIGHT : Gravity.LEFT); + if (bubble.isShowing()) { + windowManager.updateViewLayout(bubble.getRootView(), windowParams); + } + } + }; + + private final FloatPropertyCompat yProperty = + new FloatPropertyCompat("yProperty") { + @Override + public float getValue(LayoutParams object) { + return MathUtils.clamp(object.y + bubbleSize + shadowPaddingSize, minY, maxY); + } + + @Override + public void setValue(LayoutParams object, float value) { + object.y = (int) value - bubbleSize - shadowPaddingSize; + if (bubble.isShowing()) { + windowManager.updateViewLayout(bubble.getRootView(), object); + } + } + }; + + public MoveHandler(@NonNull View targetView, @NonNull Bubble bubble) { + this.bubble = bubble; + context = targetView.getContext(); + windowManager = context.getSystemService(WindowManager.class); + + bubbleSize = context.getResources().getDimensionPixelSize(R.dimen.bubble_size); + shadowPaddingSize = + context.getResources().getDimensionPixelOffset(R.dimen.bubble_shadow_padding_size); + minX = + context.getResources().getDimensionPixelOffset(R.dimen.bubble_safe_margin_x) + + bubbleSize / 2; + minY = + context.getResources().getDimensionPixelOffset(R.dimen.bubble_safe_margin_y) + + bubbleSize / 2; + maxX = context.getResources().getDisplayMetrics().widthPixels - minX; + maxY = context.getResources().getDisplayMetrics().heightPixels - minY; + + // Squared because it will be compared against the square of the touch delta. This is more + // efficient than needing to take a square root. + touchSlopSquared = (float) Math.pow(ViewConfiguration.get(context).getScaledTouchSlop(), 2); + + targetView.setOnTouchListener(this); + } + + public boolean isMoving() { + return isMoving; + } + + @Override + public boolean onTouch(View v, MotionEvent event) { + float eventX = event.getRawX(); + float eventY = event.getRawY(); + switch (event.getActionMasked()) { + case MotionEvent.ACTION_DOWN: + firstX = eventX; + firstY = eventY; + velocityTracker = VelocityTracker.obtain(); + break; + case MotionEvent.ACTION_MOVE: + if (isMoving || hasExceededTouchSlop(event)) { + if (!isMoving) { + isMoving = true; + bubble.onMoveStart(); + } + + if (moveXAnimation == null) { + moveXAnimation = new SpringAnimation(bubble.getWindowParams(), xProperty); + moveXAnimation.setSpring(new SpringForce()); + moveXAnimation.getSpring().setDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY); + } + if (moveYAnimation == null) { + moveYAnimation = new SpringAnimation(bubble.getWindowParams(), yProperty); + moveYAnimation.setSpring(new SpringForce()); + moveYAnimation.getSpring().setDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY); + } + + moveXAnimation.animateToFinalPosition(MathUtils.clamp(eventX, minX, maxX)); + moveYAnimation.animateToFinalPosition(MathUtils.clamp(eventY, minY, maxY)); + } + + velocityTracker.addMovement(event); + break; + case MotionEvent.ACTION_UP: + if (isMoving) { + ViewConfiguration viewConfiguration = ViewConfiguration.get(context); + velocityTracker.computeCurrentVelocity( + 1000, viewConfiguration.getScaledMaximumFlingVelocity()); + float xVelocity = velocityTracker.getXVelocity(); + float yVelocity = velocityTracker.getYVelocity(); + boolean isFling = isFling(xVelocity, yVelocity); + + if (isFling) { + Point target = + findTarget( + xVelocity, + yVelocity, + (int) xProperty.getValue(bubble.getWindowParams()), + (int) yProperty.getValue(bubble.getWindowParams())); + + moveXAnimation.animateToFinalPosition(target.x); + moveYAnimation.animateToFinalPosition(target.y); + } else { + snapX(); + } + + bubble.onMoveFinish(); + } else { + v.performClick(); + bubble.primaryButtonClick(); + } + isMoving = false; + break; + } + return true; + } + + private Point findTarget(float xVelocity, float yVelocity, int startX, int startY) { + if (scroller == null) { + scroller = new Scroller(context); + scroller.setFriction(ViewConfiguration.getScrollFriction() * SCROLL_FRICTION_MULTIPLIER); + } + + // Find where a fling would end vertically + scroller.fling(startX, startY, (int) xVelocity, (int) yVelocity, minX, maxX, minY, maxY); + int targetY = scroller.getFinalY(); + scroller.abortAnimation(); + + // If the x component of the velocity is above the minimum fling velocity, use velocity to + // determine edge. Otherwise use its starting position + boolean pullRight = isFling(xVelocity, 0) ? xVelocity > 0 : isOnRightHalf(startX); + return new Point(pullRight ? maxX : minX, targetY); + } + + private boolean isFling(float xVelocity, float yVelocity) { + int minFlingVelocity = + ViewConfiguration.get(context).getScaledMinimumFlingVelocity() * MIN_FLING_VELOCITY_FACTOR; + return getMagnitudeSquared(xVelocity, yVelocity) > minFlingVelocity * minFlingVelocity; + } + + private boolean isOnRightHalf(float currentX) { + return currentX > (minX + maxX) / 2; + } + + private void snapX() { + // Check if x value is closer to min or max + boolean pullRight = isOnRightHalf(xProperty.getValue(bubble.getWindowParams())); + moveXAnimation.animateToFinalPosition(pullRight ? maxX : minX); + } + + private boolean relativeToRight(LayoutParams windowParams) { + return (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT; + } + + private boolean hasExceededTouchSlop(MotionEvent event) { + return getMagnitudeSquared(event.getRawX() - firstX, event.getRawY() - firstY) + > touchSlopSquared; + } + + private float getMagnitudeSquared(float deltaX, float deltaY) { + return deltaX * deltaX + deltaY * deltaY; + } +} diff --git a/java/com/android/dialershared/bubble/WindowRoot.java b/java/com/android/dialershared/bubble/WindowRoot.java new file mode 100644 index 0000000000..2c176662e4 --- /dev/null +++ b/java/com/android/dialershared/bubble/WindowRoot.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.dialershared.bubble; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.view.KeyEvent; +import android.widget.FrameLayout; + +/** + * ViewGroup that handles some overlay window concerns. Allows back button events to be listened for + * via an interface. + */ +public class WindowRoot extends FrameLayout { + + private OnBackPressedListener backPressedListener; + + /** Callback for when the back button is pressed while this window is in focus */ + public interface OnBackPressedListener { + boolean onBackPressed(); + } + + public WindowRoot(@NonNull Context context) { + super(context); + } + + public void setOnBackPressedListener(OnBackPressedListener listener) { + backPressedListener = listener; + } + + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && backPressedListener != null) { + if (event.getAction() == KeyEvent.ACTION_UP) { + return backPressedListener.onBackPressed(); + } + return true; + } + return super.dispatchKeyEvent(event); + } +} diff --git a/java/com/android/contacts/common/res/drawable/ic_call_and_share.xml b/java/com/android/dialershared/bubble/res/color/bubble_checkable_mask.xml similarity index 66% rename from java/com/android/contacts/common/res/drawable/ic_call_and_share.xml rename to java/com/android/dialershared/bubble/res/color/bubble_checkable_mask.xml index be0cdd3585..f9416ab576 100644 --- a/java/com/android/contacts/common/res/drawable/ic_call_and_share.xml +++ b/java/com/android/dialershared/bubble/res/color/bubble_checkable_mask.xml @@ -1,6 +1,6 @@ - \ No newline at end of file + + + + diff --git a/java/com/android/contacts/common/res/drawable/ic_back_arrow.xml b/java/com/android/dialershared/bubble/res/color/bubble_icon_tint_states.xml similarity index 70% rename from java/com/android/contacts/common/res/drawable/ic_back_arrow.xml rename to java/com/android/dialershared/bubble/res/color/bubble_icon_tint_states.xml index ecf704e8eb..33ca1fdc52 100644 --- a/java/com/android/contacts/common/res/drawable/ic_back_arrow.xml +++ b/java/com/android/dialershared/bubble/res/color/bubble_icon_tint_states.xml @@ -1,6 +1,6 @@ - \ No newline at end of file + + + + + diff --git a/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_ltr.xml b/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_ltr.xml new file mode 100644 index 0000000000..77c813a75e --- /dev/null +++ b/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_ltr.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_rtl.xml b/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_rtl.xml new file mode 100644 index 0000000000..9e25421549 --- /dev/null +++ b/java/com/android/dialershared/bubble/res/drawable/bubble_background_pill_rtl.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/java/com/android/dialershared/bubble/res/drawable/bubble_ripple_checkable_circle.xml b/java/com/android/dialershared/bubble/res/drawable/bubble_ripple_checkable_circle.xml new file mode 100644 index 0000000000..85e0b24f34 --- /dev/null +++ b/java/com/android/dialershared/bubble/res/drawable/bubble_ripple_checkable_circle.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + diff --git a/java/com/android/contacts/common/res/drawable/ic_search_video_call.xml b/java/com/android/dialershared/bubble/res/drawable/bubble_ripple_circle.xml similarity index 65% rename from java/com/android/contacts/common/res/drawable/ic_search_video_call.xml rename to java/com/android/dialershared/bubble/res/drawable/bubble_ripple_circle.xml index 0fe0367e19..8d5cf0bb53 100644 --- a/java/com/android/contacts/common/res/drawable/ic_search_video_call.xml +++ b/java/com/android/dialershared/bubble/res/drawable/bubble_ripple_circle.xml @@ -1,6 +1,6 @@ - + + + + + + + + diff --git a/java/com/android/dialershared/bubble/res/layout/bubble_base.xml b/java/com/android/dialershared/bubble/res/layout/bubble_base.xml new file mode 100644 index 0000000000..3acd2af2e3 --- /dev/null +++ b/java/com/android/dialershared/bubble/res/layout/bubble_base.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/java/com/android/incallui/res/drawable/img_conference_automirrored.xml b/java/com/android/dialershared/bubble/res/values/colors.xml similarity index 76% rename from java/com/android/incallui/res/drawable/img_conference_automirrored.xml rename to java/com/android/dialershared/bubble/res/values/colors.xml index 78b2876bcd..97545faf39 100644 --- a/java/com/android/incallui/res/drawable/img_conference_automirrored.xml +++ b/java/com/android/dialershared/bubble/res/values/colors.xml @@ -1,7 +1,6 @@ - - \ No newline at end of file + + #33000000 + diff --git a/java/com/android/dialershared/bubble/res/values/values.xml b/java/com/android/dialershared/bubble/res/values/values.xml new file mode 100644 index 0000000000..5b85e0d231 --- /dev/null +++ b/java/com/android/dialershared/bubble/res/values/values.xml @@ -0,0 +1,27 @@ + + + + + 0dp + 0dp + 0dp + 120dp + 64dp + 20dp + 4dp + 16dp + diff --git a/java/com/android/incallui/AndroidManifest.xml b/java/com/android/incallui/AndroidManifest.xml index 8539bd0cf5..703e5b5091 100644 --- a/java/com/android/incallui/AndroidManifest.xml +++ b/java/com/android/incallui/AndroidManifest.xml @@ -15,11 +15,11 @@ --> + package="com.android.incallui"> + android:minSdkVersion="23" + android:targetSdkVersion="26"/> + android:name="android.hardware.camera.any" + android:required="false"/> @@ -43,47 +43,49 @@ Set taskAffinity for application is not working because it will be merged and the result is that all activities here still have same taskAffinity as activities under dialer. --> - + + + android:directBootAware="true" + android:excludeFromRecents="true" + android:exported="false" + android:label="@string/phoneAppLabel" + android:launchMode="singleInstance" + android:name="com.android.incallui.InCallActivity" + android:resizeableActivity="true" + android:screenOrientation="nosensor" + android:taskAffinity="com.android.incallui" + android:theme="@style/Theme.InCallScreen"> + android:directBootAware="true" + android:excludeFromRecents="true" + android:exported="false" + android:label="@string/manageConferenceLabel" + android:launchMode="singleTask" + android:name="com.android.incallui.ManageConferenceActivity" + android:noHistory="true" + android:resizeableActivity="true" + android:taskAffinity="com.android.incallui" + android:theme="@style/Theme.InCallScreen.ManageConference"/> + android:directBootAware="true" + android:exported="true" + android:name="com.android.incallui.InCallServiceImpl" + android:permission="android.permission.BIND_INCALL_SERVICE"> + android:name="android.telecom.IN_CALL_SERVICE_UI" + android:value="true"/> + android:name="android.telecom.IN_CALL_SERVICE_RINGING" + android:value="false"/> + android:name="android.telecom.INCLUDE_EXTERNAL_CALLS" + android:value="true"/> @@ -97,23 +99,35 @@ excludeFromRecents="true" -> Don't show in "recent apps" screen --> + android:excludeFromRecents="true" + android:exported="false" + android:name="com.android.incallui.spam.SpamNotificationActivity" + android:noHistory="true" + android:taskAffinity="" + android:theme="@style/AfterCallNotificationTheme"> + + + android:exported="false" + android:name="com.android.incallui.spam.SpamNotificationService"/> + android:directBootAware="true" + android:exported="false" + android:name="com.android.incallui.NotificationBroadcastReceiver"/> + + diff --git a/java/com/android/incallui/AnswerScreenPresenter.java b/java/com/android/incallui/AnswerScreenPresenter.java index ca34aa6aa8..ddbe6ccef5 100644 --- a/java/com/android/incallui/AnswerScreenPresenter.java +++ b/java/com/android/incallui/AnswerScreenPresenter.java @@ -124,11 +124,28 @@ public class AnswerScreenPresenter LogUtil.i("AnswerScreenPresenter.onAnswerAndReleaseCall", "activeCall == null"); onAnswer(false); } else { + activeCall.setReleasedByAnsweringSecondCall(true); activeCall.addListener(new AnswerOnDisconnected(activeCall)); activeCall.disconnect(); } } + @Override + public void onAnswerAndReleaseButtonDisabled() { + DialerCall activeCall = CallList.getInstance().getActiveCall(); + if (activeCall != null) { + activeCall.increaseSecondCallWithoutAnswerAndReleasedButtonTimes(); + } + } + + @Override + public void onAnswerAndReleaseButtonEnabled() { + DialerCall activeCall = CallList.getInstance().getActiveCall(); + if (activeCall != null) { + activeCall.increaseAnswerAndReleaseButtonDisplayedTimes(); + } + } + @Override public void onCannedTextResponsesLoaded(DialerCall call) { if (isSmsResponseAllowed(call)) { @@ -183,6 +200,9 @@ public class AnswerScreenPresenter @Override public void onInternationalCallOnWifi() {} + + @Override + public void onEnrichedCallSessionUpdate() {} } private boolean isSmsResponseAllowed(DialerCall call) { diff --git a/java/com/android/incallui/AnswerScreenPresenterStub.java b/java/com/android/incallui/AnswerScreenPresenterStub.java index 7bff3299af..d02a181c1a 100644 --- a/java/com/android/incallui/AnswerScreenPresenterStub.java +++ b/java/com/android/incallui/AnswerScreenPresenterStub.java @@ -42,6 +42,12 @@ public class AnswerScreenPresenterStub implements AnswerScreenDelegate { @Override public void onAnswerAndReleaseCall() {} + @Override + public void onAnswerAndReleaseButtonEnabled() {} + + @Override + public void onAnswerAndReleaseButtonDisabled() {} + @Override public void updateWindowBackgroundColor(@FloatRange(from = -1f, to = 1.0f) float progress) {} } diff --git a/java/com/android/incallui/AudioRouteSelectorActivity.java b/java/com/android/incallui/AudioRouteSelectorActivity.java new file mode 100644 index 0000000000..dfd4d1abf1 --- /dev/null +++ b/java/com/android/incallui/AudioRouteSelectorActivity.java @@ -0,0 +1,47 @@ +/* + * 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.incallui; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.FragmentActivity; +import com.android.incallui.audiomode.AudioModeProvider; +import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment; +import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter; +import com.android.incallui.call.TelecomAdapter; + +/** Simple activity that just shows the audio route selector fragment */ +public class AudioRouteSelectorActivity extends FragmentActivity + implements AudioRouteSelectorPresenter { + + @Override + protected void onCreate(@Nullable Bundle bundle) { + super.onCreate(bundle); + AudioRouteSelectorDialogFragment.newInstance(AudioModeProvider.getInstance().getAudioState()) + .show(getSupportFragmentManager(), null); + } + + @Override + public void onAudioRouteSelected(int audioRoute) { + TelecomAdapter.getInstance().setAudioRoute(audioRoute); + } + + @Override + public void onAudioRouteSelectorDismiss() { + finish(); + } +} diff --git a/java/com/android/incallui/CallButtonPresenter.java b/java/com/android/incallui/CallButtonPresenter.java index b0c3a99eab..f758a9655e 100644 --- a/java/com/android/incallui/CallButtonPresenter.java +++ b/java/com/android/incallui/CallButtonPresenter.java @@ -300,18 +300,7 @@ public class CallButtonPresenter */ @Override public void switchCameraClicked(boolean useFrontFacingCamera) { - InCallCameraManager cameraManager = InCallPresenter.getInstance().getInCallCameraManager(); - cameraManager.setUseFrontFacingCamera(useFrontFacingCamera); - - String cameraId = cameraManager.getActiveCameraId(); - if (cameraId != null) { - final int cameraDir = - cameraManager.isUsingFrontFacingCamera() - ? CameraDirection.CAMERA_DIRECTION_FRONT_FACING - : CameraDirection.CAMERA_DIRECTION_BACK_FACING; - mCall.setCameraDir(cameraDir); - mCall.getVideoTech().setCamera(cameraId); - } + updateCamera(useFrontFacingCamera); } @Override @@ -345,8 +334,11 @@ public class CallButtonPresenter mCall.getTimeAddedMs()); if (pause) { + mCall.getVideoTech().setCamera(null); mCall.getVideoTech().stopTransmission(); } else { + updateCamera( + InCallPresenter.getInstance().getInCallCameraManager().isUsingFrontFacingCamera()); mCall.getVideoTech().resumeTransmission(); } @@ -354,6 +346,21 @@ public class CallButtonPresenter mInCallButtonUi.enableButton(InCallButtonIds.BUTTON_PAUSE_VIDEO, false); } + private void updateCamera(boolean useFrontFacingCamera) { + InCallCameraManager cameraManager = InCallPresenter.getInstance().getInCallCameraManager(); + cameraManager.setUseFrontFacingCamera(useFrontFacingCamera); + + String cameraId = cameraManager.getActiveCameraId(); + if (cameraId != null) { + final int cameraDir = + cameraManager.isUsingFrontFacingCamera() + ? CameraDirection.CAMERA_DIRECTION_FRONT_FACING + : CameraDirection.CAMERA_DIRECTION_BACK_FACING; + mCall.setCameraDir(cameraDir); + mCall.getVideoTech().setCamera(cameraId); + } + } + private void updateUi(InCallState state, DialerCall call) { LogUtil.v("CallButtonPresenter", "updating call UI for call: ", call); diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java index c2b99c1d1a..cd06793ce4 100644 --- a/java/com/android/incallui/CallCardPresenter.java +++ b/java/com/android/incallui/CallCardPresenter.java @@ -47,9 +47,6 @@ import com.android.dialer.common.Assert; import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; import com.android.dialer.compat.ActivityCompat; -import com.android.dialer.enrichedcall.EnrichedCallComponent; -import com.android.dialer.enrichedcall.EnrichedCallManager; -import com.android.dialer.enrichedcall.Session; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.dialer.multimedia.MultimediaData; @@ -85,8 +82,7 @@ public class CallCardPresenter InCallDetailsListener, InCallEventListener, InCallScreenDelegate, - DialerCallListener, - EnrichedCallManager.StateChangedListener { + DialerCallListener { /** * Amount of time to wait before sending an announcement via the accessibility manager. When the @@ -376,6 +372,11 @@ public class CallCardPresenter @Override public void onInternationalCallOnWifi() {} + @Override + public void onEnrichedCallSessionUpdate() { + updatePrimaryDisplayInfo(); + } + /** Handles a change to the child number by refreshing the primary call info. */ @Override public void onDialerCallChildNumberChange() { @@ -418,12 +419,6 @@ public class CallCardPresenter updatePrimaryCallState(); } - @Override - public void onEnrichedCallStateChanged() { - LogUtil.enterBlock("CallCardPresenter.onEnrichedCallStateChanged"); - updatePrimaryDisplayInfo(); - } - private boolean shouldRefreshPrimaryInfo(boolean primaryChanged) { if (mPrimary == null) { return false; @@ -475,7 +470,8 @@ public class CallCardPresenter mPrimary.getConnectTimeMillis(), CallerInfoUtils.isVoiceMailNumber(mContext, mPrimary), mPrimary.isRemotelyHeld(), - isBusiness)); + isBusiness, + supports2ndCallOnHold())); InCallActivity activity = (InCallActivity) (mInCallScreen.getInCallScreenFragment().getActivity()); @@ -505,6 +501,15 @@ public class CallCardPresenter && !mIsFullscreen; } + private boolean supports2ndCallOnHold() { + DialerCall firstCall = CallList.getInstance().getActiveOrBackgroundCall(); + DialerCall incomingCall = CallList.getInstance().getIncomingCall(); + if (firstCall != null && incomingCall != null && firstCall != incomingCall) { + return incomingCall.can(Details.CAPABILITY_HOLD); + } + return true; + } + @Override public void onCallStateButtonClicked() { Intent broadcastIntent = Bindings.get(mContext).getCallStateButtonBroadcastIntent(mContext); @@ -666,26 +671,8 @@ public class CallCardPresenter boolean hasWorkCallProperty = mPrimary.hasProperty(PROPERTY_ENTERPRISE_CALL); MultimediaData multimediaData = null; - if (mPrimary.getNumber() != null) { - EnrichedCallManager manager = EnrichedCallComponent.get(mContext).getEnrichedCallManager(); - - EnrichedCallManager.Filter filter; - if (mPrimary.isIncoming()) { - filter = manager.createIncomingCallComposerFilter(); - } else { - filter = manager.createOutgoingCallComposerFilter(); - } - - Session enrichedCallSession = - manager.getSession(mPrimary.getUniqueCallId(), mPrimary.getNumber(), filter); - - mPrimary.setEnrichedCallSession(enrichedCallSession); - mPrimary.setEnrichedCallCapabilities(manager.getCapabilities(mPrimary.getNumber())); - - if (enrichedCallSession != null) { - enrichedCallSession.setUniqueDialerCallId(mPrimary.getUniqueCallId()); - multimediaData = enrichedCallSession.getMultimediaData(); - } + if (mPrimary.getEnrichedCallSession() != null) { + multimediaData = mPrimary.getEnrichedCallSession().getMultimediaData(); } if (mPrimary.isConferenceCall()) { @@ -696,7 +683,8 @@ public class CallCardPresenter mInCallScreen.setPrimary( new PrimaryInfo( null /* number */, - getConferenceString(mPrimary), + CallerInfoUtils.getConferenceString( + mContext, mPrimary.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)), false /* nameIsNumber */, null /* location */, null /* label */, @@ -880,7 +868,8 @@ public class CallCardPresenter mInCallScreen.setSecondary( new SecondaryInfo( true /* show */, - getConferenceString(mSecondary), + CallerInfoUtils.getConferenceString( + mContext, mSecondary.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)), false /* nameIsNumber */, null /* label */, mSecondary.getCallProviderLabel(), @@ -972,7 +961,7 @@ public class CallCardPresenter } /** Gets the name to display for the call. */ - String getNameForCall(ContactCacheEntry contactInfo) { + private String getNameForCall(ContactCacheEntry contactInfo) { String preferredName = ContactDisplayUtils.getPreferredDisplayName( contactInfo.namePrimary, contactInfo.nameAlternative, mContactsPreferences); @@ -982,19 +971,6 @@ public class CallCardPresenter return preferredName; } - /** Gets the number to display for a call. */ - String getNumberForCall(ContactCacheEntry contactInfo) { - // If the name is empty, we use the number for the name...so don't show a second - // number in the number field - String preferredName = - ContactDisplayUtils.getPreferredDisplayName( - contactInfo.namePrimary, contactInfo.nameAlternative, mContactsPreferences); - if (TextUtils.isEmpty(preferredName)) { - return contactInfo.location; - } - return contactInfo.number; - } - @Override public void onSecondaryInfoClicked() { if (mSecondary == null) { @@ -1035,15 +1011,6 @@ public class CallCardPresenter return mPrimary != null && mPrimary.getState() == DialerCall.State.ACTIVE; } - private String getConferenceString(DialerCall call) { - boolean isGenericConference = call.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE); - LogUtil.v("CallCardPresenter.getConferenceString", "" + isGenericConference); - - final int resId = - isGenericConference ? R.string.generic_conference_call_name : R.string.conference_call_name; - return mContext.getResources().getString(resId); - } - private boolean shouldShowEndCallButton(DialerCall primary, int callState) { if (primary == null) { return false; @@ -1063,7 +1030,6 @@ public class CallCardPresenter @Override public void onInCallScreenResumed() { - EnrichedCallComponent.get(mContext).getEnrichedCallManager().registerStateChangedListener(this); updatePrimaryDisplayInfo(); if (shouldSendAccessibilityEvent) { @@ -1072,11 +1038,7 @@ public class CallCardPresenter } @Override - public void onInCallScreenPaused() { - EnrichedCallComponent.get(mContext) - .getEnrichedCallManager() - .unregisterStateChangedListener(this); - } + public void onInCallScreenPaused() {} static boolean sendAccessibilityEvent(Context context, InCallScreen inCallScreen) { AccessibilityManager am = diff --git a/java/com/android/incallui/CallerInfoUtils.java b/java/com/android/incallui/CallerInfoUtils.java index 5644466470..8f23107603 100644 --- a/java/com/android/incallui/CallerInfoUtils.java +++ b/java/com/android/incallui/CallerInfoUtils.java @@ -282,4 +282,11 @@ public class CallerInfoUtils { }); loader.startLoading(); } + + /** @return conference name for conference call. */ + public static String getConferenceString(Context context, boolean isGenericConference) { + final int resId = + isGenericConference ? R.string.generic_conference_call_name : R.string.conference_call_name; + return context.getResources().getString(resId); + } } diff --git a/java/com/android/incallui/ContactInfoCache.java b/java/com/android/incallui/ContactInfoCache.java index e45eb9746b..d7eea79bd3 100644 --- a/java/com/android/incallui/ContactInfoCache.java +++ b/java/com/android/incallui/ContactInfoCache.java @@ -406,7 +406,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { } else { ContactCacheEntry initialCacheEntry = updateCallerInfoInCacheOnAnyThread( - callId, call.getNumberPresentation(), callerInfo, isIncoming, false, queryToken); + callId, call.getNumberPresentation(), callerInfo, false, queryToken); sendInfoNotifications(callId, initialCacheEntry); } } @@ -416,7 +416,6 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { String callId, int numberPresentation, CallerInfo callerInfo, - boolean isIncoming, boolean didLocalLookup, CallerInfoQueryToken queryToken) { Log.d( @@ -443,16 +442,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { Log.d(TAG, "Existing cacheEntry in hashMap " + existingCacheEntry); if (didLocalLookup) { - // Before issuing a request for more data from other services, we only check that the - // contact wasn't found in the local DB. We don't check the if the cache entry already - // has a name because we allow overriding cnap data with data from other services. - if (!callerInfo.contactExists && mPhoneNumberService != null) { - Log.d(TAG, "Contact lookup. Local contacts miss, checking remote"); - final PhoneNumberServiceListener listener = - new PhoneNumberServiceListener(callId, queryToken.mQueryId); - cacheEntry.hasPendingQuery = true; - mPhoneNumberService.getPhoneNumberInfo(cacheEntry.number, listener, listener, isIncoming); - } else if (cacheEntry.displayPhotoUri != null) { + if (cacheEntry.displayPhotoUri != null) { // When the difference between 2 numbers is only the prefix (e.g. + or IDD), // we will still trigger force query so that the number can be updated on // the calling screen. We need not query the image again if the previous @@ -789,7 +779,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { maybeUpdateFromCequintCallerId(ci, cw.cnapName, mIsIncoming); long time = SystemClock.uptimeMillis() - start; Log.d(TAG, "Cequint Caller Id look up takes " + time + " ms."); - updateCallerInfoInCacheOnAnyThread(cw.callId, cw.numberPresentation, ci, mIsIncoming, true, mQueryToken); + updateCallerInfoInCacheOnAnyThread(cw.callId, cw.numberPresentation, ci, true, mQueryToken); } @Override @@ -807,6 +797,16 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { clearCallbacks(callId); return; } + // Before issuing a request for more data from other services, we only check that the + // contact wasn't found in the local DB. We don't check the if the cache entry already + // has a name because we allow overriding cnap data with data from other services. + if (!callerInfo.contactExists && mPhoneNumberService != null) { + Log.d(TAG, "Contact lookup. Local contacts miss, checking remote"); + final PhoneNumberServiceListener listener = + new PhoneNumberServiceListener(callId, mQueryToken.mQueryId); + cacheEntry.hasPendingQuery = true; + mPhoneNumberService.getPhoneNumberInfo(cacheEntry.number, listener, listener, mIsIncoming); + } sendInfoNotifications(callId, cacheEntry); if (!cacheEntry.hasPendingQuery) { if (callerInfo.contactExists) { @@ -870,6 +870,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { entry.shouldShowLocation = oldEntry.shouldShowLocation; // Contact specific ringtone is obtained from local lookup. entry.contactRingtoneUri = oldEntry.contactRingtoneUri; + entry.originalPhoneNumber = oldEntry.originalPhoneNumber; } // If no image and it's a business, switch to using the default business avatar. diff --git a/java/com/android/incallui/ExternalCallNotifier.java b/java/com/android/incallui/ExternalCallNotifier.java index 0c2493c600..051392e2b2 100644 --- a/java/com/android/incallui/ExternalCallNotifier.java +++ b/java/com/android/incallui/ExternalCallNotifier.java @@ -384,11 +384,10 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen ContactInfoCache.ContactCacheEntry contactInfo, android.telecom.Call call) { - if (call.getDetails().hasProperty(android.telecom.Call.Details.PROPERTY_CONFERENCE) - && !call.getDetails() - .hasProperty(android.telecom.Call.Details.PROPERTY_GENERIC_CONFERENCE)) { - - return context.getResources().getString(R.string.conference_call_name); + if (call.getDetails().hasProperty(android.telecom.Call.Details.PROPERTY_CONFERENCE)) { + return CallerInfoUtils.getConferenceString( + context, + call.getDetails().hasProperty(android.telecom.Call.Details.PROPERTY_GENERIC_CONFERENCE)); } String preferredName = diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java index cc9a8e4385..bda003ccc6 100644 --- a/java/com/android/incallui/InCallActivity.java +++ b/java/com/android/incallui/InCallActivity.java @@ -694,13 +694,8 @@ public class InCallActivity extends TransactionSafeFragmentActivity if (didShowInCallScreen) { return false; } - InCallScreen inCallScreen = getInCallScreen(); - if (inCallScreen == null) { - inCallScreen = InCallBindings.createInCallScreen(); - transaction.add(R.id.main, inCallScreen.getInCallScreenFragment(), TAG_IN_CALL_SCREEN); - } else { - transaction.show(inCallScreen.getInCallScreenFragment()); - } + InCallScreen inCallScreen = InCallBindings.createInCallScreen(); + transaction.add(R.id.main, inCallScreen.getInCallScreenFragment(), TAG_IN_CALL_SCREEN); Logger.get(this).logScreenView(ScreenEvent.Type.INCALL, this); didShowInCallScreen = true; return true; @@ -712,7 +707,7 @@ public class InCallActivity extends TransactionSafeFragmentActivity } InCallScreen inCallScreen = getInCallScreen(); if (inCallScreen != null) { - transaction.hide(inCallScreen.getInCallScreenFragment()); + transaction.remove(inCallScreen.getInCallScreenFragment()); } didShowInCallScreen = false; return true; diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java index 2d6d83c3c8..7c3000144b 100644 --- a/java/com/android/incallui/InCallPresenter.java +++ b/java/com/android/incallui/InCallPresenter.java @@ -695,7 +695,10 @@ public class InCallPresenter implements CallList.Listener { if (newState == InCallState.INCOMING && (waitingForAccountCall = callList.getWaitingForAccountCall()) != null) { waitingForAccountCall.disconnect(); - mInCallActivity.dismissPendingDialogs(); + // The InCallActivity might be destroyed or not started yet at this point. + if (isActivityStarted()) { + mInCallActivity.dismissPendingDialogs(); + } } newState = startOrFinishUi(newState); diff --git a/java/com/android/incallui/InCallServiceImpl.java b/java/com/android/incallui/InCallServiceImpl.java index 4ab92a797b..1653334a19 100644 --- a/java/com/android/incallui/InCallServiceImpl.java +++ b/java/com/android/incallui/InCallServiceImpl.java @@ -23,6 +23,7 @@ import android.telecom.Call; import android.telecom.CallAudioState; import android.telecom.InCallService; import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler; +import com.android.dialer.common.ConfigProviderBindings; import com.android.incallui.audiomode.AudioModeProvider; import com.android.incallui.call.CallList; import com.android.incallui.call.ExternalCallList; @@ -36,6 +37,8 @@ import com.android.incallui.call.TelecomAdapter; */ public class InCallServiceImpl extends InCallService { + private ReturnToCallController returnToCallController; + @Override public void onCallAudioStateChanged(CallAudioState audioState) { AudioModeProvider.getInstance().onAudioStateChanged(audioState); @@ -79,6 +82,9 @@ public class InCallServiceImpl extends InCallService { InCallPresenter.getInstance().onServiceBind(); InCallPresenter.getInstance().maybeStartRevealAnimation(intent); TelecomAdapter.getInstance().setInCallService(this); + if (ConfigProviderBindings.get(this).getBoolean("enable_return_to_call_bubble", false)) { + returnToCallController = new ReturnToCallController(this); + } return super.onBind(intent); } @@ -98,5 +104,9 @@ public class InCallServiceImpl extends InCallService { // Tear down the InCall system TelecomAdapter.getInstance().clearInCallService(); InCallPresenter.getInstance().tearDown(); + if (returnToCallController != null) { + returnToCallController.tearDown(); + returnToCallController = null; + } } } diff --git a/java/com/android/incallui/ReturnToCallActionReceiver.java b/java/com/android/incallui/ReturnToCallActionReceiver.java new file mode 100644 index 0000000000..b645c155c5 --- /dev/null +++ b/java/com/android/incallui/ReturnToCallActionReceiver.java @@ -0,0 +1,132 @@ +/* + * 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.incallui; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.telecom.CallAudioState; +import com.android.dialer.common.LogUtil; +import com.android.dialer.logging.DialerImpression; +import com.android.dialer.logging.Logger; +import com.android.incallui.audiomode.AudioModeProvider; +import com.android.incallui.call.CallList; +import com.android.incallui.call.DialerCall; +import com.android.incallui.call.TelecomAdapter; + +/** Handles clicks on the return-to-call bubble */ +public class ReturnToCallActionReceiver extends BroadcastReceiver { + + public static final String ACTION_TOGGLE_SPEAKER = "toggleSpeaker"; + public static final String ACTION_SHOW_AUDIO_ROUTE_SELECTOR = "showAudioRouteSelector"; + public static final String ACTION_TOGGLE_MUTE = "toggleMute"; + public static final String ACTION_END_CALL = "endCall"; + + @Override + public void onReceive(Context context, Intent intent) { + switch (intent.getAction()) { + case ACTION_TOGGLE_SPEAKER: + toggleSpeaker(context); + break; + case ACTION_SHOW_AUDIO_ROUTE_SELECTOR: + showAudioRouteSelector(context); + break; + case ACTION_TOGGLE_MUTE: + toggleMute(context); + break; + case ACTION_END_CALL: + endCall(context); + break; + } + } + + private void toggleSpeaker(Context context) { + CallAudioState audioState = AudioModeProvider.getInstance().getAudioState(); + + if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH) + == CallAudioState.ROUTE_BLUETOOTH) { + LogUtil.w( + "ReturnToCallActionReceiver.toggleSpeaker", + "toggleSpeaker() called when bluetooth available." + + " Probably should have shown audio route selector"); + } + + DialerCall call = getCall(); + + int newRoute; + if (audioState.getRoute() == CallAudioState.ROUTE_SPEAKER) { + newRoute = CallAudioState.ROUTE_WIRED_OR_EARPIECE; + Logger.get(context) + .logCallImpression( + DialerImpression.Type.BUBBLE_TURN_ON_WIRED_OR_EARPIECE, + call != null ? call.getUniqueCallId() : "", + call != null ? call.getTimeAddedMs() : 0); + } else { + newRoute = CallAudioState.ROUTE_SPEAKER; + Logger.get(context) + .logCallImpression( + DialerImpression.Type.BUBBLE_TURN_ON_SPEAKERPHONE, + call != null ? call.getUniqueCallId() : "", + call != null ? call.getTimeAddedMs() : 0); + } + TelecomAdapter.getInstance().setAudioRoute(newRoute); + } + + public void showAudioRouteSelector(Context context) { + context.startActivity(new Intent(context, AudioRouteSelectorActivity.class)); + } + + private void toggleMute(Context context) { + DialerCall call = getCall(); + boolean shouldMute = !AudioModeProvider.getInstance().getAudioState().isMuted(); + Logger.get(context) + .logCallImpression( + shouldMute + ? DialerImpression.Type.BUBBLE_MUTE_CALL + : DialerImpression.Type.BUBBLE_UNMUTE_CALL, + call != null ? call.getUniqueCallId() : "", + call != null ? call.getTimeAddedMs() : 0); + TelecomAdapter.getInstance().mute(shouldMute); + } + + private void endCall(Context context) { + DialerCall call = getCall(); + + Logger.get(context) + .logCallImpression( + DialerImpression.Type.BUBBLE_END_CALL, + call != null ? call.getUniqueCallId() : "", + call != null ? call.getTimeAddedMs() : 0); + if (call != null) { + call.disconnect(); + } + } + + private DialerCall getCall() { + CallList callList = InCallPresenter.getInstance().getCallList(); + if (callList != null) { + DialerCall call = callList.getOutgoingCall(); + if (call == null) { + call = callList.getActiveOrBackgroundCall(); + } + if (call != null) { + return call; + } + } + return null; + } +} diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java new file mode 100644 index 0000000000..4cb6aaf898 --- /dev/null +++ b/java/com/android/incallui/ReturnToCallController.java @@ -0,0 +1,204 @@ +/* + * 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.incallui; + +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.graphics.drawable.Icon; +import android.support.annotation.NonNull; +import android.support.annotation.VisibleForTesting; +import android.telecom.CallAudioState; +import com.android.dialer.common.LogUtil; +import com.android.dialer.telecom.TelecomUtil; +import com.android.dialershared.bubble.Bubble; +import com.android.dialershared.bubble.BubbleInfo; +import com.android.dialershared.bubble.BubbleInfo.Action; +import com.android.incallui.InCallPresenter.InCallUiListener; +import com.android.incallui.audiomode.AudioModeProvider; +import com.android.incallui.audiomode.AudioModeProvider.AudioModeListener; +import com.android.incallui.call.CallList; +import com.android.incallui.call.CallList.Listener; +import com.android.incallui.call.DialerCall; +import com.android.incallui.speakerbuttonlogic.SpeakerButtonInfo; +import com.android.incallui.speakerbuttonlogic.SpeakerButtonInfo.IconSize; +import java.util.ArrayList; +import java.util.List; + +/** + * Listens for events relevant to the return-to-call bubble and updates the bubble's state as + * necessary + */ +public class ReturnToCallController implements InCallUiListener, Listener, AudioModeListener { + + private final Context context; + + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + Bubble bubble; + + private CallAudioState audioState; + + private final PendingIntent toggleSpeaker; + private final PendingIntent showSpeakerSelect; + private final PendingIntent toggleMute; + private final PendingIntent endCall; + + public ReturnToCallController(Context context) { + this.context = context; + + toggleSpeaker = createActionIntent(ReturnToCallActionReceiver.ACTION_TOGGLE_SPEAKER); + showSpeakerSelect = + createActionIntent(ReturnToCallActionReceiver.ACTION_SHOW_AUDIO_ROUTE_SELECTOR); + toggleMute = createActionIntent(ReturnToCallActionReceiver.ACTION_TOGGLE_MUTE); + endCall = createActionIntent(ReturnToCallActionReceiver.ACTION_END_CALL); + + InCallPresenter.getInstance().addInCallUiListener(this); + CallList.getInstance().addListener(this); + AudioModeProvider.getInstance().addListener(this); + audioState = AudioModeProvider.getInstance().getAudioState(); + } + + public void tearDown() { + InCallPresenter.getInstance().removeInCallUiListener(this); + CallList.getInstance().removeListener(this); + AudioModeProvider.getInstance().removeListener(this); + } + + @Override + public void onUiShowing(boolean showing) { + if (showing) { + hide(); + } else { + if (TelecomUtil.isInCall(context)) { + show(); + } + } + } + + private void hide() { + if (bubble != null) { + bubble.hide(); + } else { + LogUtil.i("ReturnToCallController.hide", "hide() called without calling show()"); + } + } + + private void show() { + if (bubble == null) { + bubble = startNewBubble(); + } else { + bubble.show(); + } + } + + private Bubble startNewBubble() { + if (!Bubble.canShowBubbles(context)) { + LogUtil.i("ReturnToCallController.startNewBubble", "can't show bubble, no permission"); + return null; + } + Bubble returnToCallBubble = Bubble.createBubble(context, generateBubbleInfo()); + returnToCallBubble.show(); + return returnToCallBubble; + } + + @Override + public void onIncomingCall(DialerCall call) {} + + @Override + public void onUpgradeToVideo(DialerCall call) {} + + @Override + public void onSessionModificationStateChange(DialerCall call) {} + + @Override + public void onCallListChange(CallList callList) {} + + @Override + public void onDisconnect(DialerCall call) { + if (bubble != null && bubble.isShowing()) { + bubble.showText(context.getText(R.string.incall_call_ended)); + } + + if (!TelecomUtil.isInCall(context)) { + hide(); + } + } + + @Override + public void onWiFiToLteHandover(DialerCall call) {} + + @Override + public void onHandoverToWifiFailed(DialerCall call) {} + + @Override + public void onInternationalCallOnWifi(@NonNull DialerCall call) {} + + @Override + public void onAudioStateChanged(CallAudioState audioState) { + this.audioState = audioState; + if (bubble != null) { + bubble.updateActions(generateActions()); + } + } + + private BubbleInfo generateBubbleInfo() { + return BubbleInfo.builder() + .setPrimaryColor(context.getResources().getColor(R.color.dialer_theme_color, null)) + .setPrimaryIcon(Icon.createWithResource(context, R.drawable.quantum_ic_call_white_24)) + .setPrimaryAction( + PendingIntent.getActivity( + context, 0, InCallActivity.getIntent(context, false, false, false), 0)) + .setActions(generateActions()) + .build(); + } + + @NonNull + private List generateActions() { + List actions = new ArrayList<>(); + SpeakerButtonInfo speakerButtonInfo = new SpeakerButtonInfo(audioState, IconSize.SIZE_24_DP); + + actions.add( + Action.builder() + .setIcon(Icon.createWithResource(context, speakerButtonInfo.icon)) + .setName(context.getText(speakerButtonInfo.label)) + .setChecked(speakerButtonInfo.isChecked) + .setAction(speakerButtonInfo.checkable ? toggleSpeaker : showSpeakerSelect) + .build()); + + actions.add( + Action.builder() + .setIcon(Icon.createWithResource(context, R.drawable.quantum_ic_mic_off_white_24)) + .setName(context.getText(R.string.incall_label_mute)) + .setChecked(audioState.isMuted()) + .setAction(toggleMute) + .build()); + actions.add( + Action.builder() + .setIcon(Icon.createWithResource(context, R.drawable.quantum_ic_call_end_white_24)) + .setName(context.getText(R.string.incall_label_end_call)) + .setAction(endCall) + .build()); + return actions; + } + + @NonNull + private PendingIntent createActionIntent(String actionToggleSpeaker) { + Intent toggleSpeaker = new Intent(context, ReturnToCallActionReceiver.class); + toggleSpeaker.setAction(actionToggleSpeaker); + return PendingIntent.getBroadcast(context, 0, toggleSpeaker, 0); + } +} diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java index 165b30b52b..229f08c8e2 100644 --- a/java/com/android/incallui/StatusBarNotifier.java +++ b/java/com/android/incallui/StatusBarNotifier.java @@ -62,11 +62,11 @@ import android.text.style.ForegroundColorSpan; import com.android.contacts.common.ContactsUtils; import com.android.contacts.common.ContactsUtils.UserType; import com.android.contacts.common.lettertiles.LetterTileDrawable; +import com.android.contacts.common.lettertiles.LetterTileDrawable.ContactType; import com.android.contacts.common.preference.ContactsPreferences; import com.android.contacts.common.util.BitmapUtil; import com.android.contacts.common.util.ContactDisplayUtils; import com.android.dialer.common.LogUtil; -import com.android.dialer.enrichedcall.EnrichedCallComponent; import com.android.dialer.enrichedcall.EnrichedCallManager; import com.android.dialer.enrichedcall.Session; import com.android.dialer.multimedia.MultimediaData; @@ -565,8 +565,9 @@ public class StatusBarNotifier @VisibleForTesting @Nullable String getContentTitle(ContactCacheEntry contactInfo, DialerCall call) { - if (call.isConferenceCall() && !call.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)) { - return mContext.getResources().getString(R.string.conference_call_name); + if (call.isConferenceCall()) { + return CallerInfoUtils.getConferenceString( + mContext, call.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)); } String preferredName = @@ -604,20 +605,16 @@ public class StatusBarNotifier if (contactInfo.photo == null) { int width = (int) resources.getDimension(android.R.dimen.notification_large_icon_width); int height = (int) resources.getDimension(android.R.dimen.notification_large_icon_height); - int contactType = LetterTileDrawable.TYPE_DEFAULT; + @ContactType + int contactType = + LetterTileDrawable.getContactTypeFromPrimitives( + CallerInfoUtils.isVoiceMailNumber(context, call), + call.isSpam(), + contactInfo.isBusiness, + call.getNumberPresentation(), + call.isConferenceCall() && !call.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)); LetterTileDrawable lettertile = new LetterTileDrawable(resources); - // TODO: Deduplicate across Dialer. b/36195917 - if (CallerInfoUtils.isVoiceMailNumber(context, call)) { - contactType = LetterTileDrawable.TYPE_VOICEMAIL; - } else if (contactInfo.isBusiness) { - contactType = LetterTileDrawable.TYPE_BUSINESS; - } else if (call.getNumberPresentation() == TelecomManager.PRESENTATION_RESTRICTED) { - contactType = LetterTileDrawable.TYPE_GENERIC_AVATAR; - } else if (call.isConferenceCall() - && !call.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)) { - contactType = LetterTileDrawable.TYPE_CONFERENCE; - } lettertile.setCanonicalDialerLetterTileDetails( contactInfo.namePrimary == null ? contactInfo.number : contactInfo.namePrimary, contactInfo.lookupKey, @@ -694,20 +691,10 @@ public class StatusBarNotifier } if (isIncomingOrWaiting) { - EnrichedCallManager manager = EnrichedCallComponent.get(mContext).getEnrichedCallManager(); - Session session = null; - if (call.getNumber() != null) { - session = - manager.getSession( - call.getUniqueCallId(), - call.getNumber(), - manager.createIncomingCallComposerFilter()); - } - if (call.isSpam()) { resId = R.string.notification_incoming_spam_call; - } else if (session != null) { - resId = getECIncomingCallText(session); + } else if (shouldShowEnrichedCallNotification(call.getEnrichedCallSession())) { + resId = getECIncomingCallText(call.getEnrichedCallSession()); } else if (call.hasProperty(Details.PROPERTY_WIFI)) { resId = R.string.notification_incoming_call_wifi; } else { @@ -731,6 +718,13 @@ public class StatusBarNotifier return mContext.getString(resId); } + private boolean shouldShowEnrichedCallNotification(Session session) { + if (session == null) { + return false; + } + return session.getMultimediaData().hasData() || session.getMultimediaData().isImportant(); + } + private int getECIncomingCallText(Session session) { int resId; MultimediaData data = session.getMultimediaData(); @@ -756,8 +750,10 @@ public class StatusBarNotifier } else { resId = R.string.important_notification_incoming_call_with_photo; } - } else { + } else if (hasSubject) { resId = R.string.important_notification_incoming_call_with_message; + } else { + resId = R.string.important_notification_incoming_call; } if (mContext.getString(resId).length() > 50) { resId = R.string.important_notification_incoming_call_attachments; @@ -1005,6 +1001,9 @@ public class StatusBarNotifier @Override public void onInternationalCallOnWifi() {} + @Override + public void onEnrichedCallSessionUpdate() {} + /** * Responds to changes in the session modification state for the call by dismissing the status * bar notification as required. diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java index 1f0541c4bf..6be79305d4 100644 --- a/java/com/android/incallui/answer/impl/AnswerFragment.java +++ b/java/com/android/incallui/answer/impl/AnswerFragment.java @@ -427,8 +427,10 @@ public class AnswerFragment extends Fragment if (allowAnswerAndRelease()) { answerAndReleaseButton.setVisibility(View.VISIBLE); + answerScreenDelegate.onAnswerAndReleaseButtonEnabled(); } else { answerAndReleaseButton.setVisibility(View.INVISIBLE); + answerScreenDelegate.onAnswerAndReleaseButtonDisabled(); } } @@ -930,7 +932,7 @@ public class AnswerFragment extends Fragment if (hasCallOnHold()) { getAnswerMethod() .setHintText(getText(R.string.call_incoming_default_label_answer_and_release_third)); - } else { + } else if (primaryCallState.supportsCallOnHold) { getAnswerMethod() .setHintText(getText(R.string.call_incoming_default_label_answer_and_release_second)); } diff --git a/java/com/android/incallui/answer/impl/PillDrawable.java b/java/com/android/incallui/answer/impl/PillDrawable.java deleted file mode 100644 index 57d84c45f3..0000000000 --- a/java/com/android/incallui/answer/impl/PillDrawable.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2016 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.incallui.answer.impl; - -import android.graphics.Rect; -import android.graphics.drawable.GradientDrawable; - -/** Draws a pill-shaped background */ -public class PillDrawable extends GradientDrawable { - - public PillDrawable() { - super(); - setShape(RECTANGLE); - } - - @Override - protected void onBoundsChange(Rect r) { - super.onBoundsChange(r); - setCornerRadius(r.height() / 2); - } - - @Override - public void setShape(int shape) { - if (shape != GradientDrawable.RECTANGLE) { - throw new UnsupportedOperationException("PillDrawable must be a rectangle"); - } - super.setShape(shape); - } -} diff --git a/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml b/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml index 9a49075b84..600115e275 100644 --- a/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml +++ b/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml @@ -41,6 +41,7 @@ android:layout_marginBottom="116dp" android:layout_gravity="center_horizontal" android:alpha="0" + android:gravity="center_horizontal" android:text="@string/call_incoming_will_disconnect" android:textColor="@color/blue_grey_100" android:textSize="16sp" @@ -59,6 +60,7 @@ android:layout_marginBottom="18dp" android:layout_gravity="center_horizontal" android:focusable="false" + android:gravity="center_horizontal" android:text="@string/call_incoming_swipe_to_answer" android:textAlignment="center" android:textAppearance="@style/Dialer.Incall.TextAppearance.Hint"/> @@ -110,6 +112,7 @@ android:layout_gravity="center_horizontal" android:alpha="0" android:focusable="false" + android:gravity="center_horizontal" android:text="@string/call_incoming_swipe_to_reject" android:textAppearance="@style/Dialer.Incall.TextAppearance.Hint" tools:alpha="1"/> diff --git a/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java b/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java index 77b45ec71f..9c33b5de64 100644 --- a/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java +++ b/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java @@ -23,7 +23,6 @@ import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.VisibleForTesting; import com.android.dialer.common.Assert; -import com.android.dialer.common.ConfigProvider; import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; import com.android.dialer.util.DialerUtils; @@ -35,8 +34,9 @@ import com.android.incallui.util.AccessibilityUtil; */ public class AnswerHintFactory { - private static final String CONFIG_ANSWER_HINT_ANSWERED_THRESHOLD_KEY = - "answer_hint_answered_threshold"; + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + static final String CONFIG_ANSWER_HINT_ANSWERED_THRESHOLD_KEY = "answer_hint_answered_threshold"; + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) static final String CONFIG_ANSWER_HINT_WHITELISTED_DEVICES_KEY = "answer_hint_whitelisted_devices"; @@ -58,12 +58,7 @@ public class AnswerHintFactory { @NonNull public AnswerHint create(Context context, long puckUpDuration, long puckUpDelay) { - - if (shouldShowAnswerHint( - context, - ConfigProviderBindings.get(context), - DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context), - Build.PRODUCT)) { + if (shouldShowAnswerHint(context, Build.PRODUCT)) { return new DotAnswerHint(context, puckUpDuration, puckUpDelay); } @@ -84,24 +79,23 @@ public class AnswerHintFactory { } @VisibleForTesting - static boolean shouldShowAnswerHint( - Context context, - ConfigProvider configProvider, - SharedPreferences sharedPreferences, - String device) { + static boolean shouldShowAnswerHint(Context context, String device) { if (AccessibilityUtil.isTouchExplorationEnabled(context)) { return false; } // Devices that has the legacy dialer installed are whitelisted as they are likely to go through // a UX change during updates. - if (!isDeviceWhitelisted(device, configProvider)) { + if (!isDeviceWhitelisted(context, device)) { return false; } // If the user has gone through the process a few times we can assume they have learnt the // method. - int answeredCount = sharedPreferences.getInt(ANSWERED_COUNT_PREFERENCE_KEY, 0); - long threshold = configProvider.getLong(CONFIG_ANSWER_HINT_ANSWERED_THRESHOLD_KEY, 3); + int answeredCount = + DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context) + .getInt(ANSWERED_COUNT_PREFERENCE_KEY, 0); + long threshold = + ConfigProviderBindings.get(context).getLong(CONFIG_ANSWER_HINT_ANSWERED_THRESHOLD_KEY, 3); LogUtil.i( "AnswerHintFactory.shouldShowAnswerHint", "answerCount: %d, threshold: %d", @@ -115,8 +109,8 @@ public class AnswerHintFactory { * @param configProvider should provide a list of devices quoted with '/' concatenated to a * string. */ - private static boolean isDeviceWhitelisted(String device, ConfigProvider configProvider) { - return configProvider + private static boolean isDeviceWhitelisted(Context context, String device) { + return ConfigProviderBindings.get(context) .getString(CONFIG_ANSWER_HINT_WHITELISTED_DEVICES_KEY, DEFAULT_WHITELISTED_DEVICES_CSV) .contains("/" + device + "/"); } diff --git a/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java b/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java index 21154cadeb..05358d8315 100644 --- a/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java +++ b/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java @@ -24,7 +24,9 @@ import android.os.Build.VERSION_CODES; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.android.dialer.common.Assert; +import com.android.dialer.common.LogUtil; import com.android.dialer.util.DialerUtils; +import com.android.incallui.answer.impl.hint.PawSecretCodeListener.PawType; /** Decrypt the event payload to be shown if in a specific time range and the key is received. */ @TargetApi(VERSION_CODES.M) @@ -40,10 +42,25 @@ public final class PawImageLoaderImpl implements PawImageLoader { if (!preferences.getBoolean(PawSecretCodeListener.PAW_ENABLED_WITH_SECRET_CODE_KEY, false)) { return null; } - int drawableId = preferences.getInt(PawSecretCodeListener.PAW_DRAWABLE_ID_KEY, 0); - if (drawableId == 0) { - return null; + @PawType + int pawType = + preferences.getInt(PawSecretCodeListener.PAW_TYPE, PawSecretCodeListener.PAW_TYPE_INVALID); + + if (pawType == PawSecretCodeListener.PAW_TYPE_INVALID) { + LogUtil.i("PawImageLoaderImpl.loadPayload", "paw type not found, rerolling"); + PawSecretCodeListener.selectPawType(preferences); + pawType = + preferences.getInt( + PawSecretCodeListener.PAW_TYPE, PawSecretCodeListener.PAW_TYPE_INVALID); + } + + switch (pawType) { + case PawSecretCodeListener.PAW_TYPE_CAT: + return context.getDrawable(R.drawable.cat_paw); + case PawSecretCodeListener.PAW_TYPE_DOG: + return context.getDrawable(R.drawable.dog_paw); + default: + throw Assert.createAssertionFailException("unknown paw type " + pawType); } - return context.getDrawable(drawableId); } } diff --git a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java index a8737c3634..3b4512c4fa 100644 --- a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java +++ b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java @@ -20,7 +20,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.preference.PreferenceManager; +import android.support.annotation.IntDef; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.widget.Toast; @@ -29,6 +29,7 @@ import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; import com.android.dialer.logging.DialerImpression.Type; import com.android.dialer.logging.Logger; +import com.android.dialer.util.DialerUtils; import java.util.Random; /** @@ -40,7 +41,20 @@ public class PawSecretCodeListener extends BroadcastReceiver { static final String CONFIG_PAW_SECRET_CODE = "paw_secret_code"; public static final String PAW_ENABLED_WITH_SECRET_CODE_KEY = "paw_enabled_with_secret_code"; - public static final String PAW_DRAWABLE_ID_KEY = "paw_drawable_id"; + + /** Which paw to show, must be {@link PawType} */ + public static final String PAW_TYPE = "paw_type"; + + /** Resource id is not stable across app versions. Use {@link #PAW_TYPE} instead. */ + @Deprecated public static final String PAW_DRAWABLE_ID_KEY = "paw_drawable_id"; + + /** Enum for all paws. */ + @IntDef({PAW_TYPE_INVALID, PAW_TYPE_CAT, PAW_TYPE_DOG}) + @interface PawType {} + + public static final int PAW_TYPE_INVALID = 0; + public static final int PAW_TYPE_CAT = 1; + public static final int PAW_TYPE_DOG = 2; @Override public void onReceive(Context context, Intent intent) { @@ -54,7 +68,8 @@ public class PawSecretCodeListener extends BroadcastReceiver { if (!TextUtils.equals(secretCode, host)) { return; } - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); + SharedPreferences preferences = + DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context); boolean wasEnabled = preferences.getBoolean(PAW_ENABLED_WITH_SECRET_CODE_KEY, false); if (wasEnabled) { preferences.edit().putBoolean(PAW_ENABLED_WITH_SECRET_CODE_KEY, false).apply(); @@ -62,20 +77,24 @@ public class PawSecretCodeListener extends BroadcastReceiver { Logger.get(context).logImpression(Type.EVENT_ANSWER_HINT_DEACTIVATED); LogUtil.i("PawSecretCodeListener.onReceive", "PawAnswerHint disabled"); } else { - int drawableId; - if (new Random().nextBoolean()) { - drawableId = R.drawable.cat_paw; - } else { - drawableId = R.drawable.dog_paw; - } - preferences - .edit() - .putBoolean(PAW_ENABLED_WITH_SECRET_CODE_KEY, true) - .putInt(PAW_DRAWABLE_ID_KEY, drawableId) - .apply(); + selectPawType(preferences); Toast.makeText(context, R.string.event_activated, Toast.LENGTH_SHORT).show(); Logger.get(context).logImpression(Type.EVENT_ANSWER_HINT_ACTIVATED); LogUtil.i("PawSecretCodeListener.onReceive", "PawAnswerHint enabled"); } } + + public static void selectPawType(SharedPreferences preferences) { + @PawType int pawType; + if (new Random().nextBoolean()) { + pawType = PAW_TYPE_CAT; + } else { + pawType = PAW_TYPE_DOG; + } + preferences + .edit() + .putBoolean(PAW_ENABLED_WITH_SECRET_CODE_KEY, true) + .putInt(PAW_TYPE, pawType) + .apply(); + } } diff --git a/java/com/android/incallui/answer/impl/res/values-af/strings.xml b/java/com/android/incallui/answer/impl/res/values-af/strings.xml index 82a87963d7..b155ee8745 100644 --- a/java/com/android/incallui/answer/impl/res/values-af/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-af/strings.xml @@ -1,4 +1,20 @@ + + "Swiep vanaf ikoon om met boodskap af te wys" @@ -20,5 +36,5 @@ "Antwoord en beëindig die voortgesette oproep" "Video is af" "Swiep op met twee vingers om te antwoord. Swiep af met twee vingers om af te wys." - "Dringend" + "Belangrik" diff --git a/java/com/android/incallui/answer/impl/res/values-am/strings.xml b/java/com/android/incallui/answer/impl/res/values-am/strings.xml index 40869773ee..c27705fd2d 100644 --- a/java/com/android/incallui/answer/impl/res/values-am/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-am/strings.xml @@ -1,4 +1,20 @@ + + "በመልዕክት ላለመቀበል ከአዶ ያንሸራቱ" @@ -20,5 +36,5 @@ "ይመልሱ እና በመካሄድ ላይ ያለ ጥሪን ይጨርሱ" "ቪዲዮ ጠፍቷል" "ለመመለስ በሁለት ጣት ወደ ላይ ያንሸራቱ። ላለመቀበል በሁለት ጣት ወደ ታች ያንሸራቱ።" - "አስቸኳይ" + "አስፈላጊ" diff --git a/java/com/android/incallui/answer/impl/res/values-ar/strings.xml b/java/com/android/incallui/answer/impl/res/values-ar/strings.xml index fc29c16fae..e3f84fff5d 100644 --- a/java/com/android/incallui/answer/impl/res/values-ar/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ar/strings.xml @@ -1,4 +1,20 @@ + + "تمرير سريع من الرمز للرفض مع إرسال رسالة" @@ -20,5 +36,5 @@ "الرد وإنهاء مكالمة جارية" "الفيديو قيد إيقاف التشغيل" "مرر بأصبعين لأعلى للرد. مرر بأصبعين لأسفل للرفض." - "عاجل" + "مهم" diff --git a/java/com/android/incallui/answer/impl/res/values-az/strings.xml b/java/com/android/incallui/answer/impl/res/values-az/strings.xml index fff561de3c..5d113b48d1 100644 --- a/java/com/android/incallui/answer/impl/res/values-az/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-az/strings.xml @@ -1,4 +1,20 @@ + + "Mesaj göndərərək imtina etmək üçün ikonadan sürüşdürün" @@ -20,5 +36,5 @@ "Cavab verin və gedən zəngi bitirin" "Videoları deaktivdir" "Cavab vermək üçün iki barmaq ilə yuxarı sürüşdürün. İmtina etmək üçün iki barmaq ilə aşağı sürüşdürün." - "Vacib" + "Önəmli" diff --git a/java/com/android/incallui/answer/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/answer/impl/res/values-b+sr+Latn/strings.xml index 7b29bfa66a..3acc576d99 100644 --- a/java/com/android/incallui/answer/impl/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-b+sr+Latn/strings.xml @@ -1,4 +1,20 @@ + + "Prevucite od ikone da biste odbili porukom" @@ -20,5 +36,5 @@ "Javite se i završite poziv koji je u toku" "Kamera je isključena" "Prevucite nagore pomoću dva prsta da biste odgovorili. Prevucite nadole pomoću dva prsta da biste odbili." - "Hitno" + "Važno" diff --git a/java/com/android/incallui/answer/impl/res/values-be/strings.xml b/java/com/android/incallui/answer/impl/res/values-be/strings.xml index 228a80f7ff..4f34150e6c 100644 --- a/java/com/android/incallui/answer/impl/res/values-be/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-be/strings.xml @@ -1,4 +1,20 @@ + + "Правядзіце ад значка, каб адхіліць, адправіўшы SMS" @@ -20,5 +36,5 @@ "Адказаць і скончыць бягучы выклік" "Відэа адключана" "Правядзіце двума пальцамі ўверх, каб адказаць; двума пальцамі ўніз – каб адхіліць." - "Тэрмінова" + "Важны" diff --git a/java/com/android/incallui/answer/impl/res/values-bg/strings.xml b/java/com/android/incallui/answer/impl/res/values-bg/strings.xml index 4e9422f00c..54a5ab9467 100644 --- a/java/com/android/incallui/answer/impl/res/values-bg/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-bg/strings.xml @@ -1,4 +1,20 @@ + + "Прекарайте пръст от иконата, за да отхвърлите със съобщение" @@ -20,5 +36,5 @@ "Отговор и завършване на текущото обаждане" "Видеото е изключено" "Прекарайте два пръста нагоре за отговаряне, надолу за отхвърляне." - "Спешно" + "Важно" diff --git a/java/com/android/incallui/answer/impl/res/values-bn/strings.xml b/java/com/android/incallui/answer/impl/res/values-bn/strings.xml index 869f7b9ae6..d2aa4c3f34 100644 --- a/java/com/android/incallui/answer/impl/res/values-bn/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-bn/strings.xml @@ -1,4 +1,20 @@ + + "বার্তা সহ প্রত্যাখ্যান করতে আইকন থেকে সোয়াইপ করুন" @@ -20,5 +36,5 @@ "উত্তর দিন এবং চলছে এমন কল কেটে দিন" "ভিডিও বন্ধ আছে" "উত্তর দিতে উপরের দিকে, প্রত্যাখ্যান করতে নিচের দিকে দুই আঙুল দিয়ে সোয়াইপ করুন৷" - "জরুরি" + "গুরুত্বপূর্ণ" diff --git a/java/com/android/incallui/answer/impl/res/values-bs/strings.xml b/java/com/android/incallui/answer/impl/res/values-bs/strings.xml index b36e178f40..e175887505 100644 --- a/java/com/android/incallui/answer/impl/res/values-bs/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-bs/strings.xml @@ -1,4 +1,20 @@ + + "Prevucite preko ikone da odbijete porukom" @@ -20,5 +36,5 @@ "Odgovorite na poziv i završite ga" "Kamera je isključena" "Prevucite pomoću dva prsta prema gore da odgovorite. Prevucite pomoću dva prsta prema dolje da odbijete." - "Hitno" + "Važno" diff --git a/java/com/android/incallui/answer/impl/res/values-ca/strings.xml b/java/com/android/incallui/answer/impl/res/values-ca/strings.xml index 13b3b321a7..538e0d3e0d 100644 --- a/java/com/android/incallui/answer/impl/res/values-ca/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ca/strings.xml @@ -1,4 +1,20 @@ + + "Llisca des de la icona per rebutjar la trucada amb un missatge" @@ -20,5 +36,5 @@ "Respon a la trucada i finalitza l\'actual" "El vídeo està desactivat" "Llisca amb dos dits cap amunt per respondre a la trucada i cap avall per rebutjar-la." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-cs/strings.xml b/java/com/android/incallui/answer/impl/res/values-cs/strings.xml index 6c6903041d..626409ead5 100644 --- a/java/com/android/incallui/answer/impl/res/values-cs/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-cs/strings.xml @@ -1,4 +1,20 @@ + + "Přejetím prstem od ikony hovor odmítnete a pošlete zprávu" @@ -20,5 +36,5 @@ "Přijmout hovor a ukončit probíhající hovor" "Video je vypnuté" "Přejetím dvěma prsty nahoru hovor přijmete. Přejetím dvěma prsty dolů jej odmítnete." - "Naléhavé" + "Důležité" diff --git a/java/com/android/incallui/answer/impl/res/values-da/strings.xml b/java/com/android/incallui/answer/impl/res/values-da/strings.xml index 3a87d44fe9..3870891169 100644 --- a/java/com/android/incallui/answer/impl/res/values-da/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-da/strings.xml @@ -1,4 +1,20 @@ + + "Stryg fra ikonet for at afvise med en besked" @@ -20,5 +36,5 @@ "Besvar, og afslut det igangværende opkald" "Video er deaktiveret" "Stryg op med to fingre for at besvare. Stryg ned med to fingre for at afvise." - "Haster" + "Vigtigt" diff --git a/java/com/android/incallui/answer/impl/res/values-de/strings.xml b/java/com/android/incallui/answer/impl/res/values-de/strings.xml index f4356d29f7..ab3c33cc52 100644 --- a/java/com/android/incallui/answer/impl/res/values-de/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-de/strings.xml @@ -1,4 +1,20 @@ + + "Zum Ablehnen mit Nachricht vom Symbol wegwischen" @@ -20,5 +36,5 @@ "Nimm den Anruf an und beende den aktuellen Anruf" "Video deaktiviert" "Zum Annehmen mit zwei Fingern nach oben wischen. Zum Ablehnen mit zwei Fingern nach unten wischen." - "Dringend" + "Wichtig" diff --git a/java/com/android/incallui/answer/impl/res/values-el/strings.xml b/java/com/android/incallui/answer/impl/res/values-el/strings.xml index 9c9a0f35f8..d847aac54c 100644 --- a/java/com/android/incallui/answer/impl/res/values-el/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-el/strings.xml @@ -1,4 +1,20 @@ + + "Σύρετε από το εικονίδιο προς τα έξω για απόρριψη του μηνύματος" @@ -20,5 +36,5 @@ "Απάντηση και τερματισμός κλήσης σε εξέλιξη" "Το βίντεο είναι ανενεργό" "Σύρετε με δύο δάχτυλα, προς τα επάνω για απάντηση και προς τα κάτω για απόρριψη." - "Επείγον" + "Σημαντικό" diff --git a/java/com/android/incallui/answer/impl/res/values-en-rAU/strings.xml b/java/com/android/incallui/answer/impl/res/values-en-rAU/strings.xml index fb8d156822..fe6aa46074 100644 --- a/java/com/android/incallui/answer/impl/res/values-en-rAU/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-en-rAU/strings.xml @@ -1,4 +1,20 @@ + + "Swipe from icon to decline with a message" @@ -20,5 +36,5 @@ "Answer and end ongoing call" "Video is off" "Swipe up with two fingers to answer. Swipe down with two fingers to decline." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-en-rGB/strings.xml b/java/com/android/incallui/answer/impl/res/values-en-rGB/strings.xml index fb8d156822..fe6aa46074 100644 --- a/java/com/android/incallui/answer/impl/res/values-en-rGB/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-en-rGB/strings.xml @@ -1,4 +1,20 @@ + + "Swipe from icon to decline with a message" @@ -20,5 +36,5 @@ "Answer and end ongoing call" "Video is off" "Swipe up with two fingers to answer. Swipe down with two fingers to decline." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-en-rIN/strings.xml b/java/com/android/incallui/answer/impl/res/values-en-rIN/strings.xml index fb8d156822..fe6aa46074 100644 --- a/java/com/android/incallui/answer/impl/res/values-en-rIN/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-en-rIN/strings.xml @@ -1,4 +1,20 @@ + + "Swipe from icon to decline with a message" @@ -20,5 +36,5 @@ "Answer and end ongoing call" "Video is off" "Swipe up with two fingers to answer. Swipe down with two fingers to decline." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-es-rUS/strings.xml b/java/com/android/incallui/answer/impl/res/values-es-rUS/strings.xml index 14928eeb69..60fcd014ed 100644 --- a/java/com/android/incallui/answer/impl/res/values-es-rUS/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-es-rUS/strings.xml @@ -1,4 +1,20 @@ + + "Desliza desde el ícono para rechazar la llamada con un mensaje" @@ -20,5 +36,5 @@ "Responder y finalizar la llamada en curso" "El video está desactivado" "Desliza dos dedos hacia arriba para responder la llamada o hacia abajo para rechazarla." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-es/strings.xml b/java/com/android/incallui/answer/impl/res/values-es/strings.xml index 972bbc503f..7b2f19a812 100644 --- a/java/com/android/incallui/answer/impl/res/values-es/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-es/strings.xml @@ -1,4 +1,20 @@ + + "Desliza desde el icono para rechazar con mensaje" @@ -20,5 +36,5 @@ "Responder a una llamada y finalizar otra en curso" "El vídeo está desconectado" "Desliza dos dedos hacia arriba para responder o hacia abajo para rechazar la llamada." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-et/strings.xml b/java/com/android/incallui/answer/impl/res/values-et/strings.xml index 9e303bb164..b4632d1844 100644 --- a/java/com/android/incallui/answer/impl/res/values-et/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-et/strings.xml @@ -1,4 +1,20 @@ + + "Sõnumiga keeldumiseks pühkige ikoonilt eemale" @@ -20,5 +36,5 @@ "Vastake ja lõpetage käimasolev kõne" "Video on välja lülitatud" "Vastamiseks pühkige kahe sõrmega üles. Keeldumiseks pühkige kahe sõrmega alla." - "Kiireloomuline" + "Tähtis" diff --git a/java/com/android/incallui/answer/impl/res/values-eu/strings.xml b/java/com/android/incallui/answer/impl/res/values-eu/strings.xml index a1f6d717d7..118a2c74d3 100644 --- a/java/com/android/incallui/answer/impl/res/values-eu/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-eu/strings.xml @@ -1,4 +1,20 @@ + + "Pasatu hatza ikonotik baztertzeko eta mezu bat bidaltzeko" @@ -20,5 +36,5 @@ "Erantzun eta amaitu uneko deia" "Desaktibatuta dago kamera" "Pasatu bi hatz gora erantzuteko; eta behera, baztertzeko." - "Premiazkoa" + "Garrantzitsua" diff --git a/java/com/android/incallui/answer/impl/res/values-fa/strings.xml b/java/com/android/incallui/answer/impl/res/values-fa/strings.xml index 28cf826197..971b172ef6 100644 --- a/java/com/android/incallui/answer/impl/res/values-fa/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-fa/strings.xml @@ -1,4 +1,20 @@ + + "برای رد کردن با ارسال پیام، انگشتتان را تند از روی نماد بکشید" @@ -20,5 +36,5 @@ "پاسخ دادن به تماس درحال انجام و پایان دادن به آن" "ویدیو خاموش است" "برای پاسخ‌گویی، دو انگشتتان را تند به بالا بکشید و برای رد کردن به پایین بکشید." - "فوری" + "مهم" diff --git a/java/com/android/incallui/answer/impl/res/values-fi/strings.xml b/java/com/android/incallui/answer/impl/res/values-fi/strings.xml index 8b8eac942f..7ae9a1f875 100644 --- a/java/com/android/incallui/answer/impl/res/values-fi/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-fi/strings.xml @@ -1,4 +1,20 @@ + + "Hylkää ja kirjoita viesti pyyhkäisemällä kuvaketta." @@ -20,5 +36,5 @@ "Vastaa puheluun ja lopeta nykyinen puhelu" "Videokuva ei ole käytössä." "Vastaa pyyhkäisemällä ylös kahdella sormella. Hylkää pyyhkäisemällä alas kahdella sormella." - "Kiireellinen" + "Tärkeä" diff --git a/java/com/android/incallui/answer/impl/res/values-fr-rCA/strings.xml b/java/com/android/incallui/answer/impl/res/values-fr-rCA/strings.xml index 9ea27b89cd..ce454b5ce0 100644 --- a/java/com/android/incallui/answer/impl/res/values-fr-rCA/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-fr-rCA/strings.xml @@ -1,4 +1,20 @@ + + "Balayez à partir de l\'icône pour refuser avec un message" @@ -20,5 +36,5 @@ "Répondre et mettre fin à l\'appel en cours" "La vidéo est désactivée" "Balayez vers le haut avec deux doigts pour répondre. Balayez vers le bas avec deux doigts pour refuser." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-fr/strings.xml b/java/com/android/incallui/answer/impl/res/values-fr/strings.xml index 3aa3c12c92..7f77ed0c81 100644 --- a/java/com/android/incallui/answer/impl/res/values-fr/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-fr/strings.xml @@ -1,4 +1,20 @@ + + "Appuyer sur l\'icône, puis balayer l\'écran pour refuser l\'appel en envoyant un message" @@ -20,5 +36,5 @@ "Répondre ou mettre fin à l\'appel en cours" "La vidéo est désactivée." "Balayez l\'écran avec deux doigts vers le haut pour répondre, ou vers le bas pour refuser l\'appel." - "Urgent" + "Importants" diff --git a/java/com/android/incallui/answer/impl/res/values-gl/strings.xml b/java/com/android/incallui/answer/impl/res/values-gl/strings.xml index 16c0f6969c..07e0c516de 100644 --- a/java/com/android/incallui/answer/impl/res/values-gl/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-gl/strings.xml @@ -1,4 +1,20 @@ + + "Pasar o dedo desde a icona para rexeitar cunha mensaxe" @@ -20,5 +36,5 @@ "Responde á chamada entrante e finaliza a chamada en curso" "O vídeo está desactivado" "Pasa dous dedos cara arriba para responder a chamada ou cara abaixo para rexeitala." - "Urxente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-gu/strings.xml b/java/com/android/incallui/answer/impl/res/values-gu/strings.xml index 3f99c7108a..845e9def8a 100644 --- a/java/com/android/incallui/answer/impl/res/values-gu/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-gu/strings.xml @@ -1,4 +1,20 @@ + + "સંદેશ સાથે નકારવા માટે આઇકનથી સ્વાઇપ કરો" @@ -20,5 +36,5 @@ "જવાબ આપો અને ચાલુ કૉલ સમાપ્ત કરો" "વિડિઓ બંધ છે" "જવાબ આપવા માટે બે આંગળી ઉપર સ્વાઇપ કરો. નકારવા માટે બે આંગળી નીચે સ્વાઇપ કરો." - "તાત્કાલિક" + "મહત્વપૂર્ણ" diff --git a/java/com/android/incallui/answer/impl/res/values-hi/strings.xml b/java/com/android/incallui/answer/impl/res/values-hi/strings.xml index f28505f7c1..e8e3c75c42 100644 --- a/java/com/android/incallui/answer/impl/res/values-hi/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-hi/strings.xml @@ -1,4 +1,20 @@ + + "संदेश के साथ अस्वीकार करने के लिए आइकन से स्वाइप करें" @@ -20,5 +36,5 @@ "कॉल का जवाब दें और जारी कॉल समाप्त करें" "वीडियो बंद है" "जवाब देने के लिए दो अंगुलियों से ऊपर स्वाइप करें. अस्वीकार करने के लिए दो अंगुलियों से नीचे स्वाइप करें." - "बहुत ज़रूरी" + "महत्वपूर्ण" diff --git a/java/com/android/incallui/answer/impl/res/values-hr/strings.xml b/java/com/android/incallui/answer/impl/res/values-hr/strings.xml index 2807439762..ffd0c9b8cb 100644 --- a/java/com/android/incallui/answer/impl/res/values-hr/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-hr/strings.xml @@ -1,4 +1,20 @@ + + "Prijeđite prstom od ikone da biste odbili poruku" @@ -20,5 +36,5 @@ "Odgovorite na poziv i prekinite poziv u tijeku" "Videokamera je isključena" "Prijeđite dvama prstima prema gore za odgovor, a dvama prstima prema dolje za odbijanje." - "Hitno" + "Važno" diff --git a/java/com/android/incallui/answer/impl/res/values-hu/strings.xml b/java/com/android/incallui/answer/impl/res/values-hu/strings.xml index d7dacbfe0a..13ec7da173 100644 --- a/java/com/android/incallui/answer/impl/res/values-hu/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-hu/strings.xml @@ -1,4 +1,20 @@ + + "Csúsztassa el az ujját az ikonról az üzenettel való elutasításhoz" @@ -20,5 +36,5 @@ "Hívásfogadás és a folyamatban lévő hívás befejezése" "A videokép ki van kapcsolva" "Csúsztassa felfelé két ujját a hívás fogadásához. Csúsztassa lefelé két ujját a hívás elutasításához." - "Sürgős" + "Fontos" diff --git a/java/com/android/incallui/answer/impl/res/values-hy/strings.xml b/java/com/android/incallui/answer/impl/res/values-hy/strings.xml index 4492833d98..7fb7ef45f2 100644 --- a/java/com/android/incallui/answer/impl/res/values-hy/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-hy/strings.xml @@ -1,4 +1,20 @@ + + "Զանգը մերժելու և հաղորդագրություն ուղարկելու համար պատկերակից մատով մի կողմ սահեցրեք" @@ -20,5 +36,5 @@ "Պատասխանել և ավարտել ընթացիկ զանգը" "Տեսախցիկն անջատած է" "Պատասխանելու համար երկու մատով սահեցրեք վերև, մերժելու համար՝ ներքև:" - "Շտապ" + "Կարևոր" diff --git a/java/com/android/incallui/answer/impl/res/values-in/strings.xml b/java/com/android/incallui/answer/impl/res/values-in/strings.xml index a1fd19f6eb..48d71af9a6 100644 --- a/java/com/android/incallui/answer/impl/res/values-in/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-in/strings.xml @@ -1,4 +1,20 @@ + + "Gesek dari ikon untuk menolak dengan pesan" @@ -20,5 +36,5 @@ "Menjawab dan mengakhiri panggilan yang sedang berlangsung" "Video nonaktif" "Geser ke atas dengan dua jari untuk menjawab. Geser ke bawah dengan dua jari untuk menolak." - "Penting" + "Penting" diff --git a/java/com/android/incallui/answer/impl/res/values-is/strings.xml b/java/com/android/incallui/answer/impl/res/values-is/strings.xml index c4f9eb40c0..a92a411ee0 100644 --- a/java/com/android/incallui/answer/impl/res/values-is/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-is/strings.xml @@ -1,4 +1,20 @@ + + "Strjúktu frá tákninu til að hafna með skilaboðum" @@ -20,5 +36,5 @@ "Svara og ljúka yfirstandandi símtali" "Slökkt á myndavél" "Strjúktu upp með tveimur fingrum til að svara. Strjúktu niður með tveimur fingrum til að hafna." - "Áríðandi" + "Mikilvægt" diff --git a/java/com/android/incallui/answer/impl/res/values-it/strings.xml b/java/com/android/incallui/answer/impl/res/values-it/strings.xml index 70e9722124..b29bca7c86 100644 --- a/java/com/android/incallui/answer/impl/res/values-it/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-it/strings.xml @@ -1,4 +1,20 @@ + + "Fai scorrere dall\'icona per rifiutare e inviare un messaggio" @@ -20,5 +36,5 @@ "Rispondi e termina la chiamata in corso" "Il video è disattivato" "Fai scorrere con due dita verso l\'alto per rispondere e verso il basso per rifiutare." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-iw/strings.xml b/java/com/android/incallui/answer/impl/res/values-iw/strings.xml index 08c02e3895..6544e8f3cf 100644 --- a/java/com/android/incallui/answer/impl/res/values-iw/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-iw/strings.xml @@ -1,4 +1,20 @@ + + "החלק מהסמל כדי לדחות עם הודעה" @@ -20,5 +36,5 @@ "מענה וסיום שיחה" "הווידאו מושבת" "החלק עם שתי אצבעות למעלה כדי לענות או למטה כדי לדחות." - "דחופה" + "חשוב" diff --git a/java/com/android/incallui/answer/impl/res/values-ja/strings.xml b/java/com/android/incallui/answer/impl/res/values-ja/strings.xml index b7bd65bc45..83f8f094a7 100644 --- a/java/com/android/incallui/answer/impl/res/values-ja/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ja/strings.xml @@ -1,4 +1,20 @@ + + "アイコンをスワイプして着信を拒否し、メッセージを送信" @@ -20,5 +36,5 @@ "通話に応答し、進行中の通話を終了" "ビデオ: OFF" "応答するには 2 本の指で上にスワイプ、拒否するには 2 本の指で下にスワイプします。" - "緊急" + "重要" diff --git a/java/com/android/incallui/answer/impl/res/values-ka/strings.xml b/java/com/android/incallui/answer/impl/res/values-ka/strings.xml index 681306776f..4a1120c693 100644 --- a/java/com/android/incallui/answer/impl/res/values-ka/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ka/strings.xml @@ -1,4 +1,20 @@ + + "გადაუსვით ხატულადან შეტყობინებით უარყოფისთვის" @@ -20,5 +36,5 @@ "პასუხი და მიმდინარე ზარის დასრულება" "ვიდეო გამორთულია" "საპასუხოდ გადაფურცლეთ ზემოთ ორი თითით. უარყოფისთვის გადაფურცლეთ ქვემოთ ორი თითით." - "სასწრაფო" + "მნიშვნელოვანი" diff --git a/java/com/android/incallui/answer/impl/res/values-kk/strings.xml b/java/com/android/incallui/answer/impl/res/values-kk/strings.xml index 3d1863323e..69cf9497dd 100644 --- a/java/com/android/incallui/answer/impl/res/values-kk/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-kk/strings.xml @@ -1,4 +1,20 @@ + + "Қабылдамай, жай хабар жіберу үшін, белгішеден әрі қарай сырғытыңыз" @@ -20,5 +36,5 @@ "Қоңырауға жауап беру және ағымдағы қоңырауды аяқтау" "Бейне өшірулі" "Жауап беру үшін екі саусақпен жоғары сырғытылады. Қабылдамау үшін екі саусақпен төмен сырғытылады." - "Шұғыл" + "Маңызды" diff --git a/java/com/android/incallui/answer/impl/res/values-km/strings.xml b/java/com/android/incallui/answer/impl/res/values-km/strings.xml index 89f9031e97..db65a97f52 100644 --- a/java/com/android/incallui/answer/impl/res/values-km/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-km/strings.xml @@ -1,4 +1,20 @@ + + "អូស​ចេញ​ពី​រូបតំណាង​ដើម្បី​បដិសេធ​​ដោយ​មាន​សារ" @@ -20,5 +36,5 @@ "ឆ្លើយ និង​បញ្ចប់​ការ​ហៅ​ទូរសព្ទ​ដែល​កំពុង​ដំណើរការ" "វីដេអូត្រូវបានបិទ" "អូស​ម្រាម​ដៃ​ពីរ​ឡើងលើ​ ដើម្បី​ឆ្លើយ។ អូស​ម្រាមដៃ​ពីរ​ចុះ​ក្រោម​ ដើម្បី​បដិសេធ។" - "បន្ទាន់" + "សំខាន់" diff --git a/java/com/android/incallui/answer/impl/res/values-kn/strings.xml b/java/com/android/incallui/answer/impl/res/values-kn/strings.xml index f02a6b8a34..8426aef467 100644 --- a/java/com/android/incallui/answer/impl/res/values-kn/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-kn/strings.xml @@ -1,4 +1,20 @@ + + "ಸಂದೇಶದ ಜೊತೆಗೆ ನಿರಾಕರಿಸಲು ಐಕಾನ್‌ನಿಂದ ಸ್ವೈಪ್ ಮಾಡಿ" @@ -20,5 +36,5 @@ "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆಗೆ ಉತ್ತರಿಸಿ ಮತ್ತು ಅಂತ್ಯಗೊಳಿಸಿ" "ವೀಡಿಯೊ ಆಫ್ ಆಗಿದೆ" "ಉತ್ತರಿಸಲು ಎರಡು ಬೆರಳಿನಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ. ನಿರಾಕರಿಸಲು ಎರಡು ಬೆರಳಿನಿಂದ ಕೆಳಗೆ ಸ್ವೈಪ್ ಮಾಡಿ." - "ತುರ್ತು" + "ಪ್ರಮುಖ" diff --git a/java/com/android/incallui/answer/impl/res/values-ko/strings.xml b/java/com/android/incallui/answer/impl/res/values-ko/strings.xml index 850b440076..6b6beff858 100644 --- a/java/com/android/incallui/answer/impl/res/values-ko/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ko/strings.xml @@ -1,4 +1,20 @@ + + "메시지를 거부하려면 아이콘에서 스와이프하세요." @@ -20,5 +36,5 @@ "현재 통화를 종료하고 전화 받기" "동영상이 꺼져 있습니다." "받으려면 두 손가락을 위로 스와이프하고 거부하려면 두 손가락을 아래로 스와이프하세요." - "긴급" + "중요" diff --git a/java/com/android/incallui/answer/impl/res/values-ky/strings.xml b/java/com/android/incallui/answer/impl/res/values-ky/strings.xml index dc08e8449b..6dd5a2dd75 100644 --- a/java/com/android/incallui/answer/impl/res/values-ky/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ky/strings.xml @@ -1,4 +1,20 @@ + + "Чалууну билдирүү менен четке кагуу үчүн сүрөтчөнү сүрүңүз" @@ -20,5 +36,5 @@ "Чалууга жооп бериңиз же учурдагы чалууну аяктаңыз" "Видео өчүк" "Жооп берүү үчүн экранды өйдө сүрүп, четке кагуу үчүн ылдый сүрүп коюңуз." - "Шашылыш" + "Маанилүү" diff --git a/java/com/android/incallui/answer/impl/res/values-lo/strings.xml b/java/com/android/incallui/answer/impl/res/values-lo/strings.xml index 06ad00c884..776c027b52 100644 --- a/java/com/android/incallui/answer/impl/res/values-lo/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-lo/strings.xml @@ -1,4 +1,20 @@ + + "ປັດຈາກໄອຄອນເພື່ອປະຕິເສດຂໍ້ຄວາມ" @@ -20,5 +36,5 @@ "ຮັບສາຍ ແລະ ວາງສາຍທີ່ກຳລັງໂທອອກ" "ວິດີໂອປິດຢູ່" "ປັດສອງນິ້ວຂຶ້ນເພື່ອຮັບສາຍ. ປັດສອງນິ້ວລົງເພື່ອປະຕິເສດ." - "ດ່ວນ" + "ສຳຄັນ" diff --git a/java/com/android/incallui/answer/impl/res/values-lt/strings.xml b/java/com/android/incallui/answer/impl/res/values-lt/strings.xml index 3366e337b5..2ef70eaff0 100644 --- a/java/com/android/incallui/answer/impl/res/values-lt/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-lt/strings.xml @@ -1,4 +1,20 @@ + + "Perbraukite iš piktogramos, kad atmestumėte išsiųsdami pranešimą" @@ -20,5 +36,5 @@ "Atsakykite ir užbaikite vykstantį skambutį" "Vaizdas išjungtas" "Perbraukite dviem pirštais aukštyn, kad atsakytumėte. Perbraukite dviem pirštais žemyn, kad atmestumėte." - "Skubus" + "Svarbu" diff --git a/java/com/android/incallui/answer/impl/res/values-lv/strings.xml b/java/com/android/incallui/answer/impl/res/values-lv/strings.xml index 49d1dc9f46..3fc754db4c 100644 --- a/java/com/android/incallui/answer/impl/res/values-lv/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-lv/strings.xml @@ -1,4 +1,20 @@ + + "Lai noraidītu, izmantojot ziņojumu, velciet no ikonas" @@ -20,5 +36,5 @@ "Atbildiet un beidziet notiekošo zvanu" "Video ir izslēgts" "Ar diviem pirkstiem velciet augšup, lai atbildētu. Ar diviem pirkstiem velciet lejup, lai noraidītu." - "Steidzams" + "Svarīgs" diff --git a/java/com/android/incallui/answer/impl/res/values-mk/strings.xml b/java/com/android/incallui/answer/impl/res/values-mk/strings.xml index c068f665b9..deeba45e60 100644 --- a/java/com/android/incallui/answer/impl/res/values-mk/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-mk/strings.xml @@ -1,4 +1,20 @@ + + "Повлечете од иконата за да одбиете со порака" @@ -20,5 +36,5 @@ "Одговорете и завршете го тековниот повик" "Видеото е исклучено" "Повлечете нагоре со два прста за да одговорите. Повлечете надолу со два прста за да одбиете." - "Итно" + "Важно" diff --git a/java/com/android/incallui/answer/impl/res/values-ml/strings.xml b/java/com/android/incallui/answer/impl/res/values-ml/strings.xml index 8e1d492e7d..d8ce90dab0 100644 --- a/java/com/android/incallui/answer/impl/res/values-ml/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ml/strings.xml @@ -1,4 +1,20 @@ + + "സന്ദേശമയച്ചുകൊണ്ട് നിരസിക്കാൻ ഐക്കണിൽ നിന്ന് സ്വൈപ്പുചെയ്യുക" @@ -20,5 +36,5 @@ "മറുപടി നൽകുകയും നിലവിലുള്ള കോൾ അവസാനിപ്പിക്കുകയും ചെയ്യൂ" "വീഡിയോ ഓഫാണ്" "മറുപടി നൽകാൻ രണ്ടുവിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പുചെയ്യുക. നിരസിക്കാൻ രണ്ടുവിരലുകൾ ഉപയോഗിച്ച് താഴേക്ക് സ്വൈപ്പുചെയ്യുക." - "അടിയന്തിര പ്രാധാന്യം" + "പ്രധാനപ്പെട്ടവ" diff --git a/java/com/android/incallui/answer/impl/res/values-mn/strings.xml b/java/com/android/incallui/answer/impl/res/values-mn/strings.xml index 4bdd912adc..aaa16213a5 100644 --- a/java/com/android/incallui/answer/impl/res/values-mn/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-mn/strings.xml @@ -1,4 +1,20 @@ + + "Зурвас явуулангаа татгалзах бол дүрснээс шударна уу" @@ -20,5 +36,5 @@ "Ирсэн дуудлагыг авч, одоогийн дуудлагыг таслах" "Видео идэвхгүй байна" "Хариулах бол хоёр хуруугаар дээш шударна уу. Таслах бол хоёр хуруугаар доош шударна уу." - "Яаралтай" + "Чухал" diff --git a/java/com/android/incallui/answer/impl/res/values-mr/strings.xml b/java/com/android/incallui/answer/impl/res/values-mr/strings.xml index 11c826896b..eea662fa11 100644 --- a/java/com/android/incallui/answer/impl/res/values-mr/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-mr/strings.xml @@ -1,4 +1,20 @@ + + "संदेशासह नाकारण्यासाठी आयकॉनपासून स्वाइप करा" @@ -20,5 +36,5 @@ "उत्तर द्या आणि सुरु असलेला कॉल बंद करा" "व्हिडिओ बंद आहे" "उत्तर देण्यासाठी दोन बोटांनी वर स्वाइप करा. नकार देण्यासाठी दोन बोटांनी खाली स्वाइप करा." - "त्वरित" + "महत्त्वाचे" diff --git a/java/com/android/incallui/answer/impl/res/values-ms/strings.xml b/java/com/android/incallui/answer/impl/res/values-ms/strings.xml index 36ede75680..04b054e4ef 100644 --- a/java/com/android/incallui/answer/impl/res/values-ms/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ms/strings.xml @@ -1,4 +1,20 @@ + + "Leret dari ikon untuk menolak dengan mesej" @@ -20,5 +36,5 @@ "Jawab dan tamatkan panggilan yang sedang berlangsung" "Video dimatikan" "Leret dua jari ke atas untuk menjawab. Leret dua jari ke bawah untuk menolak." - "Segera" + "Penting" diff --git a/java/com/android/incallui/answer/impl/res/values-my/strings.xml b/java/com/android/incallui/answer/impl/res/values-my/strings.xml index 5ad7a8284b..f3d6a2e381 100644 --- a/java/com/android/incallui/answer/impl/res/values-my/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-my/strings.xml @@ -1,4 +1,20 @@ + + "မက်ဆေ့ဂျ်ဖြင့်ငြင်းပယ်ရန် သင်္ကေတမှ ပွတ်ဆွဲပါ" @@ -20,5 +36,5 @@ "ဖြေကြားပြီး လက်ရှိခေါ်ဆိုမှုကို အပြီးသတ်ပါ" "ဗီဒီယို ပိတ်ထားပါသည်" "ဖြေကြားရန် လက်နှစ်ချောင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပါ။ ငြင်းပယ်ရန် လက်နှစ်ချောင်းဖြင့် အောက်သို့ ပွတ်ဆွဲပါ။" - "အရေးတကြီး" + "အရေးကြီး" diff --git a/java/com/android/incallui/answer/impl/res/values-nb/strings.xml b/java/com/android/incallui/answer/impl/res/values-nb/strings.xml index b1c32bea44..42ff3d0af6 100644 --- a/java/com/android/incallui/answer/impl/res/values-nb/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-nb/strings.xml @@ -1,4 +1,20 @@ + + "Sveip fra ikonet for å avslå med en melding" @@ -20,5 +36,5 @@ "Svar, og avslutt samtalen som er i gang" "Video er av" "Sveip oppover med to fingre for å svare. Sveip nedover med to fingre for å avvise." - "Haster" + "Viktig" diff --git a/java/com/android/incallui/answer/impl/res/values-ne/strings.xml b/java/com/android/incallui/answer/impl/res/values-ne/strings.xml index 40ef7b6e31..f0b8641af8 100644 --- a/java/com/android/incallui/answer/impl/res/values-ne/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ne/strings.xml @@ -1,4 +1,20 @@ + + "सन्देश सहित अस्वीकार गर्न आइकनबाट स्वाइप गर्नुहोस्" @@ -20,5 +36,5 @@ "जवाफ फर्काउनुहोस् र जारी कललाई अन्त्य गर्नुहोस्" "भिडियो निष्क्रिय छ" "जवाफ दिन दुई औंलाले माथितिर स्वाइप गर्नुहोस्। अस्वीकार गर्न दुई औंलाले तलतिर स्वाइप गर्नुहोस्।" - "जरुरी" + "महत्त्वपूर्ण" diff --git a/java/com/android/incallui/answer/impl/res/values-nl/strings.xml b/java/com/android/incallui/answer/impl/res/values-nl/strings.xml index b2f619fa33..89c956a9f8 100644 --- a/java/com/android/incallui/answer/impl/res/values-nl/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-nl/strings.xml @@ -1,4 +1,20 @@ + + "Veeg vanaf pictogram om te weigeren met bericht" @@ -20,5 +36,5 @@ "Opnemen en actieve oproep beëindigen" "Video is uit" "Veeg met twee vingers omhoog om te beantwoorden. Veeg met twee vingers omlaag om te weigeren." - "Urgent" + "Belangrijk" diff --git a/java/com/android/incallui/answer/impl/res/values-no/strings.xml b/java/com/android/incallui/answer/impl/res/values-no/strings.xml index b1c32bea44..42ff3d0af6 100644 --- a/java/com/android/incallui/answer/impl/res/values-no/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-no/strings.xml @@ -1,4 +1,20 @@ + + "Sveip fra ikonet for å avslå med en melding" @@ -20,5 +36,5 @@ "Svar, og avslutt samtalen som er i gang" "Video er av" "Sveip oppover med to fingre for å svare. Sveip nedover med to fingre for å avvise." - "Haster" + "Viktig" diff --git a/java/com/android/incallui/answer/impl/res/values-pa/strings.xml b/java/com/android/incallui/answer/impl/res/values-pa/strings.xml index d2b14523cd..3772f291f5 100644 --- a/java/com/android/incallui/answer/impl/res/values-pa/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-pa/strings.xml @@ -1,4 +1,20 @@ + + "ਸੁਨੇਹੇ ਦੇ ਨਾਲ ਅਸਵੀਕਾਰ ਕਰਨ ਲਈ ਚਿੰਨ੍ਹ ਤੋਂ ਸਵਾਈਪ ਕਰੋ" @@ -20,5 +36,5 @@ "ਜਵਾਬ ਦਿਓ ਅਤੇ ਜਾਰੀ ਕਾਲ ਨੂੰ ਸਮਾਪਤ ਕਰੋ" "ਵੀਡੀਓ ਬੰਦ ਹੈ" "ਜਵਾਬ ਦੇਣ ਲਈ ਦੋ ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ। ਅਸਵੀਕਾਰ ਕਰਨ ਲਈ ਦੋ ਉਂਗਲਾਂ ਨਾਲ ਹੇਠਾਂ ਵੱਲ ਸਵਾਈਪ ਕਰੋ।" - "ਜ਼ਰੂਰੀ" + "ਮਹੱਤਵਪੂਰਨ" diff --git a/java/com/android/incallui/answer/impl/res/values-pl/strings.xml b/java/com/android/incallui/answer/impl/res/values-pl/strings.xml index b0c44e72a1..f6e1f1ba4f 100644 --- a/java/com/android/incallui/answer/impl/res/values-pl/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-pl/strings.xml @@ -1,4 +1,20 @@ + + "Przesuń palcem od ikony, aby odrzucić połączenie i wysłać wiadomość" @@ -20,5 +36,5 @@ "Odbierz połączenie i zakończ trwającą rozmowę" "Wideo jest wyłączone" "Przesuń dwoma palcami w górę, aby odebrać. Przesuń dwoma palcami w dół, aby odrzucić." - "Pilne" + "Ważne" diff --git a/java/com/android/incallui/answer/impl/res/values-pt-rBR/strings.xml b/java/com/android/incallui/answer/impl/res/values-pt-rBR/strings.xml index fe1c89de41..1ed245140d 100644 --- a/java/com/android/incallui/answer/impl/res/values-pt-rBR/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-pt-rBR/strings.xml @@ -1,4 +1,20 @@ + + "Deslize a partir do ícone para recusar com uma mensagem" @@ -20,5 +36,5 @@ "Atender e encerrar a chamada em andamento" "O vídeo está desativado" "Deslize com dois dedos para cima para atender. Deslize com dois dedos para baixo para recusar." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-pt-rPT/strings.xml b/java/com/android/incallui/answer/impl/res/values-pt-rPT/strings.xml index 1a23a4a9d2..f1e17a1d9a 100644 --- a/java/com/android/incallui/answer/impl/res/values-pt-rPT/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-pt-rPT/strings.xml @@ -1,4 +1,20 @@ + + "Deslize rapidamente a partir do ícone para recusar com uma mensagem" @@ -20,5 +36,5 @@ "Atender e terminar uma chamada em curso" "O vídeo está desativado" "Deslize rapidamente com dois dedos para cima para responder. Deslize rapidamente com dois dedos para baixo para recusar." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-pt/strings.xml b/java/com/android/incallui/answer/impl/res/values-pt/strings.xml index fe1c89de41..1ed245140d 100644 --- a/java/com/android/incallui/answer/impl/res/values-pt/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-pt/strings.xml @@ -1,4 +1,20 @@ + + "Deslize a partir do ícone para recusar com uma mensagem" @@ -20,5 +36,5 @@ "Atender e encerrar a chamada em andamento" "O vídeo está desativado" "Deslize com dois dedos para cima para atender. Deslize com dois dedos para baixo para recusar." - "Urgente" + "Importante" diff --git a/java/com/android/incallui/answer/impl/res/values-ro/strings.xml b/java/com/android/incallui/answer/impl/res/values-ro/strings.xml index 6c8bafa286..0b1f4f4813 100644 --- a/java/com/android/incallui/answer/impl/res/values-ro/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ro/strings.xml @@ -1,4 +1,20 @@ + + "Glisați de pe pictogramă pentru a respinge cu un mesaj" @@ -20,5 +36,5 @@ "Răspundeți și încheiați apelul în curs" "Camera video este dezactivată." "Glisați cu două degete în sus pentru a răspunde și în jos pentru a respinge." - "Urgent" + "Important" diff --git a/java/com/android/incallui/answer/impl/res/values-ru/strings.xml b/java/com/android/incallui/answer/impl/res/values-ru/strings.xml index 67ff06a347..d1fdcf73e9 100644 --- a/java/com/android/incallui/answer/impl/res/values-ru/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ru/strings.xml @@ -1,4 +1,20 @@ + + "Чтобы отклонить вызов и отправить SMS, проведите пальцем от значка" @@ -20,5 +36,5 @@ "Ответить и завершить текущий вызов" "Камера выключена" "Проведите двумя пальцами по экрану вверх, чтобы ответить, или вниз, чтобы отклонить вызов." - "Срочно" + "Важный звонок" diff --git a/java/com/android/incallui/answer/impl/res/values-si/strings.xml b/java/com/android/incallui/answer/impl/res/values-si/strings.xml index ae3c080089..99f4989aa2 100644 --- a/java/com/android/incallui/answer/impl/res/values-si/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-si/strings.xml @@ -1,4 +1,20 @@ + + "පණිවිඩය සහිතව ප්‍රතික්ෂේප කිරීමට නිරූපකයේ සිට ස්වයිප් කරන්න" @@ -20,5 +36,5 @@ "යන අැමතුමට පිළිතරු දී අවසන් කරන්න" "වීඩියෝව ක්‍රියාවිරහිතයි" "පිළිතුරු දීමට ඇඟිලි දෙකකින් ඉහළට ස්වයිප් කරන්න, ප්‍රතික්ෂේප කිරීමට ඇඟිලි දෙකකින් පහළට ස්වයිප් කරන්න." - "හදිසි" + "වැදගත්" diff --git a/java/com/android/incallui/answer/impl/res/values-sk/strings.xml b/java/com/android/incallui/answer/impl/res/values-sk/strings.xml index 179be7b08c..fa00ac4c6e 100644 --- a/java/com/android/incallui/answer/impl/res/values-sk/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sk/strings.xml @@ -1,4 +1,20 @@ + + "Prejdením prstom od ikony odmietnuť so správou" @@ -20,5 +36,5 @@ "Prijať hovor a ukončiť prebiehajúci hovor" "Video je vypnuté" "Ak chcete hovor prijať, prejdite dvomi prstami nahor. Ak ho chcete odmietnuť, prejdite dvomi prstami nadol." - "Naliehavé" + "Dôležité" diff --git a/java/com/android/incallui/answer/impl/res/values-sl/strings.xml b/java/com/android/incallui/answer/impl/res/values-sl/strings.xml index 5f658be9d9..147a098356 100644 --- a/java/com/android/incallui/answer/impl/res/values-sl/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sl/strings.xml @@ -1,4 +1,20 @@ + + "Povlecite z ikone, da klic zavrnete s sporočilom" @@ -20,5 +36,5 @@ "Sprejmi klic in končaj aktivni klic" "Video je izklopljen" "Z dvema prstoma povlecite navzgor, da sprejmete klic. Z dvema prstoma povlecite navzdol, da zavrnete klic." - "Nujno" + "Pomembno" diff --git a/java/com/android/incallui/answer/impl/res/values-sq/strings.xml b/java/com/android/incallui/answer/impl/res/values-sq/strings.xml index 1de60c9c9b..e71691af86 100644 --- a/java/com/android/incallui/answer/impl/res/values-sq/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sq/strings.xml @@ -1,4 +1,20 @@ + + "Rrëshqit nga ikona për të refuzuar me mesazh" @@ -20,5 +36,5 @@ "Përgjigju dhe mbyll telefonatën në vazhdim" "Videoja është joaktive" "Rrëshqit dy gishta lart për t\'u përgjigjur. Rrëshqit dy gishta poshtë për të refuzuar." - "Urgjente" + "E rëndësishme" diff --git a/java/com/android/incallui/answer/impl/res/values-sr/strings.xml b/java/com/android/incallui/answer/impl/res/values-sr/strings.xml index 4d6ef56360..c802b0e975 100644 --- a/java/com/android/incallui/answer/impl/res/values-sr/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sr/strings.xml @@ -1,4 +1,20 @@ + + "Превуците од иконе да бисте одбили поруком" @@ -20,5 +36,5 @@ "Јавите се и завршите позив који је у току" "Камера је искључена" "Превуците нагоре помоћу два прста да бисте одговорили. Превуците надоле помоћу два прста да бисте одбили." - "Хитно" + "Важно" diff --git a/java/com/android/incallui/answer/impl/res/values-sv/strings.xml b/java/com/android/incallui/answer/impl/res/values-sv/strings.xml index e47b4e0a32..2265dc4c2f 100644 --- a/java/com/android/incallui/answer/impl/res/values-sv/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sv/strings.xml @@ -1,4 +1,20 @@ + + "Svep från ikonen för att avvisa med meddelande" @@ -20,5 +36,5 @@ "Svara och avsluta pågående samtal" "Video avstängd" "Dra två fingrar uppåt för att svara och två nedåt för att avvisa." - "Brådskande" + "Viktigt" diff --git a/java/com/android/incallui/answer/impl/res/values-sw/strings.xml b/java/com/android/incallui/answer/impl/res/values-sw/strings.xml index 1e5896662e..26e1b7ab54 100644 --- a/java/com/android/incallui/answer/impl/res/values-sw/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-sw/strings.xml @@ -1,4 +1,20 @@ + + "Telezesha kidole ukianzia kwenye aikoni ili utume ujumbe wa kukataa" @@ -20,5 +36,5 @@ "Jibu na ukate simu inayoendelea" "Video imezimwa" "Telezesha juu kwa vidole viwili ili uijibu. Telezesha chini kwa vidole viwili ili uikate." - "Dharura" + "Muhimu" diff --git a/java/com/android/incallui/answer/impl/res/values-ta/strings.xml b/java/com/android/incallui/answer/impl/res/values-ta/strings.xml index 847936f5bf..453781dae9 100644 --- a/java/com/android/incallui/answer/impl/res/values-ta/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ta/strings.xml @@ -1,4 +1,20 @@ + + "செய்தியுடன் நிராகரிக்க, ஐகானிலிருந்து ஸ்வைப் செய்யவும்" @@ -20,5 +36,5 @@ "உள்வரும் அழைப்பிற்குப் பதிலளித்து, செயலில் உள்ள அழைப்பை முடிக்கும்" "வீடியோ முடக்கப்பட்டுள்ளது" "பதிலளிக்க, இரு விரல்களால் மேலே ஸ்வைப் செய்யவும். நிராகரிக்க, இரு விரல்களால் கீழே ஸ்வைப் செய்யவும்." - "அவசரம்" + "முக்கிய அழைப்பு" diff --git a/java/com/android/incallui/answer/impl/res/values-te/strings.xml b/java/com/android/incallui/answer/impl/res/values-te/strings.xml index abc3902940..e0e508768c 100644 --- a/java/com/android/incallui/answer/impl/res/values-te/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-te/strings.xml @@ -1,4 +1,20 @@ + + "సందేశంతో తిరస్కరించడానికి చిహ్నం నుండి స్వైప్ చేయండి" @@ -20,5 +36,5 @@ "సమాధానం ఇస్తుంది మరియు కొనసాగుతున్న కాల్‌ను ముగిస్తుంది" "వీడియో ఆఫ్‌లో ఉంది" "సమాధానం ఇవ్వడానికి రెండు వేళ్లతో పైకి స్వైప్ చేయండి. తిరస్కరించడానికి రెండు వేళ్లతో క్రిందికి స్వైప్ చేయండి." - "అత్యవసరం" + "ముఖ్యమైనది" diff --git a/java/com/android/incallui/answer/impl/res/values-th/strings.xml b/java/com/android/incallui/answer/impl/res/values-th/strings.xml index 54069b3d8a..695da74f7f 100644 --- a/java/com/android/incallui/answer/impl/res/values-th/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-th/strings.xml @@ -1,4 +1,20 @@ + + "เลื่อนไอคอนเพื่อปฏิเสธสายด้วยข้อความ" @@ -20,5 +36,5 @@ "รับและวางสาย" "วิดีโอปิดอยู่" "ใช้สองนิ้วเลื่อนขึ้นเพื่อรับสายและเลื่อนลงเพื่อตัดสาย" - "ด่วน" + "สำคัญ" diff --git a/java/com/android/incallui/answer/impl/res/values-tl/strings.xml b/java/com/android/incallui/answer/impl/res/values-tl/strings.xml index 8f87b56052..6128d6fad2 100644 --- a/java/com/android/incallui/answer/impl/res/values-tl/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-tl/strings.xml @@ -1,4 +1,20 @@ + + "I-swipe mula sa icon upang tanggihan gamit ang mensahe" @@ -20,5 +36,5 @@ "Sagutin at tapusin ang kasalukuyang tawag" "Naka-off ang video" "I-swipe nang pataas gamit ang dalawang daliri upang sagutin. I-swipe nang pababa gamit ang dalawang daliri upang tanggihan." - "Apurahan" + "Mahalaga" diff --git a/java/com/android/incallui/answer/impl/res/values-tr/strings.xml b/java/com/android/incallui/answer/impl/res/values-tr/strings.xml index 53f5eb9a91..87583c03d0 100644 --- a/java/com/android/incallui/answer/impl/res/values-tr/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-tr/strings.xml @@ -1,4 +1,20 @@ + + "Mesajla reddetmek için, simgeden hızlıca kaydırın" @@ -20,5 +36,5 @@ "Bir çağrı cevaplanır ve devam eden çağrı sona erdirilir" "Video kapalı" "Cevaplamak için iki parmağınızla hızlıca yukarı kaydırın. Reddetmek içinse iki parmağınızla hızlıca aşağı kaydırın." - "Acil" + "Önemli" diff --git a/java/com/android/incallui/answer/impl/res/values-uk/strings.xml b/java/com/android/incallui/answer/impl/res/values-uk/strings.xml index a0332d3778..76eb2b0a20 100644 --- a/java/com/android/incallui/answer/impl/res/values-uk/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-uk/strings.xml @@ -1,4 +1,20 @@ + + "Проведіть пальцем убік від значка, щоб відхилити з повідомленням" @@ -20,5 +36,5 @@ "Відповісти на виклик, завершивши поточний" "Відео вимкнено" "Проведіть двома пальцями вгору, щоб відповісти, або вниз, щоб відхилити дзвінок." - "Терміново" + "Важливо" diff --git a/java/com/android/incallui/answer/impl/res/values-ur/strings.xml b/java/com/android/incallui/answer/impl/res/values-ur/strings.xml index e1813cbf71..2a44e9083a 100644 --- a/java/com/android/incallui/answer/impl/res/values-ur/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-ur/strings.xml @@ -1,4 +1,20 @@ + + "پیغام کے ساتھ رد کرنے کیلئے آئیکن سے سوائپ کریں" @@ -20,5 +36,5 @@ "جواب دیں اور جاری کال ختم کریں" "ویڈیو آف ہے" "جواب دینے کیلئے دوانگلیوں کے ساتھ اوپر سوائپ کریں۔ مسترد کرنے کیلئے دو انگلیوں کے ساتھ نیچے سوائپ کریں۔" - "ارجنٹ" + "اہم" diff --git a/java/com/android/incallui/answer/impl/res/values-uz/strings.xml b/java/com/android/incallui/answer/impl/res/values-uz/strings.xml index b83abcce05..f348a499d5 100644 --- a/java/com/android/incallui/answer/impl/res/values-uz/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-uz/strings.xml @@ -1,4 +1,20 @@ + + "Qo‘ng‘iroqni SMS bilan rad etish uchun nishonchadan suring." @@ -20,5 +36,5 @@ "Kiruvchi chaqiruvga javob berish va joriy qo‘ng‘iroqni tugatish" "Kamera o‘chiq" "Chaqiruvga javob berish uchun ikki barmoq bilan tepaga, rad etish uchun ikki barmoq bilan pastga suring." - "Juda muhim" + "Muhim qo‘ng‘iroq" diff --git a/java/com/android/incallui/answer/impl/res/values-vi/strings.xml b/java/com/android/incallui/answer/impl/res/values-vi/strings.xml index 94dd1c3861..f4dfa5b1d3 100644 --- a/java/com/android/incallui/answer/impl/res/values-vi/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-vi/strings.xml @@ -1,4 +1,20 @@ + + "Vuốt từ biểu tượng để từ chối kèm thông báo" @@ -20,5 +36,5 @@ "Trả lời và kết thúc cuộc gọi đang diễn ra" "Video đã tắt" "Vuốt hai ngón tay lên để trả lời. Vuốt hai ngón tay xuống để từ chối." - "Khẩn cấp" + "Quan trọng" diff --git a/java/com/android/incallui/answer/impl/res/values-zh-rCN/strings.xml b/java/com/android/incallui/answer/impl/res/values-zh-rCN/strings.xml index fc7ce64096..9698aa06d4 100644 --- a/java/com/android/incallui/answer/impl/res/values-zh-rCN/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-zh-rCN/strings.xml @@ -1,4 +1,20 @@ + + "滑动图标即可拒接来电并发送信息" @@ -20,5 +36,5 @@ "接听并结束当前通话" "摄像头处于关闭状态" "双指向上滑动即可接听,向下滑动则可拒接。" - "紧急" + "重要" diff --git a/java/com/android/incallui/answer/impl/res/values-zh-rHK/strings.xml b/java/com/android/incallui/answer/impl/res/values-zh-rHK/strings.xml index 97955396f4..81a88151b5 100644 --- a/java/com/android/incallui/answer/impl/res/values-zh-rHK/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-zh-rHK/strings.xml @@ -1,4 +1,20 @@ + + "從圖示快速滑動即可透過訊息拒絕" @@ -20,5 +36,5 @@ "接聽及結束進行中的通話" "視像已關閉" "兩指向上滑動可接聽,向下滑動則可拒接。" - "緊急" + "重要事項" diff --git a/java/com/android/incallui/answer/impl/res/values-zh-rTW/strings.xml b/java/com/android/incallui/answer/impl/res/values-zh-rTW/strings.xml index f27e5ae5bb..8f04992d10 100644 --- a/java/com/android/incallui/answer/impl/res/values-zh-rTW/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-zh-rTW/strings.xml @@ -1,4 +1,20 @@ + + "滑動圖示即可拒接來電並傳送簡訊" @@ -20,5 +36,5 @@ "接聽來電及結束進行中的通話" "已關閉攝影機" "用雙指向上滑動可接聽,向下滑動可拒接。" - "緊急" + "重要" diff --git a/java/com/android/incallui/answer/impl/res/values-zu/strings.xml b/java/com/android/incallui/answer/impl/res/values-zu/strings.xml index 52f2400eb3..23c988eaad 100644 --- a/java/com/android/incallui/answer/impl/res/values-zu/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values-zu/strings.xml @@ -1,4 +1,20 @@ + + "Swayipha isithonjana ukuze wenqabe ngomlayezo" @@ -20,5 +36,5 @@ "Phendula uphinde uqede ikholi eqhubekayo" "Ividiyo ivaliwe" "Swayiphela iminwe emibili phezulu ukuze uphendule. Swayiphela iminwe emibili phansi ukuze wenqabe." - "Okuphuthumayo" + "Kubalulekile" diff --git a/java/com/android/incallui/answer/impl/res/values/strings.xml b/java/com/android/incallui/answer/impl/res/values/strings.xml index 2359220474..de5ee6e69a 100644 --- a/java/com/android/incallui/answer/impl/res/values/strings.xml +++ b/java/com/android/incallui/answer/impl/res/values/strings.xml @@ -1,4 +1,19 @@ + Swipe from icon to decline with message Swipe from icon to answer as an audio call @@ -26,5 +41,5 @@ Two finger swipe up to answer. Two finger swipe down to decline. - Urgent + Important diff --git a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java index 9815981ca3..10a3413af4 100644 --- a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java +++ b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java @@ -32,6 +32,10 @@ public interface AnswerScreenDelegate { void onReject(); void onAnswerAndReleaseCall(); + + void onAnswerAndReleaseButtonEnabled(); + + void onAnswerAndReleaseButtonDisabled(); /** * Sets the window background color based on foreground call's theme and the given progress. This * is called from the answer UI to animate the accept and reject action. diff --git a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java index 24fbfc4286..fe4ae9f961 100644 --- a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java +++ b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java @@ -142,6 +142,9 @@ public class AnswerProximitySensor @Override public void onInternationalCallOnWifi() {} + @Override + public void onEnrichedCallSessionUpdate() {} + @Override public void onDialerCallSessionModificationStateChange() {} diff --git a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java index c757477f1a..c7a9d63325 100644 --- a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java +++ b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java @@ -18,6 +18,7 @@ package com.android.incallui.audioroute; import android.app.Dialog; import android.content.Context; +import android.content.DialogInterface; import android.content.res.ColorStateList; import android.graphics.PorterDuff.Mode; import android.os.Bundle; @@ -41,6 +42,8 @@ public class AudioRouteSelectorDialogFragment extends BottomSheetDialogFragment /** Called when an audio route is picked */ public interface AudioRouteSelectorPresenter { void onAudioRouteSelected(int audioRoute); + + void onAudioRouteSelectorDismiss(); } public static AudioRouteSelectorDialogFragment newInstance(CallAudioState audioState) { @@ -91,6 +94,14 @@ public class AudioRouteSelectorDialogFragment extends BottomSheetDialogFragment return view; } + @Override + public void onDismiss(DialogInterface dialogInterface) { + super.onDismiss(dialogInterface); + FragmentUtils.getParentUnsafe( + AudioRouteSelectorDialogFragment.this, AudioRouteSelectorPresenter.class) + .onAudioRouteSelectorDismiss(); + } + private void initItem(TextView item, final int itemRoute, CallAudioState audioState) { int selectedColor = getResources().getColor(R.color.dialer_theme_color); if ((audioState.getSupportedRouteMask() & itemRoute) == 0) { diff --git a/java/com/android/incallui/bindings/InCallUiBindings.java b/java/com/android/incallui/bindings/InCallUiBindings.java index d3d3a8b374..5c6aef4bea 100644 --- a/java/com/android/incallui/bindings/InCallUiBindings.java +++ b/java/com/android/incallui/bindings/InCallUiBindings.java @@ -19,7 +19,6 @@ package com.android.incallui.bindings; import android.content.Context; import android.content.Intent; import android.support.annotation.Nullable; -import com.android.dialer.common.ConfigProvider; /** This interface allows the container application to customize the in call UI. */ public interface InCallUiBindings { @@ -37,12 +36,4 @@ public interface InCallUiBindings { */ @Nullable Intent getCallStateButtonBroadcastIntent(Context context); - - @Nullable - DistanceHelper newDistanceHelper(Context context, DistanceHelper.Listener listener); - - @Nullable - ContactUtils getContactUtilsInstance(Context context); - - ConfigProvider getConfigProvider(); } diff --git a/java/com/android/incallui/bindings/InCallUiBindingsStub.java b/java/com/android/incallui/bindings/InCallUiBindingsStub.java index 7b42fb375f..3a005b0fb5 100644 --- a/java/com/android/incallui/bindings/InCallUiBindingsStub.java +++ b/java/com/android/incallui/bindings/InCallUiBindingsStub.java @@ -19,11 +19,9 @@ package com.android.incallui.bindings; import android.content.Context; import android.content.Intent; import android.support.annotation.Nullable; -import com.android.dialer.common.ConfigProvider; /** Default implementation for InCallUi bindings. */ public class InCallUiBindingsStub implements InCallUiBindings { - private ConfigProvider configProvider; @Override @Nullable @@ -42,40 +40,4 @@ public class InCallUiBindingsStub implements InCallUiBindings { public Intent getCallStateButtonBroadcastIntent(Context context) { return null; } - - @Override - @Nullable - public DistanceHelper newDistanceHelper(Context context, DistanceHelper.Listener listener) { - return null; - } - - @Override - @Nullable - public ContactUtils getContactUtilsInstance(Context context) { - return null; - } - - @Override - public ConfigProvider getConfigProvider() { - if (configProvider == null) { - configProvider = - new ConfigProvider() { - @Override - public String getString(String key, String defaultValue) { - return defaultValue; - } - - @Override - public long getLong(String key, long defaultValue) { - return defaultValue; - } - - @Override - public boolean getBoolean(String key, boolean defaultValue) { - return defaultValue; - } - }; - } - return configProvider; - } } diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java index 34f0cc0d70..3876ca64d1 100644 --- a/java/com/android/incallui/call/CallList.java +++ b/java/com/android/incallui/call/CallList.java @@ -32,6 +32,8 @@ import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler; import com.android.dialer.blocking.FilteredNumbersUtil; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; +import com.android.dialer.enrichedcall.EnrichedCallComponent; +import com.android.dialer.enrichedcall.EnrichedCallManager; import com.android.dialer.location.GeoUtil; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; @@ -117,6 +119,10 @@ public class CallList implements DialerCallDelegate { new DialerCall(context, this, telecomCall, latencyReport, true /* registerCallback */); logSecondIncomingCall(context, call); + EnrichedCallManager manager = EnrichedCallComponent.get(context).getEnrichedCallManager(); + manager.registerCapabilitiesListener(call); + manager.registerStateChangedListener(call); + final DialerCallListenerImpl dialerCallListener = new DialerCallListenerImpl(call); call.addListener(dialerCallListener); LogUtil.d("CallList.onCallAdded", "callState=" + call.getState()); @@ -278,6 +284,10 @@ public class CallList implements DialerCallDelegate { DialerCall call = mCallByTelecomCall.get(telecomCall); Assert.checkArgument(!call.isExternalCall()); + EnrichedCallManager manager = EnrichedCallComponent.get(context).getEnrichedCallManager(); + manager.unregisterCapabilitiesListener(call); + manager.unregisterStateChangedListener(call); + // Don't log an already logged call. logCall() might be called multiple times // for the same call due to b/24109437. if (call.getLogState() != null && !call.getLogState().isLogged) { @@ -792,6 +802,9 @@ public class CallList implements DialerCallDelegate { } } + @Override + public void onEnrichedCallSessionUpdate() {} + @Override public void onDialerCallSessionModificationStateChange() { for (Listener listener : mListeners) { diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java index acedf41f1d..12edb07e62 100644 --- a/java/com/android/incallui/call/DialerCall.java +++ b/java/com/android/incallui/call/DialerCall.java @@ -51,6 +51,10 @@ import com.android.dialer.common.ConfigProviderBindings; import com.android.dialer.common.LogUtil; import com.android.dialer.enrichedcall.EnrichedCallCapabilities; import com.android.dialer.enrichedcall.EnrichedCallComponent; +import com.android.dialer.enrichedcall.EnrichedCallManager; +import com.android.dialer.enrichedcall.EnrichedCallManager.CapabilitiesListener; +import com.android.dialer.enrichedcall.EnrichedCallManager.Filter; +import com.android.dialer.enrichedcall.EnrichedCallManager.StateChangedListener; import com.android.dialer.enrichedcall.Session; import com.android.dialer.lightbringer.LightbringerComponent; import com.android.dialer.logging.ContactLookupResult; @@ -77,7 +81,7 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.TimeUnit; /** Describes a single call and its state. */ -public class DialerCall implements VideoTechListener { +public class DialerCall implements VideoTechListener, StateChangedListener, CapabilitiesListener { public static final int CALL_HISTORY_STATUS_UNKNOWN = 0; public static final int CALL_HISTORY_STATUS_PRESENT = 1; @@ -143,6 +147,12 @@ public class DialerCall implements VideoTechListener { private EnrichedCallCapabilities mEnrichedCallCapabilities; private Session mEnrichedCallSession; + private int answerAndReleaseButtonDisplayedTimes = 0; + private boolean releasedByAnsweringSecondCall = false; + // Times when a second call is received but AnswerAndRelease button is not shown + // since it's not supported. + private int secondCallWithoutAnswerAndReleasedButtonTimes = 0; + public static String getNumberFromHandle(Uri handle) { return handle == null ? "" : handle.getSchemeSpecificPart(); } @@ -292,6 +302,8 @@ public class DialerCall implements VideoTechListener { mTimeAddedMs = System.currentTimeMillis(); parseCallSpecificAppData(); + + updateEnrichedCallSession(); } private static int translateState(int state) { @@ -413,6 +425,12 @@ public class DialerCall implements VideoTechListener { for (DialerCallListener listener : mListeners) { listener.onDialerCallDisconnect(); } + EnrichedCallComponent.get(mContext) + .getEnrichedCallManager() + .unregisterCapabilitiesListener(this); + EnrichedCallComponent.get(mContext) + .getEnrichedCallManager() + .unregisterCapabilitiesListener(this); } else { for (DialerCallListener listener : mListeners) { listener.onDialerCallUpdate(); @@ -960,6 +978,30 @@ public class DialerCall implements VideoTechListener { return mLatencyReport; } + public int getAnswerAndReleaseButtonDisplayedTimes() { + return answerAndReleaseButtonDisplayedTimes; + } + + public void increaseAnswerAndReleaseButtonDisplayedTimes() { + answerAndReleaseButtonDisplayedTimes++; + } + + public boolean getReleasedByAnsweringSecondCall() { + return releasedByAnsweringSecondCall; + } + + public void setReleasedByAnsweringSecondCall(boolean releasedByAnsweringSecondCall) { + this.releasedByAnsweringSecondCall = releasedByAnsweringSecondCall; + } + + public int getSecondCallWithoutAnswerAndReleasedButtonTimes() { + return secondCallWithoutAnswerAndReleasedButtonTimes; + } + + public void increaseSecondCallWithoutAnswerAndReleasedButtonTimes() { + secondCallWithoutAnswerAndReleasedButtonTimes++; + } + @Nullable public EnrichedCallCapabilities getEnrichedCallCapabilities() { return mEnrichedCallCapabilities; @@ -1172,6 +1214,66 @@ public class DialerCall implements VideoTechListener { TelecomAdapter.getInstance().setAudioRoute(CallAudioState.ROUTE_SPEAKER); } + @Override + public void onCapabilitiesUpdated() { + if (getNumber() == null) { + return; + } + EnrichedCallCapabilities capabilities = + EnrichedCallComponent.get(mContext).getEnrichedCallManager().getCapabilities(getNumber()); + if (capabilities != null) { + setEnrichedCallCapabilities(capabilities); + update(); + } + } + + @Override + public void onEnrichedCallStateChanged() { + updateEnrichedCallSession(); + } + + private void updateEnrichedCallSession() { + if (getNumber() == null) { + return; + } + if (getEnrichedCallSession() != null) { + // State changes to existing sessions are currently handled by the UI components (which have + // their own listeners). Someday instead we could remove those and just call update() here and + // have the usual onDialerCallUpdate update the UI. + dispatchOnEnrichedCallSessionUpdate(); + return; + } + + EnrichedCallManager manager = EnrichedCallComponent.get(mContext).getEnrichedCallManager(); + + Filter filter = + isIncoming() + ? manager.createIncomingCallComposerFilter() + : manager.createOutgoingCallComposerFilter(); + + Session session = manager.getSession(getUniqueCallId(), getNumber(), filter); + if (session == null) { + return; + } + + session.setUniqueDialerCallId(getUniqueCallId()); + setEnrichedCallSession(session); + + LogUtil.i( + "DialerCall.updateEnrichedCallSession", + "setting session %d's dialer id to %s", + session.getSessionId(), + getUniqueCallId()); + + dispatchOnEnrichedCallSessionUpdate(); + } + + private void dispatchOnEnrichedCallSessionUpdate() { + for (DialerCallListener listener : mListeners) { + listener.onEnrichedCallSessionUpdate(); + } + } + /** * Specifies whether a number is in the call history or not. {@link #CALL_HISTORY_STATUS_UNKNOWN} * means there is no result. @@ -1372,6 +1474,7 @@ public class DialerCall implements VideoTechListener { String phoneNumber = call.getNumber(); phoneNumber = phoneNumber != null ? phoneNumber : ""; + phoneNumber = phoneNumber.replaceAll("[^+0-9]", ""); // Insert order here determines the priority of that video tech option videoTechs = new ArrayList<>(); diff --git a/java/com/android/incallui/call/DialerCallListener.java b/java/com/android/incallui/call/DialerCallListener.java index ed321be050..5d24a4d4b6 100644 --- a/java/com/android/incallui/call/DialerCallListener.java +++ b/java/com/android/incallui/call/DialerCallListener.java @@ -36,4 +36,6 @@ public interface DialerCallListener { void onHandoverToWifiFailure(); void onInternationalCallOnWifi(); + + void onEnrichedCallSessionUpdate(); } diff --git a/java/com/android/incallui/call/TelecomAdapter.java b/java/com/android/incallui/call/TelecomAdapter.java index ebf4ecf4fa..4fc9f81eb4 100644 --- a/java/com/android/incallui/call/TelecomAdapter.java +++ b/java/com/android/incallui/call/TelecomAdapter.java @@ -20,12 +20,13 @@ import android.content.ActivityNotFoundException; import android.content.Intent; import android.os.Looper; import android.support.annotation.MainThread; +import android.support.annotation.VisibleForTesting; import android.telecom.InCallService; import com.android.dialer.common.LogUtil; import java.util.List; /** Wrapper around Telecom APIs. */ -public final class TelecomAdapter implements InCallServiceListener { +public class TelecomAdapter implements InCallServiceListener { private static final String ADD_CALL_MODE_KEY = "add_call_mode"; @@ -45,6 +46,11 @@ public final class TelecomAdapter implements InCallServiceListener { return sInstance; } + @VisibleForTesting(otherwise = VisibleForTesting.NONE) + public static void setInstanceForTesting(TelecomAdapter telecomAdapter) { + sInstance = telecomAdapter; + } + @Override public void setInCallService(InCallService inCallService) { mInCallService = inCallService; diff --git a/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java b/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java index 801b0d35c2..b093a1b15e 100644 --- a/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java +++ b/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java @@ -21,6 +21,7 @@ import android.location.Location; import android.net.TrafficStats; import android.os.AsyncTask; import com.android.dialer.common.LogUtil; +import com.android.dialer.constants.TrafficStatsTags; import com.android.incallui.calllocation.impl.LocationPresenter.LocationUi; import java.io.InputStream; import java.lang.ref.WeakReference; diff --git a/java/com/android/incallui/calllocation/impl/LocationHelper.java b/java/com/android/incallui/calllocation/impl/LocationHelper.java index 3a14789453..99a759bbb0 100644 --- a/java/com/android/incallui/calllocation/impl/LocationHelper.java +++ b/java/com/android/incallui/calllocation/impl/LocationHelper.java @@ -24,6 +24,7 @@ import android.os.Bundle; import android.os.Handler; import android.support.annotation.IntDef; import android.support.annotation.MainThread; +import android.support.v4.os.UserManagerCompat; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import com.android.dialer.util.PermissionsUtil; @@ -87,6 +88,12 @@ public class LocationHelper { LogUtil.i("LocationHelper.canGetLocation", "location service is disabled."); return false; } + + if (!UserManagerCompat.isUserUnlocked(context)) { + LogUtil.i("LocationHelper.canGetLocation", "location unavailable in FBE mode."); + return false; + } + return true; } diff --git a/java/com/android/incallui/calllocation/impl/ReverseGeocodeTask.java b/java/com/android/incallui/calllocation/impl/ReverseGeocodeTask.java index eb5957b050..060ec0b4f0 100644 --- a/java/com/android/incallui/calllocation/impl/ReverseGeocodeTask.java +++ b/java/com/android/incallui/calllocation/impl/ReverseGeocodeTask.java @@ -20,6 +20,7 @@ import android.location.Location; import android.net.TrafficStats; import android.os.AsyncTask; import com.android.dialer.common.LogUtil; +import com.android.dialer.constants.TrafficStatsTags; import com.android.incallui.calllocation.impl.LocationPresenter.LocationUi; import java.lang.ref.WeakReference; import org.json.JSONArray; diff --git a/java/com/android/incallui/commontheme/res/anim/blinking.xml b/java/com/android/incallui/commontheme/res/anim/blinking.xml deleted file mode 100644 index 4b921c611f..0000000000 --- a/java/com/android/incallui/commontheme/res/anim/blinking.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/com/android/incallui/commontheme/res/drawable-hdpi/ic_phone_audio_white_36dp.png b/java/com/android/incallui/commontheme/res/drawable-hdpi/ic_phone_audio_white_36dp.png deleted file mode 100644 index 26f3fe00107cde34214cc08fc6bf3f46d110e2d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmVPx&tVu*cRA>e5nLlV0K@`SwiYNgg7UDm!h(T?vR0wJ#Xc24_V;Z#_a5heiLioAg;)&#@w?Wq5Pkg2=#cxeBrIG#vp$I(_j?rcX1SBOix8?Q$BuE zaa44&h_O$QoTmxLVLz7+uL^F`Z78*INt)OK?0)ovSa0Lm{<9f0aTM4$;P;I-2fqt+gVwxM zW?46iIS;JqFIV@NB|UgLhw8~H)2og4${}z7>;M};=6Ad-JuS{b_zJM5zvR#&$?<{l z0ia`9jJ<+%(2=IKAw*rxso**nO_1z^qPTP56W;T${K~DE9c3 zwWs-cKE1-@RHL({Jve7>uJ8ux3DU_vVBhB&Zm^zC+s5fcZ{nlC_Zv#E*|rrPD@^tJ z4(imQpY~#Zx15d1Ux^_V#i6+#v~+;p4z>aL`ftnX1-#>Ws#2+paV@P}fpP`P6)0Dr gT!C^0mf8yZ1<(Eytl33fB>(^b07*qoM6N<$f-#ohfdBvi diff --git a/java/com/android/incallui/commontheme/res/drawable-mdpi/ic_phone_audio_white_36dp.png b/java/com/android/incallui/commontheme/res/drawable-mdpi/ic_phone_audio_white_36dp.png deleted file mode 100644 index 5b0a9d66305a83c903f994ec4869ed3b9543a788..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 682 zcmV;b0#*HqP)Px%WJyFpR9Fe^mfuPhQ543{F@(@k5tNGV3VjEu7wAF+@46BSB8+Z>AObIXfT$}U zLFf;Jp@O#>bY1xZb!CKqprn|7pUjeV_L;M1kB)jX3%;|~ti9H^KK9J)IjvS>%?>m> za85grW!VdG07CmjVlb3NZWnBUWiSt}hczd2Fx^!n?{(U9WVv-FVQec{IcC{KgBoJ>_D>vXTAgf0UCuJt@p?f Q%>V!Z07*qoM6N<$g1~7vga7~l diff --git a/java/com/android/incallui/commontheme/res/drawable-xhdpi/ic_phone_audio_white_36dp.png b/java/com/android/incallui/commontheme/res/drawable-xhdpi/ic_phone_audio_white_36dp.png deleted file mode 100644 index d595b190d205afd9efc5a22542d419b3a94772e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1362 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 vB@x8;_#l$-v)x!=3S diff --git a/java/com/android/incallui/commontheme/res/drawable-xxxhdpi/ic_phone_audio_white_36dp.png b/java/com/android/incallui/commontheme/res/drawable-xxxhdpi/ic_phone_audio_white_36dp.png deleted file mode 100644 index 4bb58d9f5f88db5c913890ca0ab5b768572a9a65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3156 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 diff --git a/java/com/android/incallui/commontheme/res/values-af/strings.xml b/java/com/android/incallui/commontheme/res/values-af/strings.xml index 0dfdbc7d56..0721869bbf 100644 --- a/java/com/android/incallui/commontheme/res/values-af/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-af/strings.xml @@ -1,4 +1,20 @@ + + "Beëindig oproep" @@ -15,4 +31,6 @@ "Video aan" "Video af" "Verwissel video" + "Luidspreker" + "Klank" diff --git a/java/com/android/incallui/commontheme/res/values-am/strings.xml b/java/com/android/incallui/commontheme/res/values-am/strings.xml index 3155c39bec..9d748e3808 100644 --- a/java/com/android/incallui/commontheme/res/values-am/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-am/strings.xml @@ -1,4 +1,20 @@ + + "ጥሪ ጨርስ" @@ -15,4 +31,6 @@ "ቪዲዮ በርቷል" "ቪዲዮ ጠፍቷል" "ቪዲዮ አገላብጥ" + "የድምጽ ማጉያ" + "ድምፅ" diff --git a/java/com/android/incallui/commontheme/res/values-ar/strings.xml b/java/com/android/incallui/commontheme/res/values-ar/strings.xml index ecb3608bd4..693bfc57a2 100644 --- a/java/com/android/incallui/commontheme/res/values-ar/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ar/strings.xml @@ -1,4 +1,20 @@ + + "إنهاء المكالمة" @@ -15,4 +31,6 @@ "الفيديو قيد التشغيل" "الفيديو ليس قيد التشغيل" "تبديل الفيديو" + "مكبر الصوت" + "صوت" diff --git a/java/com/android/incallui/commontheme/res/values-az/strings.xml b/java/com/android/incallui/commontheme/res/values-az/strings.xml index d935a6c934..a1d88ceef1 100644 --- a/java/com/android/incallui/commontheme/res/values-az/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-az/strings.xml @@ -1,4 +1,20 @@ + + "Zəngi sonlandırın" @@ -15,4 +31,6 @@ "Video aktivdir" "Video deaktivdir" "Videonu dəyişdirin" + "Dinamik" + "Səs" diff --git a/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml index 36430c42bb..05ae59cdd5 100644 --- a/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml @@ -1,4 +1,20 @@ + + "Završi poziv" @@ -15,4 +31,6 @@ "Uključi video" "Isključi video" "Zameni video" + "Zvučnik" + "Zvuk" diff --git a/java/com/android/incallui/commontheme/res/values-be/strings.xml b/java/com/android/incallui/commontheme/res/values-be/strings.xml index 9609a63467..e772e2795b 100644 --- a/java/com/android/incallui/commontheme/res/values-be/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-be/strings.xml @@ -1,4 +1,20 @@ + + "Завяршыць выклік" @@ -15,4 +31,6 @@ "Відэа ўкл." "Відэа выкл." "Пераключыць відэа" + "Вонк.дынамік" + "Гук" diff --git a/java/com/android/incallui/commontheme/res/values-bg/strings.xml b/java/com/android/incallui/commontheme/res/values-bg/strings.xml index 1a0f3e312c..63364f8e68 100644 --- a/java/com/android/incallui/commontheme/res/values-bg/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-bg/strings.xml @@ -1,4 +1,20 @@ + + "Край на обаждането" @@ -15,4 +31,6 @@ "Видеото е включено" "Видеото е изключено" "Размяна на видеото" + "Високогов." + "Звук" diff --git a/java/com/android/incallui/commontheme/res/values-bn/strings.xml b/java/com/android/incallui/commontheme/res/values-bn/strings.xml index ef2408f645..9871ea447e 100644 --- a/java/com/android/incallui/commontheme/res/values-bn/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-bn/strings.xml @@ -1,4 +1,20 @@ + + "কল কেটে দিন" @@ -15,4 +31,6 @@ "ভিডিও চালু আছে" "ভিডিও বন্ধ আছে" "ভিডিও অদল বদল করুন" + "স্পিকার" + "শব্দ" diff --git a/java/com/android/incallui/commontheme/res/values-bs/strings.xml b/java/com/android/incallui/commontheme/res/values-bs/strings.xml index bfaff983fa..76f991d645 100644 --- a/java/com/android/incallui/commontheme/res/values-bs/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-bs/strings.xml @@ -1,4 +1,20 @@ + + "Prekini poziv" @@ -15,4 +31,6 @@ "Kamera je uključena" "Kamera je isključena" "Zamijeni kameru" + "Zvučnik" + "Zvuk" diff --git a/java/com/android/incallui/commontheme/res/values-ca/strings.xml b/java/com/android/incallui/commontheme/res/values-ca/strings.xml index 1b6ed44924..832027d399 100644 --- a/java/com/android/incallui/commontheme/res/values-ca/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ca/strings.xml @@ -1,4 +1,20 @@ + + "Finalitza la trucada" @@ -15,4 +31,6 @@ "Vídeo activat" "Vídeo desactivat" "Canvia de vídeo" + "Altaveu" + "So" diff --git a/java/com/android/incallui/commontheme/res/values-cs/strings.xml b/java/com/android/incallui/commontheme/res/values-cs/strings.xml index 1f10d85fe3..7afdcba0bf 100644 --- a/java/com/android/incallui/commontheme/res/values-cs/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-cs/strings.xml @@ -1,4 +1,20 @@ + + "Ukončit hovor" @@ -15,4 +31,6 @@ "Zapnuté video" "Vypnuté video" "Přepnout video" + "Reproduktor" + "Zvuk" diff --git a/java/com/android/incallui/commontheme/res/values-da/strings.xml b/java/com/android/incallui/commontheme/res/values-da/strings.xml index 35d01e3179..bd26e90e5a 100644 --- a/java/com/android/incallui/commontheme/res/values-da/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-da/strings.xml @@ -1,4 +1,20 @@ + + "Afslut opkald" @@ -15,4 +31,6 @@ "Video til" "Video fra" "Byt video" + "Højttaler" + "Lyd" diff --git a/java/com/android/incallui/commontheme/res/values-de/strings.xml b/java/com/android/incallui/commontheme/res/values-de/strings.xml index 57a95b7f3a..3fd10f0e60 100644 --- a/java/com/android/incallui/commontheme/res/values-de/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-de/strings.xml @@ -1,4 +1,20 @@ + + "Anruf beenden" @@ -15,4 +31,6 @@ "Video an" "Video aus" "Video wechseln" + "Lautsprecher" + "Tonausgabe" diff --git a/java/com/android/incallui/commontheme/res/values-el/strings.xml b/java/com/android/incallui/commontheme/res/values-el/strings.xml index 6bb9edcd14..71c0be9a7e 100644 --- a/java/com/android/incallui/commontheme/res/values-el/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-el/strings.xml @@ -1,4 +1,20 @@ + + "Τερματισμός" @@ -15,4 +31,6 @@ "Εικόνα βίντεο ενεργοποιημένη" "Εικόνα βίντεο απενεργοποιημένη" "Εναλλαγή βίντεο" + "Ηχείο" + "Ήχος" diff --git a/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml b/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml index 8133185b57..4869c3fa3b 100644 --- a/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml @@ -1,4 +1,20 @@ + + "End call" @@ -15,4 +31,6 @@ "Video on" "Video off" "Swap video" + "Speaker" + "Sound" diff --git a/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml b/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml index 8133185b57..4869c3fa3b 100644 --- a/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml @@ -1,4 +1,20 @@ + + "End call" @@ -15,4 +31,6 @@ "Video on" "Video off" "Swap video" + "Speaker" + "Sound" diff --git a/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml b/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml index 8133185b57..4869c3fa3b 100644 --- a/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml @@ -1,4 +1,20 @@ + + "End call" @@ -15,4 +31,6 @@ "Video on" "Video off" "Swap video" + "Speaker" + "Sound" diff --git a/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml b/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml index 45f2e2f426..a9596d9e6f 100644 --- a/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml @@ -1,4 +1,20 @@ + + "Finalizar llamada" @@ -15,4 +31,6 @@ "Video activado" "Video desactivado" "Intercambiar video" + "Altavoz" + "Sonido" diff --git a/java/com/android/incallui/commontheme/res/values-es/strings.xml b/java/com/android/incallui/commontheme/res/values-es/strings.xml index 56c8b2852a..aa84c625b2 100644 --- a/java/com/android/incallui/commontheme/res/values-es/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-es/strings.xml @@ -1,4 +1,20 @@ + + "Finalizar llamada" @@ -15,4 +31,6 @@ "Vídeo activado" "Vídeo desactivado" "Cambiar de vídeo" + "Altavoz" + "Sonido" diff --git a/java/com/android/incallui/commontheme/res/values-et/strings.xml b/java/com/android/incallui/commontheme/res/values-et/strings.xml index 069f3b5fd8..ae2e1ba536 100644 --- a/java/com/android/incallui/commontheme/res/values-et/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-et/strings.xml @@ -1,4 +1,20 @@ + + "Kõne lõpetamine" @@ -15,4 +31,6 @@ "Video on sees" "Video on väljas" "Video vahetamine" + "Kõlar" + "Heli" diff --git a/java/com/android/incallui/commontheme/res/values-eu/strings.xml b/java/com/android/incallui/commontheme/res/values-eu/strings.xml index bbcf5dc6e3..0dd126c5a1 100644 --- a/java/com/android/incallui/commontheme/res/values-eu/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-eu/strings.xml @@ -1,4 +1,20 @@ + + "Amaitu deia" @@ -15,4 +31,6 @@ "Aktibatuta dago bideoa" "Desaktibatuta dago bideoa" "Aldatu bideoa" + "Bozgorailua" + "Soinua" diff --git a/java/com/android/incallui/commontheme/res/values-fa/strings.xml b/java/com/android/incallui/commontheme/res/values-fa/strings.xml index ea967bb7e2..1996ad47ba 100644 --- a/java/com/android/incallui/commontheme/res/values-fa/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-fa/strings.xml @@ -1,4 +1,20 @@ + + "پایان تماس" @@ -15,4 +31,6 @@ "ویدئو فعال" "ویدئو غیرفعال" "جابه‌جایی ویدئو" + "بلندگو" + "صدا" diff --git a/java/com/android/incallui/commontheme/res/values-fi/strings.xml b/java/com/android/incallui/commontheme/res/values-fi/strings.xml index f0da44f070..5a579816b4 100644 --- a/java/com/android/incallui/commontheme/res/values-fi/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-fi/strings.xml @@ -1,4 +1,20 @@ + + "Päätä puhelu" @@ -15,4 +31,6 @@ "Videokuva käytössä" "Videokuva poissa käytöstä" "Vaihda videota" + "Kaiutin" + "Ääni" diff --git a/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml b/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml index bf74dfbefe..a1db3065ab 100644 --- a/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml @@ -1,4 +1,20 @@ + + "Mettre fin à l\'appel" @@ -15,4 +31,6 @@ "Vidéo activée" "Vidéo désactivée" "Permuter la vidéo" + "Haut-parleur" + "Son" diff --git a/java/com/android/incallui/commontheme/res/values-fr/strings.xml b/java/com/android/incallui/commontheme/res/values-fr/strings.xml index fb674a4839..e169a3d7a2 100644 --- a/java/com/android/incallui/commontheme/res/values-fr/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-fr/strings.xml @@ -1,4 +1,20 @@ + + "Mettre fin à l\'appel" @@ -15,4 +31,6 @@ "Vidéo activée" "Vidéo désactivée" "Permuter la vidéo" + "Haut-parleur" + "Audio" diff --git a/java/com/android/incallui/commontheme/res/values-gl/strings.xml b/java/com/android/incallui/commontheme/res/values-gl/strings.xml index c7e2214162..ba98a98a74 100644 --- a/java/com/android/incallui/commontheme/res/values-gl/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-gl/strings.xml @@ -1,4 +1,20 @@ + + "Finalizar chamada" @@ -15,4 +31,6 @@ "Vídeo activado" "Vídeo desactivado" "Alternar vídeo" + "Altofalante" + "Son" diff --git a/java/com/android/incallui/commontheme/res/values-gu/strings.xml b/java/com/android/incallui/commontheme/res/values-gu/strings.xml index 75584ea0d3..194590cece 100644 --- a/java/com/android/incallui/commontheme/res/values-gu/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-gu/strings.xml @@ -1,4 +1,20 @@ + + "કૉલ સમાપ્ત કરો" @@ -15,4 +31,6 @@ "વિડિઓ ચાલુ" "વિડિઓ બંધ" "વિડિઓ સ્વેપ કરો" + "સ્પીકર" + "ધ્વનિ" diff --git a/java/com/android/incallui/commontheme/res/values-hi/strings.xml b/java/com/android/incallui/commontheme/res/values-hi/strings.xml index f7ea68ad82..207bbf2be2 100644 --- a/java/com/android/incallui/commontheme/res/values-hi/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-hi/strings.xml @@ -1,4 +1,20 @@ + + "कॉल समाप्त करें" @@ -15,4 +31,6 @@ "वीडियो चालू" "वीडियो बंद" "वीडियो स्वैप करें" + "स्‍पीकर" + "ध्वनि" diff --git a/java/com/android/incallui/commontheme/res/values-hr/strings.xml b/java/com/android/incallui/commontheme/res/values-hr/strings.xml index c30f3977e7..c58ab852fc 100644 --- a/java/com/android/incallui/commontheme/res/values-hr/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-hr/strings.xml @@ -1,4 +1,20 @@ + + "Prekid poziva" @@ -15,4 +31,6 @@ "Videopoziv uključen" "Videopoziv isključen" "Zamijeni videopoziv" + "Zvučnik" + "Zvuk" diff --git a/java/com/android/incallui/commontheme/res/values-hu/strings.xml b/java/com/android/incallui/commontheme/res/values-hu/strings.xml index 9ee2300e22..ba7fec7d55 100644 --- a/java/com/android/incallui/commontheme/res/values-hu/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-hu/strings.xml @@ -1,4 +1,20 @@ + + "Hívás befejezése" @@ -15,4 +31,6 @@ "Videó be" "Videó ki" "Videó cseréje" + "Hangszóró" + "Hang" diff --git a/java/com/android/incallui/commontheme/res/values-hy/strings.xml b/java/com/android/incallui/commontheme/res/values-hy/strings.xml index 96a0cab6fa..81262e4c68 100644 --- a/java/com/android/incallui/commontheme/res/values-hy/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-hy/strings.xml @@ -1,4 +1,20 @@ + + "Ավարտել զանգը" @@ -15,4 +31,6 @@ "Տեսախցիկը միացած է" "Տեսախցիկն անջատած է" "Փոխարկել խցիկը" + "Բարձրախոս" + "Ձայն" diff --git a/java/com/android/incallui/commontheme/res/values-in/strings.xml b/java/com/android/incallui/commontheme/res/values-in/strings.xml index 4536f5db0e..fb3fc56ec7 100644 --- a/java/com/android/incallui/commontheme/res/values-in/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-in/strings.xml @@ -1,4 +1,20 @@ + + "Akhiri panggilan" @@ -15,4 +31,6 @@ "Video aktif" "Video nonaktif" "Tukar Video" + "Speaker" + "Suara" diff --git a/java/com/android/incallui/commontheme/res/values-is/strings.xml b/java/com/android/incallui/commontheme/res/values-is/strings.xml index 357f90eee4..438b143e44 100644 --- a/java/com/android/incallui/commontheme/res/values-is/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-is/strings.xml @@ -1,4 +1,20 @@ + + "Ljúka símtali" @@ -15,4 +31,6 @@ "Kveikja á mynd" "Slökkva á mynd" "Skipta um mynd" + "Hátalari" + "Hljóð" diff --git a/java/com/android/incallui/commontheme/res/values-it/strings.xml b/java/com/android/incallui/commontheme/res/values-it/strings.xml index a63d3140ae..b7c1d3f4ed 100644 --- a/java/com/android/incallui/commontheme/res/values-it/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-it/strings.xml @@ -1,4 +1,20 @@ + + "Termina chiamata" @@ -15,4 +31,6 @@ "Video attivo" "Video non attivo" "Scambia video" + "Altoparlante" + "Suono" diff --git a/java/com/android/incallui/commontheme/res/values-iw/strings.xml b/java/com/android/incallui/commontheme/res/values-iw/strings.xml index 1e2b7f2b17..cbd6d75730 100644 --- a/java/com/android/incallui/commontheme/res/values-iw/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-iw/strings.xml @@ -1,4 +1,20 @@ + + "סיים שיחה" @@ -15,4 +31,6 @@ "הווידאו מופעל" "הווידאו מושבת" "החלף וידאו" + "רמקול" + "קול" diff --git a/java/com/android/incallui/commontheme/res/values-ja/strings.xml b/java/com/android/incallui/commontheme/res/values-ja/strings.xml index 658b51349c..4ea9495812 100644 --- a/java/com/android/incallui/commontheme/res/values-ja/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ja/strings.xml @@ -1,4 +1,20 @@ + + "通話を終了" @@ -15,4 +31,6 @@ "ビデオが ON になっています" "ビデオが OFF になっています" "ビデオを切り替える" + "スピーカー" + "音声" diff --git a/java/com/android/incallui/commontheme/res/values-ka/strings.xml b/java/com/android/incallui/commontheme/res/values-ka/strings.xml index ffba7cedee..3163476b6e 100644 --- a/java/com/android/incallui/commontheme/res/values-ka/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ka/strings.xml @@ -1,4 +1,20 @@ + + "ზარის დასრულება" @@ -15,4 +31,6 @@ "ვიდეო ჩართულია" "ვიდეო გამორთულია" "ვიდეოს შენაცვლება" + "სპიკერი" + "ხმა" diff --git a/java/com/android/incallui/commontheme/res/values-kk/strings.xml b/java/com/android/incallui/commontheme/res/values-kk/strings.xml index ace83ecee0..23b3a2ad67 100644 --- a/java/com/android/incallui/commontheme/res/values-kk/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-kk/strings.xml @@ -1,4 +1,20 @@ + + "Қоңырауды аяқтау" @@ -15,4 +31,6 @@ "Бейне қосулы" "Бейне өшірулі" "Бейнені ауыстыру" + "Динамик" + "Дыбыс" diff --git a/java/com/android/incallui/commontheme/res/values-km/strings.xml b/java/com/android/incallui/commontheme/res/values-km/strings.xml index e28f120297..55cfa0a16a 100644 --- a/java/com/android/incallui/commontheme/res/values-km/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-km/strings.xml @@ -1,4 +1,20 @@ + + "បញ្ចប់​ការ​ហៅ" @@ -15,4 +31,6 @@ "បើក​វីដេអូ​" "បិទ​វីដេអូ" "ប្ដូរ​វីដេអូ" + "ឧបករណ៍​បំពង​សំឡេង" + "សំឡេង" diff --git a/java/com/android/incallui/commontheme/res/values-kn/strings.xml b/java/com/android/incallui/commontheme/res/values-kn/strings.xml index 59186e0a3e..685ef642ff 100644 --- a/java/com/android/incallui/commontheme/res/values-kn/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-kn/strings.xml @@ -1,4 +1,20 @@ + + "ಕರೆ ಅಂತ್ಯಗೊಳಿಸಿ" @@ -15,4 +31,6 @@ "ವೀಡಿಯೊ ಆನ್" "ವೀಡಿಯೊ ಆಫ್" "ವೀಡಿಯೊ ಬದಲಾಯಿಸಿ" + "ಸ್ಪೀಕರ್‌" + "ಶಬ್ದ" diff --git a/java/com/android/incallui/commontheme/res/values-ko/strings.xml b/java/com/android/incallui/commontheme/res/values-ko/strings.xml index 0a0e3c9aa8..088746ddd4 100644 --- a/java/com/android/incallui/commontheme/res/values-ko/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ko/strings.xml @@ -1,4 +1,20 @@ + + "통화 종료" @@ -15,4 +31,6 @@ "동영상 켜짐" "동영상 꺼짐" "동영상 전환" + "스피커" + "소리" diff --git a/java/com/android/incallui/commontheme/res/values-ky/strings.xml b/java/com/android/incallui/commontheme/res/values-ky/strings.xml index ac697e4fe6..5dd4d0c219 100644 --- a/java/com/android/incallui/commontheme/res/values-ky/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ky/strings.xml @@ -1,4 +1,20 @@ + + "Чалууну бүтүрүү" @@ -15,4 +31,6 @@ "Видео күйүк" "Видео өчүк" "Видеону иштетүү/өчүрүү" + "Катуу сүйлөткүч" + "Добуш" diff --git a/java/com/android/incallui/commontheme/res/values-lo/strings.xml b/java/com/android/incallui/commontheme/res/values-lo/strings.xml index da2050ac21..2f0b94b542 100644 --- a/java/com/android/incallui/commontheme/res/values-lo/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-lo/strings.xml @@ -1,4 +1,20 @@ + + "ວາງສາຍ" @@ -15,4 +31,6 @@ "ວິດີໂອເປີດ" "ວິດີໂອປິດ" "ສະຫຼັບວິດີໂອ" + "ລຳໂພງ" + "ສຽງ" diff --git a/java/com/android/incallui/commontheme/res/values-lt/strings.xml b/java/com/android/incallui/commontheme/res/values-lt/strings.xml index bda53d6f61..d0a5e0d9cf 100644 --- a/java/com/android/incallui/commontheme/res/values-lt/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-lt/strings.xml @@ -1,4 +1,20 @@ + + "Baigti skambutį" @@ -15,4 +31,6 @@ "Vaizdas įjungtas" "Vaizdas išjungtas" "Sukeisti vaizdą" + "Garsiakalbis" + "Garsas" diff --git a/java/com/android/incallui/commontheme/res/values-lv/strings.xml b/java/com/android/incallui/commontheme/res/values-lv/strings.xml index beaf35c583..443ac5e807 100644 --- a/java/com/android/incallui/commontheme/res/values-lv/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-lv/strings.xml @@ -1,4 +1,20 @@ + + "Beigt zvanu" @@ -15,4 +31,6 @@ "Video ieslēgts" "Video izslēgts" "Mainīt video" + "Skaļrunis" + "Skaņa" diff --git a/java/com/android/incallui/commontheme/res/values-mk/strings.xml b/java/com/android/incallui/commontheme/res/values-mk/strings.xml index 5b4f6d0c5c..d9a339eab6 100644 --- a/java/com/android/incallui/commontheme/res/values-mk/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-mk/strings.xml @@ -1,4 +1,20 @@ + + "Завршете го повикот" @@ -15,4 +31,6 @@ "Видеото е вклучено" "Видеото е исклучено" "Заменете го видеото" + "Звучник" + "Звук" diff --git a/java/com/android/incallui/commontheme/res/values-ml/strings.xml b/java/com/android/incallui/commontheme/res/values-ml/strings.xml index 0242667365..0f2d889687 100644 --- a/java/com/android/incallui/commontheme/res/values-ml/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ml/strings.xml @@ -1,4 +1,20 @@ + + "കോള്‍ അവസാനിപ്പിക്കൂ" @@ -15,4 +31,6 @@ "വീഡിയോ ഓണാണ്" "വീഡിയോ ഓഫാണ്" "വീഡിയോ സ്വാപ്പുചെയ്യുക" + "സ്പീക്കർ" + "ശബ്‌ദം" diff --git a/java/com/android/incallui/commontheme/res/values-mn/strings.xml b/java/com/android/incallui/commontheme/res/values-mn/strings.xml index cd286edb9e..3665fcfa6f 100644 --- a/java/com/android/incallui/commontheme/res/values-mn/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-mn/strings.xml @@ -1,4 +1,20 @@ + + "Дуудлагыг таслах" @@ -15,4 +31,6 @@ "Видео идэвхтэй" "Видео идэвхгүй" "Видеог солих" + "Чанга яригч" + "Дуу" diff --git a/java/com/android/incallui/commontheme/res/values-mr/strings.xml b/java/com/android/incallui/commontheme/res/values-mr/strings.xml index 2c626edbdb..f7498097fe 100644 --- a/java/com/android/incallui/commontheme/res/values-mr/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-mr/strings.xml @@ -1,4 +1,20 @@ + + "कॉल समाप्त करा" @@ -15,4 +31,6 @@ "व्हिडिओ चालू" "व्हिडिओ बंद" "व्हिडिओ बदला" + "स्पीकर" + "ध्वनी" diff --git a/java/com/android/incallui/commontheme/res/values-ms/strings.xml b/java/com/android/incallui/commontheme/res/values-ms/strings.xml index f6c358d790..fb38fa9d1d 100644 --- a/java/com/android/incallui/commontheme/res/values-ms/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ms/strings.xml @@ -1,4 +1,20 @@ + + "Tamatkan panggilan" @@ -15,4 +31,6 @@ "Video dihidupkan" "Video dimatikan" "Silih video" + "Pmbsr suara" + "Bunyi" diff --git a/java/com/android/incallui/commontheme/res/values-my/strings.xml b/java/com/android/incallui/commontheme/res/values-my/strings.xml index 6b6614c36d..5b396be591 100644 --- a/java/com/android/incallui/commontheme/res/values-my/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-my/strings.xml @@ -1,4 +1,20 @@ + + "ခေါ်ဆိုမှုအပြီးသတ်ရန်" @@ -15,4 +31,6 @@ "ဗီဒီယိုဖွင့်ထားသည်" "ဗီဒီယိုပိတ်ထားသည်" "ဗီဒီယိုဖလှယ်ရန်" + "စပီကာ" + "အသံ" diff --git a/java/com/android/incallui/commontheme/res/values-nb/strings.xml b/java/com/android/incallui/commontheme/res/values-nb/strings.xml index 4974411bc8..506b15e318 100644 --- a/java/com/android/incallui/commontheme/res/values-nb/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-nb/strings.xml @@ -1,4 +1,20 @@ + + "Avslutt samtalen" @@ -15,4 +31,6 @@ "Video på" "Video av" "Bytt video" + "Høyttaler" + "Lyd" diff --git a/java/com/android/incallui/commontheme/res/values-ne/strings.xml b/java/com/android/incallui/commontheme/res/values-ne/strings.xml index 5cd91b336d..fa9d87fb71 100644 --- a/java/com/android/incallui/commontheme/res/values-ne/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ne/strings.xml @@ -1,4 +1,20 @@ + + "कल अन्त्य गर्नुहोस्" @@ -15,4 +31,6 @@ "सक्रिय भिडियो" "निष्क्रिय भिडियो" "भिडियो साट्नुहोस्" + "स्पिकर" + "आवाज" diff --git a/java/com/android/incallui/commontheme/res/values-nl/strings.xml b/java/com/android/incallui/commontheme/res/values-nl/strings.xml index d33d60075d..192c47b976 100644 --- a/java/com/android/incallui/commontheme/res/values-nl/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-nl/strings.xml @@ -1,4 +1,20 @@ + + "Oproep beëindigen" @@ -15,4 +31,6 @@ "Video aan" "Video uit" "Video wisselen" + "Luidspreker" + "Geluid" diff --git a/java/com/android/incallui/commontheme/res/values-no/strings.xml b/java/com/android/incallui/commontheme/res/values-no/strings.xml index 4974411bc8..506b15e318 100644 --- a/java/com/android/incallui/commontheme/res/values-no/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-no/strings.xml @@ -1,4 +1,20 @@ + + "Avslutt samtalen" @@ -15,4 +31,6 @@ "Video på" "Video av" "Bytt video" + "Høyttaler" + "Lyd" diff --git a/java/com/android/incallui/commontheme/res/values-pa/strings.xml b/java/com/android/incallui/commontheme/res/values-pa/strings.xml index 7e59e6114e..77ceb252a3 100644 --- a/java/com/android/incallui/commontheme/res/values-pa/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-pa/strings.xml @@ -1,4 +1,20 @@ + + "ਕਾਲ ਸਮਾਪਤ ਕਰੋ" @@ -15,4 +31,6 @@ "ਵੀਡੀਓ ਚਾਲੂ" "ਵੀਡੀਓ ਬੰਦ" "ਵੀਡੀਓ ਦੀ ਅਦਲਾ ਬਦਲੀ ਕਰੋ" + "ਸਪੀਕਰ" + "ਧੁਨੀ" diff --git a/java/com/android/incallui/commontheme/res/values-pl/strings.xml b/java/com/android/incallui/commontheme/res/values-pl/strings.xml index 4ab1d244d0..d9b037e8dc 100644 --- a/java/com/android/incallui/commontheme/res/values-pl/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-pl/strings.xml @@ -1,4 +1,20 @@ + + "Zakończ połączenie" @@ -15,4 +31,6 @@ "Wideo włączone" "Wideo wyłączone" "Przełącz wideo" + "Głośnik" + "Dźwięk" diff --git a/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml b/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml index 67f367466a..2c1834e0f6 100644 --- a/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml @@ -1,4 +1,20 @@ + + "Encerrar chamada" @@ -15,4 +31,6 @@ "Vídeo ativado" "Vídeo desativado" "Trocar vídeo" + "Alto-falante" + "Som" diff --git a/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml b/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml index 27c5649289..f0c14d0279 100644 --- a/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml @@ -1,4 +1,20 @@ + + "Terminar chamada" @@ -15,4 +31,6 @@ "Vídeo ativado" "Vídeo desativado" "Alternar vídeo" + "Altifalante" + "Som" diff --git a/java/com/android/incallui/commontheme/res/values-pt/strings.xml b/java/com/android/incallui/commontheme/res/values-pt/strings.xml index 67f367466a..2c1834e0f6 100644 --- a/java/com/android/incallui/commontheme/res/values-pt/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-pt/strings.xml @@ -1,4 +1,20 @@ + + "Encerrar chamada" @@ -15,4 +31,6 @@ "Vídeo ativado" "Vídeo desativado" "Trocar vídeo" + "Alto-falante" + "Som" diff --git a/java/com/android/incallui/commontheme/res/values-ro/strings.xml b/java/com/android/incallui/commontheme/res/values-ro/strings.xml index b7fec9a58b..f7c8f72576 100644 --- a/java/com/android/incallui/commontheme/res/values-ro/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ro/strings.xml @@ -1,4 +1,20 @@ + + "Încheiați apelul" @@ -15,4 +31,6 @@ "Imaginea video este activată" "Imaginea video este dezactivată" "Schimbați imaginea video" + "Difuzor" + "Sunet" diff --git a/java/com/android/incallui/commontheme/res/values-ru/strings.xml b/java/com/android/incallui/commontheme/res/values-ru/strings.xml index 5d1807f7af..1853ad23ff 100644 --- a/java/com/android/incallui/commontheme/res/values-ru/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ru/strings.xml @@ -1,4 +1,20 @@ + + "Завершить вызов" @@ -15,4 +31,6 @@ "Камера включена" "Камера выключена" "Включить/выключить камеру" + "Динамик" + "Звук" diff --git a/java/com/android/incallui/commontheme/res/values-si/strings.xml b/java/com/android/incallui/commontheme/res/values-si/strings.xml index 0a0f35c47f..ae13cc4242 100644 --- a/java/com/android/incallui/commontheme/res/values-si/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-si/strings.xml @@ -1,4 +1,20 @@ + + "ඇමතුම අවසන් කරන්න" @@ -15,4 +31,6 @@ "වීඩියෝව ක්‍රියාත්මකයි" "වීඩියෝව ක්‍රියාවිරහිතයි" "වීඩියෝව මාරු කරන්න" + "ස්පීකරය" + "හඬ" diff --git a/java/com/android/incallui/commontheme/res/values-sk/strings.xml b/java/com/android/incallui/commontheme/res/values-sk/strings.xml index 97eabebb4f..cd9aa9912a 100644 --- a/java/com/android/incallui/commontheme/res/values-sk/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sk/strings.xml @@ -1,4 +1,20 @@ + + "Ukončiť hovor" @@ -15,4 +31,6 @@ "Video je zapnuté" "Video je vypnuté" "Zameniť video" + "Reproduktor" + "Zvuk" diff --git a/java/com/android/incallui/commontheme/res/values-sl/strings.xml b/java/com/android/incallui/commontheme/res/values-sl/strings.xml index 46cf2e8eea..0aa6e699ad 100644 --- a/java/com/android/incallui/commontheme/res/values-sl/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sl/strings.xml @@ -1,4 +1,20 @@ + + "Končaj klic" @@ -15,4 +31,6 @@ "Vklopi video" "Izklopi video" "Zamenjaj video" + "Zvočnik" + "Zvok" diff --git a/java/com/android/incallui/commontheme/res/values-sq/strings.xml b/java/com/android/incallui/commontheme/res/values-sq/strings.xml index 17ec08167e..b9c97d1dd6 100644 --- a/java/com/android/incallui/commontheme/res/values-sq/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sq/strings.xml @@ -1,4 +1,20 @@ + + "Mbylle telefonatën" @@ -15,4 +31,6 @@ "Videoja aktive" "Videoja joaktive" "Shkëmbe video" + "Altoparlanti" + "Tingulli" diff --git a/java/com/android/incallui/commontheme/res/values-sr/strings.xml b/java/com/android/incallui/commontheme/res/values-sr/strings.xml index 2928bc9923..67586b72eb 100644 --- a/java/com/android/incallui/commontheme/res/values-sr/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sr/strings.xml @@ -1,4 +1,20 @@ + + "Заврши позив" @@ -15,4 +31,6 @@ "Укључи видео" "Искључи видео" "Замени видео" + "Звучник" + "Звук" diff --git a/java/com/android/incallui/commontheme/res/values-sv/strings.xml b/java/com/android/incallui/commontheme/res/values-sv/strings.xml index 17b5d3745c..957a2f85ac 100644 --- a/java/com/android/incallui/commontheme/res/values-sv/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sv/strings.xml @@ -1,4 +1,20 @@ + + "Avsluta samtal" @@ -15,4 +31,6 @@ "Video på" "Video av" "Byt video" + "Högtalare" + "Ljud" diff --git a/java/com/android/incallui/commontheme/res/values-sw/strings.xml b/java/com/android/incallui/commontheme/res/values-sw/strings.xml index 165d57622f..8752c2d37e 100644 --- a/java/com/android/incallui/commontheme/res/values-sw/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-sw/strings.xml @@ -1,4 +1,20 @@ + + "Kata simu" @@ -15,4 +31,6 @@ "Washa video" "Zima video" "Badilisha video" + "Spika" + "Sauti" diff --git a/java/com/android/incallui/commontheme/res/values-ta/strings.xml b/java/com/android/incallui/commontheme/res/values-ta/strings.xml index fa2dfb2801..69258d2e6d 100644 --- a/java/com/android/incallui/commontheme/res/values-ta/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ta/strings.xml @@ -1,4 +1,20 @@ + + "அழைப்பைத் துண்டிக்கும்" @@ -15,4 +31,6 @@ "வீடியோ இயக்கப்பட்டது" "வீடியோ முடக்கப்பட்டது" "வீடியோவிற்கு மாற்றும்" + "ஸ்பீக்கர்" + "ஒலி" diff --git a/java/com/android/incallui/commontheme/res/values-te/strings.xml b/java/com/android/incallui/commontheme/res/values-te/strings.xml index 3ce431cd10..9454e15b76 100644 --- a/java/com/android/incallui/commontheme/res/values-te/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-te/strings.xml @@ -1,4 +1,20 @@ + + "కాల్‌ను ముగిస్తుంది" @@ -15,4 +31,6 @@ "వీడియో ఆన్‌లో ఉంది" "వీడియో ఆఫ్‌లో ఉంది" "వీడియోను మారుస్తుంది" + "స్పీకర్" + "ధ్వని" diff --git a/java/com/android/incallui/commontheme/res/values-th/strings.xml b/java/com/android/incallui/commontheme/res/values-th/strings.xml index 1fa145c025..8235310000 100644 --- a/java/com/android/incallui/commontheme/res/values-th/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-th/strings.xml @@ -1,4 +1,20 @@ + + "วางสาย" @@ -15,4 +31,6 @@ "เปิดวิดีโอ" "ปิดวิดีโอ" "สลับวิดีโอ" + "ลำโพง" + "เสียง" diff --git a/java/com/android/incallui/commontheme/res/values-tl/strings.xml b/java/com/android/incallui/commontheme/res/values-tl/strings.xml index a53e11c7da..f368e3a685 100644 --- a/java/com/android/incallui/commontheme/res/values-tl/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-tl/strings.xml @@ -1,4 +1,20 @@ + + "Tapusin ang tawag" @@ -15,4 +31,6 @@ "Naka-on ang video" "Naka-off ang video" "Pagpalitin ang video" + "Speaker" + "Tunog" diff --git a/java/com/android/incallui/commontheme/res/values-tr/strings.xml b/java/com/android/incallui/commontheme/res/values-tr/strings.xml index 09552730a9..cbf550211a 100644 --- a/java/com/android/incallui/commontheme/res/values-tr/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-tr/strings.xml @@ -1,4 +1,20 @@ + + "Çağrıyı sonlandırın" @@ -15,4 +31,6 @@ "Video açık" "Video kapalı" "Videoyu değiştirin" + "Hoparlör" + "Ses" diff --git a/java/com/android/incallui/commontheme/res/values-uk/strings.xml b/java/com/android/incallui/commontheme/res/values-uk/strings.xml index e17e781b3a..2bcd04c0e8 100644 --- a/java/com/android/incallui/commontheme/res/values-uk/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-uk/strings.xml @@ -1,4 +1,20 @@ + + "Завершити виклик" @@ -15,4 +31,6 @@ "Відео ввімкнено" "Відео вимкнено" "Поміняти відео" + "Динамік" + "Звук" diff --git a/java/com/android/incallui/commontheme/res/values-ur/strings.xml b/java/com/android/incallui/commontheme/res/values-ur/strings.xml index 5082e9d11b..bd8cf68077 100644 --- a/java/com/android/incallui/commontheme/res/values-ur/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-ur/strings.xml @@ -1,4 +1,20 @@ + + "کال ختم کریں" @@ -15,4 +31,6 @@ "ویڈیو آن ہے" "ویڈیو آف ہے" "ویڈیو کا تبادلہ کریں" + "اسپیکر" + "آواز" diff --git a/java/com/android/incallui/commontheme/res/values-uz/strings.xml b/java/com/android/incallui/commontheme/res/values-uz/strings.xml index d349d3f9aa..9bc995de22 100644 --- a/java/com/android/incallui/commontheme/res/values-uz/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-uz/strings.xml @@ -1,4 +1,20 @@ + + "Qo‘ng‘iroqni tugatish" @@ -15,4 +31,6 @@ "Video yoniq" "Video o‘chiq" "Videoni yoqish/ochirish" + "Karnay" + "Tovush" diff --git a/java/com/android/incallui/commontheme/res/values-vi/strings.xml b/java/com/android/incallui/commontheme/res/values-vi/strings.xml index 3bd39ae4d3..caf8f3434e 100644 --- a/java/com/android/incallui/commontheme/res/values-vi/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-vi/strings.xml @@ -1,4 +1,20 @@ + + "Kết thúc cuộc gọi" @@ -15,4 +31,6 @@ "Bật video" "Tắt video" "Hoán đổi video" + "Loa" + "Âm báo" diff --git a/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml b/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml index 0f57120e26..4d8bda6bce 100644 --- a/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml @@ -1,4 +1,20 @@ + + "结束通话" @@ -15,4 +31,6 @@ "视频已开启" "视频已关闭" "切换视频" + "免提" + "音频路径" diff --git a/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml b/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml index a3809ebcad..175b3e6575 100644 --- a/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml @@ -1,4 +1,20 @@ + + "結束通話" @@ -15,4 +31,6 @@ "視像已開啟" "視像已關閉" "切換視像" + "喇叭" + "音效" diff --git a/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml b/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml index 983dddda7b..dee1b9c958 100644 --- a/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml @@ -1,4 +1,20 @@ + + "結束通話" @@ -15,4 +31,6 @@ "開啟視訊畫面" "關閉視訊畫面" "切換視訊畫面" + "擴音" + "音訊" diff --git a/java/com/android/incallui/commontheme/res/values-zu/strings.xml b/java/com/android/incallui/commontheme/res/values-zu/strings.xml index 2dd2c897ee..953596231e 100644 --- a/java/com/android/incallui/commontheme/res/values-zu/strings.xml +++ b/java/com/android/incallui/commontheme/res/values-zu/strings.xml @@ -1,4 +1,20 @@ + + "Qeda ikholi" @@ -15,4 +31,6 @@ "Ividiyo ivuliwe" "Ividiyo ivaliwe" "Shintsha ividiyo" + "Isipikha" + "Umsindo" diff --git a/java/com/android/incallui/commontheme/res/values/strings.xml b/java/com/android/incallui/commontheme/res/values/strings.xml index 6f346a34de..94a8c901b7 100644 --- a/java/com/android/incallui/commontheme/res/values/strings.xml +++ b/java/com/android/incallui/commontheme/res/values/strings.xml @@ -1,4 +1,19 @@ + End call @@ -32,4 +47,11 @@ Swap video + + Speaker + + Sound + diff --git a/java/com/android/incallui/contactgrid/BottomRow.java b/java/com/android/incallui/contactgrid/BottomRow.java index 228c786a01..d0ff1926ac 100644 --- a/java/com/android/incallui/contactgrid/BottomRow.java +++ b/java/com/android/incallui/contactgrid/BottomRow.java @@ -22,7 +22,6 @@ import android.telephony.PhoneNumberUtils; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.text.TextUtils; -import com.android.contacts.common.compat.PhoneNumberUtilsCompat; import com.android.incallui.call.DialerCall.State; import com.android.incallui.incall.protocol.PrimaryCallState; import com.android.incallui.incall.protocol.PrimaryInfo; @@ -137,7 +136,7 @@ public class BottomRow { } private static CharSequence spanDisplayNumber(String displayNumber) { - return PhoneNumberUtilsCompat.createTtsSpannable( + return PhoneNumberUtils.createTtsSpannable( BidiFormatter.getInstance().unicodeWrap(displayNumber, TextDirectionHeuristics.LTR)); } diff --git a/java/com/android/incallui/contactgrid/ContactGridManager.java b/java/com/android/incallui/contactgrid/ContactGridManager.java index 1322d58eac..502cc52b85 100644 --- a/java/com/android/incallui/contactgrid/ContactGridManager.java +++ b/java/com/android/incallui/contactgrid/ContactGridManager.java @@ -20,10 +20,8 @@ import android.content.Context; import android.graphics.drawable.Animatable; import android.graphics.drawable.Drawable; import android.os.SystemClock; -import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.view.ViewCompat; -import android.telecom.TelecomManager; import android.text.TextUtils; import android.view.View; import android.view.accessibility.AccessibilityEvent; @@ -78,6 +76,7 @@ public class ContactGridManager { private boolean hideAvatar; private boolean showAnonymousAvatar; private boolean middleRowVisible = true; + private boolean isTimerStarted; private PrimaryInfo primaryInfo = PrimaryInfo.createEmptyPrimaryInfo(); private PrimaryCallState primaryCallState = PrimaryCallState.createEmptyPrimaryCallState(); @@ -105,6 +104,7 @@ public class ContactGridManager { contactGridLayout = (View) contactNameTextView.getParent(); letterTile = new LetterTileDrawable(context.getResources()); + isTimerStarted = false; } public void show() { @@ -213,7 +213,7 @@ public class ContactGridManager { * */ private void updateTopRow() { - TopRow.Info info = TopRow.getInfo(context, primaryCallState); + TopRow.Info info = TopRow.getInfo(context, primaryCallState, primaryInfo); if (TextUtils.isEmpty(info.label)) { // Use INVISIBLE here to prevent the rows below this one from moving up and down. statusTextView.setVisibility(View.INVISIBLE); @@ -232,26 +232,6 @@ public class ContactGridManager { } } - /** - * Returns the appropriate LetterTileDrawable.TYPE_ based on a given call state. - * - *

If no special state is detected, yields TYPE_DEFAULT. - */ - private static @LetterTileDrawable.ContactType int getContactTypeForPrimaryCallState( - @NonNull PrimaryCallState callState, @NonNull PrimaryInfo primaryInfo) { - if (callState.isVoiceMailNumber) { - return LetterTileDrawable.TYPE_VOICEMAIL; - } else if (callState.isBusinessNumber) { - return LetterTileDrawable.TYPE_BUSINESS; - } else if (primaryInfo.numberPresentation == TelecomManager.PRESENTATION_RESTRICTED) { - return LetterTileDrawable.TYPE_GENERIC_AVATAR; - } else if (callState.isConference) { - return LetterTileDrawable.TYPE_CONFERENCE; - } else { - return LetterTileDrawable.TYPE_DEFAULT; - } - } - /** * Updates row 1. For example: * @@ -295,8 +275,12 @@ public class ContactGridManager { primaryInfo.name, primaryInfo.contactInfoLookupKey, LetterTileDrawable.SHAPE_CIRCLE, - getContactTypeForPrimaryCallState(primaryCallState, primaryInfo)); - + LetterTileDrawable.getContactTypeFromPrimitives( + primaryCallState.isVoiceMailNumber, + primaryInfo.isSpam, + primaryCallState.isBusinessNumber, + primaryInfo.numberPresentation, + primaryCallState.isConference)); // By invalidating the avatarImageView we force a redraw of the letter tile. // This is required to properly display the updated letter tile iconography based on the // contact type, because the background drawable reference cached in the view, and the @@ -363,15 +347,19 @@ public class ContactGridManager { } if (info.isTimerVisible) { - bottomTextSwitcher.setDisplayedChild(1); - bottomTimerView.setBase( - primaryCallState.connectTimeMillis - - System.currentTimeMillis() - + SystemClock.elapsedRealtime()); - bottomTimerView.start(); + if (!isTimerStarted) { + bottomTextSwitcher.setDisplayedChild(1); + bottomTimerView.setBase( + primaryCallState.connectTimeMillis + - System.currentTimeMillis() + + SystemClock.elapsedRealtime()); + bottomTimerView.start(); + isTimerStarted = true; + } } else { bottomTextSwitcher.setDisplayedChild(0); bottomTimerView.stop(); + isTimerStarted = false; } } } diff --git a/java/com/android/incallui/contactgrid/TopRow.java b/java/com/android/incallui/contactgrid/TopRow.java index 8c3d6b0048..ab003570f6 100644 --- a/java/com/android/incallui/contactgrid/TopRow.java +++ b/java/com/android/incallui/contactgrid/TopRow.java @@ -19,10 +19,14 @@ package com.android.incallui.contactgrid; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.annotation.Nullable; +import android.telephony.PhoneNumberUtils; +import android.text.BidiFormatter; +import android.text.TextDirectionHeuristics; import android.text.TextUtils; import com.android.dialer.common.Assert; import com.android.incallui.call.DialerCall.State; import com.android.incallui.incall.protocol.PrimaryCallState; +import com.android.incallui.incall.protocol.PrimaryInfo; import com.android.incallui.videotech.utils.SessionModificationState; import com.android.incallui.videotech.utils.VideoUtils; @@ -55,7 +59,7 @@ public class TopRow { private TopRow() {} - public static Info getInfo(Context context, PrimaryCallState state) { + public static Info getInfo(Context context, PrimaryCallState state, PrimaryInfo primaryInfo) { CharSequence label = null; Drawable icon = state.connectionIcon; boolean labelIsSingleLine = true; @@ -73,6 +77,11 @@ public class TopRow { labelIsSingleLine = false; } else { label = getLabelForIncoming(context, state); + // Show phone number if it's not displayed in name (center row) or location field (bottom + // row). + if (shouldShowNumber(primaryInfo)) { + label = TextUtils.concat(label, " ", spanDisplayNumber(primaryInfo.number)); + } } } else if (VideoUtils.hasSentVideoUpgradeRequest(state.sessionModificationState) || VideoUtils.hasReceivedVideoUpgradeRequest(state.sessionModificationState)) { @@ -85,6 +94,8 @@ public class TopRow { label = getLabelForDialing(context, state); } else if (state.state == State.ACTIVE && state.isRemotelyHeld) { label = context.getString(R.string.incall_remotely_held); + } else if (state.state == State.ACTIVE && shouldShowNumber(primaryInfo)) { + label = spanDisplayNumber(primaryInfo.number); } else { // Video calling... // [Wi-Fi icon] Starbucks Wi-Fi @@ -94,9 +105,27 @@ public class TopRow { return new Info(label, icon, labelIsSingleLine); } + private static CharSequence spanDisplayNumber(String displayNumber) { + return PhoneNumberUtils.createTtsSpannable( + BidiFormatter.getInstance().unicodeWrap(displayNumber, TextDirectionHeuristics.LTR)); + } + + private static boolean shouldShowNumber(PrimaryInfo primaryInfo) { + if (primaryInfo.nameIsNumber) { + return false; + } + if (primaryInfo.location == null) { + return false; + } + if (TextUtils.isEmpty(primaryInfo.number)) { + return false; + } + return true; + } + private static CharSequence getLabelForIncoming(Context context, PrimaryCallState state) { if (state.isVideoCall) { - return getLabelForIncomingVideo(context, state.isWifi); + return getLabelForIncomingVideo(context, state.sessionModificationState, state.isWifi); } else if (state.isWifi && !TextUtils.isEmpty(state.connectionLabel)) { return state.connectionLabel; } else if (isAccount(state)) { @@ -108,11 +137,20 @@ public class TopRow { } } - private static CharSequence getLabelForIncomingVideo(Context context, boolean isWifi) { - if (isWifi) { - return context.getString(R.string.contact_grid_incoming_wifi_video_call); + private static CharSequence getLabelForIncomingVideo( + Context context, @SessionModificationState int sessionModificationState, boolean isWifi) { + if (sessionModificationState == SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) { + if (isWifi) { + return context.getString(R.string.contact_grid_incoming_wifi_video_request); + } else { + return context.getString(R.string.contact_grid_incoming_video_request); + } } else { - return context.getString(R.string.contact_grid_incoming_video_call); + if (isWifi) { + return context.getString(R.string.contact_grid_incoming_wifi_video_call); + } else { + return context.getString(R.string.contact_grid_incoming_video_call); + } } } @@ -154,7 +192,7 @@ public class TopRow { case SessionModificationState.UPGRADE_TO_VIDEO_REQUEST_TIMED_OUT: return context.getString(R.string.incall_video_call_request_timed_out); case SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST: - return getLabelForIncomingVideo(context, state.isWifi); + return getLabelForIncomingVideo(context, state.sessionModificationState, state.isWifi); case SessionModificationState.NO_REQUEST: default: Assert.fail(); diff --git a/java/com/android/incallui/contactgrid/res/values-af/strings.xml b/java/com/android/incallui/contactgrid/res/values-af/strings.xml index 95ec39bc3b..75a8bf37f8 100644 --- a/java/com/android/incallui/contactgrid/res/values-af/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-af/strings.xml @@ -1,4 +1,20 @@ + + "Bel via %s" @@ -14,6 +30,8 @@ "Hou aan" "Video-oproep vanaf" "Wi-Fi-video-oproep vanaf" + "Versoekvorm vir video-opgradering" + "Versoekvorm vir Wi-Fi-video-opgradering" "Oproep vanaf" "Werkoproep vanaf" "Inkomend via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-am/strings.xml b/java/com/android/incallui/contactgrid/res/values-am/strings.xml index d8060c9c57..3d11f73c21 100644 --- a/java/com/android/incallui/contactgrid/res/values-am/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-am/strings.xml @@ -1,4 +1,20 @@ + + "በ%s በኩል በመደወል ላይ" @@ -14,6 +30,8 @@ "ያዝና ቆይ" "ቪዲዮ ጥሪ ከ" "Wi-Fi ቪዲዮ ጥሪ ከ" + "የቪዲዮ ማሻሻል ጥያቄ ከ" + "የWi-Fi ቪዲዮ ማሻሻል ጥያቄ ከ" "ጥሪ ከ" "የሥራ ጥሪ ከ" "በ%s በኩል የገባ" diff --git a/java/com/android/incallui/contactgrid/res/values-ar/strings.xml b/java/com/android/incallui/contactgrid/res/values-ar/strings.xml index 30fd32cfaf..cddd1eca94 100644 --- a/java/com/android/incallui/contactgrid/res/values-ar/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ar/strings.xml @@ -1,4 +1,20 @@ + + "الاتصال عبر %s" @@ -14,6 +30,8 @@ "معلقة" "مكالمة فيديو من" "‏مكالمة فيديو عبر Wi-Fi من" + "طلب ترقية الفيديو من" + "‏طلب ترقية فيديو Wi-Fi من" "اتصال من" "مكالمة عمل من" "واردة عبر %s" diff --git a/java/com/android/incallui/contactgrid/res/values-az/strings.xml b/java/com/android/incallui/contactgrid/res/values-az/strings.xml index 4fe79eeaac..8c1993dc04 100644 --- a/java/com/android/incallui/contactgrid/res/values-az/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-az/strings.xml @@ -1,4 +1,20 @@ + + "%s vasitəsilə zəng edilir" @@ -14,6 +30,8 @@ "Gözləmədə" "Video zəng edən" "Wi-Fi video zəng edən" + "Video təkmilləşdirilməsi üçün təklif" + "Wi-Fi video təkmilləşdirilməsi üçün təklif" "Zəng edən" "İş zəngi edən" "%s vasitəsilə gələn" diff --git a/java/com/android/incallui/contactgrid/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/contactgrid/res/values-b+sr+Latn/strings.xml index f1a938ea9d..caa61bdace 100644 --- a/java/com/android/incallui/contactgrid/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-b+sr+Latn/strings.xml @@ -1,4 +1,20 @@ + + "Pozivamo preko %s" @@ -14,6 +30,8 @@ "Na čekanju" "Video poziv od" "Wi-Fi video poziv od" + "Zahtev za prelazak na video poziv od" + "Zahtev za prelazak na video poziv preko Wi-Fi-ja od" "Poziv od" "Poslovni poziv od" "Dolazni poziv preko %s" diff --git a/java/com/android/incallui/contactgrid/res/values-be/strings.xml b/java/com/android/incallui/contactgrid/res/values-be/strings.xml index aec3a3106f..51f7ea97a4 100644 --- a/java/com/android/incallui/contactgrid/res/values-be/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-be/strings.xml @@ -1,4 +1,20 @@ + + "Званкі праз %s" @@ -14,6 +30,8 @@ "На ўтрыманні" "Відэавыклік ад" "Відэавыклік праз Wi-Fi ад" + "Запыт на абнаўленне да відэавыкліка ад" + "Запыт на абнаўленне да відэавыкліка па Wi-Fi ад" "Выклік ад" "Рабочы выклік ад" "Уваходны выклік праз %s" diff --git a/java/com/android/incallui/contactgrid/res/values-bg/strings.xml b/java/com/android/incallui/contactgrid/res/values-bg/strings.xml index f162e4cd0e..4e313d408a 100644 --- a/java/com/android/incallui/contactgrid/res/values-bg/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-bg/strings.xml @@ -1,4 +1,20 @@ + + "Обаждане чрез %s" @@ -14,6 +30,8 @@ "Задържано" "Видеообаждане от" "Видеообаждане по Wi-Fi от" + "Заявка за преминаване към видеообаждане от" + "Заявка за преминаване към видеообаждане през Wi-Fi от" "Обаждане от" "Служебно обаждане от" "Входящо обаждане чрез %s" diff --git a/java/com/android/incallui/contactgrid/res/values-bn/strings.xml b/java/com/android/incallui/contactgrid/res/values-bn/strings.xml index 6d3a50c610..8fce2e4607 100644 --- a/java/com/android/incallui/contactgrid/res/values-bn/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-bn/strings.xml @@ -1,4 +1,20 @@ + + "%s এর মাধ্যমে কল করা হচ্ছে" @@ -14,6 +30,8 @@ "হোল্ডে রয়েছে" "এর থেকে আগত ভিডিও কল" "এর থেকে আগত Wi-Fi ভিডিও কল" + "এর থেকে ভিডিও আপগ্রেড করার অনুরোধ" + "এর থেকে ওয়াই-ফাই ভিডিও আপগ্রেড করার অনুরোধ" "এর থেকে আগত কল" "এর থেকে আগত কর্মক্ষেত্রের কল" "%s এর মাধ্যমে আগত কল" diff --git a/java/com/android/incallui/contactgrid/res/values-bs/strings.xml b/java/com/android/incallui/contactgrid/res/values-bs/strings.xml index 258799215a..0d4dfb3d83 100644 --- a/java/com/android/incallui/contactgrid/res/values-bs/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-bs/strings.xml @@ -1,4 +1,20 @@ + + "Pozivanje putem mreže %s" @@ -14,6 +30,8 @@ "Na čekanju" "Videopoziv od" "Wi-Fi videopoziv od" + "Zahtjev za nadogradnju na videozapis od pozivaoca" + "Zahtjev za nadogradnju na Wi-Fi videozapis od pozivaoca" "Poziv od" "Poslovni poziv od" "Dolazni poziv putem %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ca/strings.xml b/java/com/android/incallui/contactgrid/res/values-ca/strings.xml index 07598a2174..b4aa2ddc00 100644 --- a/java/com/android/incallui/contactgrid/res/values-ca/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ca/strings.xml @@ -1,4 +1,20 @@ + + "S\'està trucant amb %s" @@ -14,6 +30,8 @@ "En espera" "Videotrucada de" "Videotrucada per Wi-Fi de" + "Sol·licitud d\'actualització a videotrucada procedent de:" + "Sol·licitud d\'actualització a videotrucada per Wi-Fi procedent de:" "Trucada de" "Trucada de feina de" "Entrant via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-cs/strings.xml b/java/com/android/incallui/contactgrid/res/values-cs/strings.xml index d27a0283b4..b8698f0716 100644 --- a/java/com/android/incallui/contactgrid/res/values-cs/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-cs/strings.xml @@ -1,4 +1,20 @@ + + "Volání přes poskytovatele %s" @@ -14,6 +30,8 @@ "Podrženo" "Příchozí videohovor:" "Příchozí videohovor přes Wi-Fi:" + "Žádost o upgrade na videohovor od uživatele" + "Žádost o upgrade na videohovor přes Wi-Fi od uživatele" "Příchozí hovor:" "Příchozí pracovní hovor:" "Příchozí hovor přes poskytovatele %s" diff --git a/java/com/android/incallui/contactgrid/res/values-da/strings.xml b/java/com/android/incallui/contactgrid/res/values-da/strings.xml index 555a2ac5f3..71a651f189 100644 --- a/java/com/android/incallui/contactgrid/res/values-da/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-da/strings.xml @@ -1,4 +1,20 @@ + + "Ringer via %s" @@ -14,6 +30,8 @@ "I venteposition" "Videoopkald fra" "Wi-Fi-videoopkald fra" + "Anmodning om opgradering til et videoopkald fra" + "Anmodning om opgradering til et Wi-Fi-videoopkald fra" "Opkald fra" "Arbejdsopkald fra" "Indgående opkald via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-de/strings.xml b/java/com/android/incallui/contactgrid/res/values-de/strings.xml index 3d3838ca24..d69e0f6bb6 100644 --- a/java/com/android/incallui/contactgrid/res/values-de/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-de/strings.xml @@ -1,4 +1,20 @@ + + "Anruf über %s" @@ -14,6 +30,8 @@ "Anruf wird gehalten" "Videoanruf von" "WLAN-Videoanruf von" + "Anfrage für Upgrade auf Videoanruf von" + "Anfrage für Upgrade auf Videoanruf über WLAN von" "Anruf von" "Geschäftlicher Anruf von" "Eingehender Anruf über %s" diff --git a/java/com/android/incallui/contactgrid/res/values-el/strings.xml b/java/com/android/incallui/contactgrid/res/values-el/strings.xml index 337da7b034..954e7b75d2 100644 --- a/java/com/android/incallui/contactgrid/res/values-el/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-el/strings.xml @@ -1,4 +1,20 @@ + + "Κλήση μέσω %s" @@ -14,6 +30,8 @@ "Σε αναμονή" "Βιντεοκλήση από" "Βιντεοκλήση μέσω Wi-Fi από" + "Αίτημα αναβάθμισης βίντεο από" + "Αίτημα αναβάθμισης βίντεο Wi-Fi από" "Κλήση από" "Κλήση από το γραφείο από" "Εισερχόμενη κλήση μέσω %s" diff --git a/java/com/android/incallui/contactgrid/res/values-en-rAU/strings.xml b/java/com/android/incallui/contactgrid/res/values-en-rAU/strings.xml index 3748db2f40..a1402ff5c4 100644 --- a/java/com/android/incallui/contactgrid/res/values-en-rAU/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-en-rAU/strings.xml @@ -1,4 +1,20 @@ + + "Calling via %s" @@ -14,6 +30,8 @@ "On hold" "Video call from" "Wi-Fi video call from" + "Video upgrade request from" + "Wi-Fi video upgrade request from" "Call from" "Work call from" "Incoming via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-en-rGB/strings.xml b/java/com/android/incallui/contactgrid/res/values-en-rGB/strings.xml index 3748db2f40..a1402ff5c4 100644 --- a/java/com/android/incallui/contactgrid/res/values-en-rGB/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-en-rGB/strings.xml @@ -1,4 +1,20 @@ + + "Calling via %s" @@ -14,6 +30,8 @@ "On hold" "Video call from" "Wi-Fi video call from" + "Video upgrade request from" + "Wi-Fi video upgrade request from" "Call from" "Work call from" "Incoming via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-en-rIN/strings.xml b/java/com/android/incallui/contactgrid/res/values-en-rIN/strings.xml index 3748db2f40..a1402ff5c4 100644 --- a/java/com/android/incallui/contactgrid/res/values-en-rIN/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-en-rIN/strings.xml @@ -1,4 +1,20 @@ + + "Calling via %s" @@ -14,6 +30,8 @@ "On hold" "Video call from" "Wi-Fi video call from" + "Video upgrade request from" + "Wi-Fi video upgrade request from" "Call from" "Work call from" "Incoming via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-es-rUS/strings.xml b/java/com/android/incallui/contactgrid/res/values-es-rUS/strings.xml index fa56849279..abb2b01d96 100644 --- a/java/com/android/incallui/contactgrid/res/values-es-rUS/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-es-rUS/strings.xml @@ -1,4 +1,20 @@ + + "Llamada por medio de %s" @@ -14,6 +30,8 @@ "En espera" "Videollamada de" "Videollamada con Wi-Fi de" + "Actualización a video solicitada por" + "Actualización a video con Wi-Fi solicitada por" "Llamada de" "Llamada laboral de" "Entrante por medio de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-es/strings.xml b/java/com/android/incallui/contactgrid/res/values-es/strings.xml index 1d57f9c6fd..ef7c45774b 100644 --- a/java/com/android/incallui/contactgrid/res/values-es/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-es/strings.xml @@ -1,4 +1,20 @@ + + "Llamada a través de %s" @@ -14,6 +30,8 @@ "En espera" "Videollamada de" "Videollamada por Wi-Fi de" + "Solicitud de actualización de videollamada de" + "Solicitud de actualización de videollamada por Wi-Fi de" "Llamada de" "Llamada de trabajo de" "Recibida a través de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-et/strings.xml b/java/com/android/incallui/contactgrid/res/values-et/strings.xml index 2d81062f4b..b91f073d0b 100644 --- a/java/com/android/incallui/contactgrid/res/values-et/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-et/strings.xml @@ -1,4 +1,20 @@ + + "Kõne edastab %s" @@ -14,6 +30,8 @@ "Ootel" "Videokõne kontaktilt" "WiFi-videokõne kontaktilt" + "Video täiendamise taotlus:" + "WiFi kaudu video täiendamise taotlus:" "Kõne kontaktilt" "Töökõne kontaktilt" "Sissetulev kõne teenusepakkuja %s kaudu" diff --git a/java/com/android/incallui/contactgrid/res/values-eu/strings.xml b/java/com/android/incallui/contactgrid/res/values-eu/strings.xml index f08347bf06..ba7995ad9a 100644 --- a/java/com/android/incallui/contactgrid/res/values-eu/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-eu/strings.xml @@ -1,4 +1,20 @@ + + "%s bidez deitzen" @@ -14,6 +30,8 @@ "Zain" "Bideo-deia:" "Wi-Fi bidezko bideo-deia:" + "Bideo-dei bat egiteko eskaera bidali dizu erabiltzaile honek:" + "Wi-Fi bidezko bideo-dei bat egiteko eskaera bidali dizu erabiltzaile honek:" "Deia:" "Laneko deia:" "%s bidez jasotzen" diff --git a/java/com/android/incallui/contactgrid/res/values-fa/strings.xml b/java/com/android/incallui/contactgrid/res/values-fa/strings.xml index 0dfc0f41fb..40873ca158 100644 --- a/java/com/android/incallui/contactgrid/res/values-fa/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-fa/strings.xml @@ -1,4 +1,20 @@ + + "تماس از طریق %s" @@ -14,6 +30,8 @@ "درانتظار" "تماس ویدئویی از" "‏تماس ویدئویی Wi-Fi از" + "درخواست ارتقای تماس ویدیویی از" + "‏در خواست ارتقای تماس ویدیویی Wi-Fi از" "تماس از" "تماس کاری از" "تماس‌های ورودی ازطریق %s" diff --git a/java/com/android/incallui/contactgrid/res/values-fi/strings.xml b/java/com/android/incallui/contactgrid/res/values-fi/strings.xml index 00503bf2f3..241fef5a18 100644 --- a/java/com/android/incallui/contactgrid/res/values-fi/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-fi/strings.xml @@ -1,4 +1,20 @@ + + "Käytetään operaattoria %s" @@ -14,6 +30,8 @@ "Pidossa" "Videopuhelu henkilöltä" "Wi-Fi-videopuhelu henkilöltä" + "Videoon siirtymispyyntö, jonka lähettäjä on" + "Wi-Fi-videopuheluun siirtymispyyntö, jonka lähettäjän on" "Puhelu henkilöltä" "Työpuhelu henkilöltä" "Saapuva puhelu (%s)" diff --git a/java/com/android/incallui/contactgrid/res/values-fr-rCA/strings.xml b/java/com/android/incallui/contactgrid/res/values-fr-rCA/strings.xml index ee0196d980..3ffc1e9183 100644 --- a/java/com/android/incallui/contactgrid/res/values-fr-rCA/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-fr-rCA/strings.xml @@ -1,4 +1,20 @@ + + "Appel par %s en cours…" @@ -14,6 +30,8 @@ "En attente" "Appel vidéo de" "Appel vidéo Wi-Fi de" + "Demande de mise à niveau vidéo de" + "Demande de mise à niveau vidéo Wi-Fi de" "Appel de" "Appel professionnel de" "Appel entrant par %s" diff --git a/java/com/android/incallui/contactgrid/res/values-fr/strings.xml b/java/com/android/incallui/contactgrid/res/values-fr/strings.xml index 9849ad6230..0db6ae0894 100644 --- a/java/com/android/incallui/contactgrid/res/values-fr/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-fr/strings.xml @@ -1,4 +1,20 @@ + + "Appel via %s" @@ -14,6 +30,8 @@ "En attente" "Appel vidéo de" "Appel vidéo Wi-Fi de" + "Demande de passage en mode vidéo par" + "Demande de passage en mode vidéo Wi-Fi par" "Appel de" "Appel professionnel de" "Appel entrant via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-gl/strings.xml b/java/com/android/incallui/contactgrid/res/values-gl/strings.xml index c85f336b83..2970014549 100644 --- a/java/com/android/incallui/contactgrid/res/values-gl/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-gl/strings.xml @@ -1,4 +1,20 @@ + + "Chamando a través de %s" @@ -14,6 +30,8 @@ "En espera" "Videochamada de" "Videochamada por wifi de" + "Solicitude de actualización a videochamada de" + "Solicitude de actualización a videochamada por wifi de" "Chamada de" "Chamada de traballo de" "Chamada entrante a través de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-gu/strings.xml b/java/com/android/incallui/contactgrid/res/values-gu/strings.xml index 5179cc0cbe..220bebe396 100644 --- a/java/com/android/incallui/contactgrid/res/values-gu/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-gu/strings.xml @@ -1,4 +1,20 @@ + + "%s મારફતે કૉલ કરી રહ્યાં છે" @@ -14,6 +30,8 @@ "હોલ્ડ પર" "આમના તરફથી વિડિઓ કૉલ" "આમના તરફથી Wi-Fi વિડિઓ કૉલ" + "આમના તરફથી વિડિઓ અપગ્રેડની વિનંતી" + "આમના તરફથી Wi-Fi વિડિઓ અપગ્રેડની વિનંતી" "આમના તરફથી કૉલ" "આમના તરફથી કાર્ય કૉલ" "%s મારફતે ઇનકમિંગ" diff --git a/java/com/android/incallui/contactgrid/res/values-hi/strings.xml b/java/com/android/incallui/contactgrid/res/values-hi/strings.xml index dec7b629d9..da128b644e 100644 --- a/java/com/android/incallui/contactgrid/res/values-hi/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-hi/strings.xml @@ -1,4 +1,20 @@ + + "%s के माध्यम से कॉल किया जा रहा है" @@ -14,6 +30,8 @@ "होल्ड पर" "इससे वीडियो कॉल" "इससे वाई-फ़ाई वीडियो कॉल" + "इसकी ओर से वीडियो में अपग्रेड करने का अनुरोध" + "इसकी ओर से वाई-फ़ाई वीडियो में अपग्रेड करने का अनुरोध" "इससे कॉल" "इससे कार्य संबंधी कॉल" "%s की ओर से इनकमिंग" diff --git a/java/com/android/incallui/contactgrid/res/values-hr/strings.xml b/java/com/android/incallui/contactgrid/res/values-hr/strings.xml index d7023ac24a..24429a2486 100644 --- a/java/com/android/incallui/contactgrid/res/values-hr/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-hr/strings.xml @@ -1,4 +1,20 @@ + + "Pozivanje putem operatera %s" @@ -14,6 +30,8 @@ "Na čekanju" "Videopoziv s broja" "Videopoziv putem Wi-Fi veze s broja" + "Video upgrade request from" + "Wi-Fi video upgrade request from" "Poziv s broja" "Poslovni poziv s broja" "Dolazni pozivi putem davatelja %s" diff --git a/java/com/android/incallui/contactgrid/res/values-hu/strings.xml b/java/com/android/incallui/contactgrid/res/values-hu/strings.xml index f7da92322c..600b69f6d2 100644 --- a/java/com/android/incallui/contactgrid/res/values-hu/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-hu/strings.xml @@ -1,4 +1,20 @@ + + "Hívás a(z) %s szolgáltatón keresztül" @@ -14,6 +30,8 @@ "Várakoztatva" "Videohívás a következőtől:" "Wi-Fi-videohívás a következőtől:" + "Videófrissítési kérelem a következőtől" + "Wi-Fi-videófrissítési kérelem a következőtől" "Hívás a következőtől:" "Munkahelyi hívás a következőről:" "Bejövő hívás a következőn keresztül: %s" diff --git a/java/com/android/incallui/contactgrid/res/values-hy/strings.xml b/java/com/android/incallui/contactgrid/res/values-hy/strings.xml index 6384fa9243..88a49eb487 100644 --- a/java/com/android/incallui/contactgrid/res/values-hy/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-hy/strings.xml @@ -1,4 +1,20 @@ + + "Զանգում է %s-ի միջոցով" @@ -14,6 +30,8 @@ "Սպասում" "Տեսազանգ հետևյալ բաժանորդից՝" "Wi-Fi տեսազանգ հետևյալ բաժանորդից՝" + "Տեսազանգին անցնելու խնդրանք հետևյալ օգտատիրոջից՝" + "Wi-Fi-ի միջոցով տեսազանգին անցնելու խնդրանք հետևյալ օգտատիրոջից՝" "Զանգ հետևյալ բաժանորդից՝" "Գործնական զանգ հետևյալ բաժանորդից՝" "Մուտքային զանգ %s ցանցից" diff --git a/java/com/android/incallui/contactgrid/res/values-in/strings.xml b/java/com/android/incallui/contactgrid/res/values-in/strings.xml index 75568387b7..f6735832a9 100644 --- a/java/com/android/incallui/contactgrid/res/values-in/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-in/strings.xml @@ -1,4 +1,20 @@ + + "Menelepon melalui %s" @@ -14,6 +30,8 @@ "Ditangguhkan" "Video call dari" "Video call Wi-Fi dari" + "Permintaan upgrade video dari" + "Permintaan upgrade video Wi-Fi dari" "Telepon dari" "Panggilan telepon kerja dari" "Masuk melalui %s" diff --git a/java/com/android/incallui/contactgrid/res/values-is/strings.xml b/java/com/android/incallui/contactgrid/res/values-is/strings.xml index 86d577c648..9e830312d7 100644 --- a/java/com/android/incallui/contactgrid/res/values-is/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-is/strings.xml @@ -1,4 +1,20 @@ + + "Hringt í gegnum %s" @@ -14,6 +30,8 @@ "Í bið" "Myndsímtal berst frá" "Wi-Fi myndsímtal berst frá" + "Beiðni um að uppfæra í myndsímtal frá" + "Beiðni um að uppfæra í Wi-Fi myndsímtal frá" "Símtal berst frá" "Vinnusímtal berst frá" "Berst í gegnum %s" diff --git a/java/com/android/incallui/contactgrid/res/values-it/strings.xml b/java/com/android/incallui/contactgrid/res/values-it/strings.xml index 9576a6d958..76958cf72a 100644 --- a/java/com/android/incallui/contactgrid/res/values-it/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-it/strings.xml @@ -1,4 +1,20 @@ + + "Chiamate tramite %s" @@ -14,6 +30,8 @@ "In attesa" "Videochiamata da" "Videochiamata Wi-Fi da" + "Upgrade della videochiamata richiesto da" + "Upgrade della videochiamata Wi-Fi richiesto da" "Chiamata da" "Chiamata di lavoro da" "In arrivo tramite %s" diff --git a/java/com/android/incallui/contactgrid/res/values-iw/strings.xml b/java/com/android/incallui/contactgrid/res/values-iw/strings.xml index 62771d18f1..b06c3212cd 100644 --- a/java/com/android/incallui/contactgrid/res/values-iw/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-iw/strings.xml @@ -1,4 +1,20 @@ + + "שיחה באמצעות %s" @@ -14,6 +30,8 @@ "בהמתנה" "שיחת וידאו מאת" "‏שיחת וידאו ב-Wi-Fi מאת" + "בקשה לשדרוג לשיחת וידאו מאת" + "‏בקשת לשדרוג לשיחת וידאו ברשת Wi-Fi מאת" "שיחה מאת" "שיחת עבודה מאת" "שיחה נכנסת באמצעות %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ja/strings.xml b/java/com/android/incallui/contactgrid/res/values-ja/strings.xml index a5d958c602..a2fce09cfa 100644 --- a/java/com/android/incallui/contactgrid/res/values-ja/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ja/strings.xml @@ -1,4 +1,20 @@ + + "%s で発信中" @@ -14,6 +30,8 @@ "保留中" "ビデオハングアウトの着信" "Wi-Fi ビデオハングアウトの着信" + "ビデオハングアウトへの変更リクエスト" + "Wi-Fi ビデオハングアウトへの変更リクエスト" "着信" "仕事の通話の着信" "%s から着信" diff --git a/java/com/android/incallui/contactgrid/res/values-ka/strings.xml b/java/com/android/incallui/contactgrid/res/values-ka/strings.xml index 7848f595eb..cb0094d370 100644 --- a/java/com/android/incallui/contactgrid/res/values-ka/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ka/strings.xml @@ -1,4 +1,20 @@ + + "მიმდინარეობს დარეკვა %s-ის მეშვეობით" @@ -14,6 +30,8 @@ "მოცდის რეჟიმში" "ვიდეოზარი აბონენტისგან" "Wi-Fi ვიდეოზარი აბონენტისგან" + "ვიდეოზარზე გადასვლის მოთხოვნა კონტაქტისგან:" + "Wi-Fi ვიდეოზარზე გადასვლის მოთხოვნა კონტაქტისგან:" "ზარი აბონენტისგან" "სამსახურებრივი ზარი აბონენტისგან" "შემომავალი, %s-იდან" diff --git a/java/com/android/incallui/contactgrid/res/values-kk/strings.xml b/java/com/android/incallui/contactgrid/res/values-kk/strings.xml index aaf260b9a1..3fc68c2dbd 100644 --- a/java/com/android/incallui/contactgrid/res/values-kk/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-kk/strings.xml @@ -1,4 +1,20 @@ + + "%s арқылы қоңырау шалу" @@ -14,6 +30,8 @@ "Күтуде" "Бейне қоңырау шалушы:" "Wi-Fi бейне қоңырау шалушы:" + "Бейне қоңырауға ауысу өтініші:" + "Wi-Fi арқылы бейне қоңырауға ауысу өтініші:" "Қоңырау шалушы:" "Жұмыстан қоңырау шалушы:" "%s арқылы кіріс" diff --git a/java/com/android/incallui/contactgrid/res/values-km/strings.xml b/java/com/android/incallui/contactgrid/res/values-km/strings.xml index b2bfc96289..7ee21ba705 100644 --- a/java/com/android/incallui/contactgrid/res/values-km/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-km/strings.xml @@ -1,4 +1,20 @@ + + "កំពុង​ហៅតាម %s" @@ -14,6 +30,8 @@ "កំពុង​រង់ចាំ" "ការ​ហៅ​ជា​វីដេអូ​ពី" "ការ​ហៅ​ជា​វីដេអូ​តាម Wi-Fi ពី" + "ស្នើ​ដំឡើង​កំណែ​វីដេអូ​ពី" + "ស្នើ​ដំឡើង​កំណែ​វីដេអូតាម Wi-Fi ពី" "ការ​ហៅ​ពី" "ការ​ហៅ​ការងារ​ពី" "ការ​ហៅ​ចូល​តាម %s" diff --git a/java/com/android/incallui/contactgrid/res/values-kn/strings.xml b/java/com/android/incallui/contactgrid/res/values-kn/strings.xml index 0ee73bacca..e90bd6b540 100644 --- a/java/com/android/incallui/contactgrid/res/values-kn/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-kn/strings.xml @@ -1,4 +1,20 @@ + + "%s ಮೂಲಕ ಕರೆ ಮಾಡಲಾಗುತ್ತಿದೆ" @@ -14,6 +30,8 @@ "ಹೋಲ್ಡ್‌ ಮಾಡಲಾಗಿದೆ" "ಇವರಿಂದ ವೀಡಿಯೊ ಕರೆ" "ಇವರಿಂದ ವೈ-ಫೈ ವೀಡಿಯೊ ಕರೆ" + "ಇದರಿಂದ ವೀಡಿಯೊ ಅಪ್‌ಗ್ರೇಡ್ ವಿನಂತಿ" + "ಇದರಿಂದ ವೈಫೈ ವೀಡಿಯೊ ಅಪ್‌ಗ್ರೇಡ್ ವಿನಂತಿ" "ಇವರಿಂದ ಕರೆ" "ಇವರಿಂದ ಕೆಲಸದ ಕರೆ" "%s ಮೂಲಕ ಒಳಬರುತ್ತಿರುವ ಕರೆ" diff --git a/java/com/android/incallui/contactgrid/res/values-ko/strings.xml b/java/com/android/incallui/contactgrid/res/values-ko/strings.xml index a5a34e3d7b..85dd613bb4 100644 --- a/java/com/android/incallui/contactgrid/res/values-ko/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ko/strings.xml @@ -1,4 +1,20 @@ + + "%s을(를) 통해 거는 전화" @@ -14,6 +30,8 @@ "대기 중" "화상 통화 발신:" "Wi-Fi 화상 통화 발신:" + "화상 통화로의 업그레이드를 요청한 사용자:" + "Wi-Fi 화상 통화로의 업그레이드를 요청한 사용자:" "통화 발신:" "업무 통화 발신:" "%s을(를) 통해 걸려온 전화" diff --git a/java/com/android/incallui/contactgrid/res/values-ky/strings.xml b/java/com/android/incallui/contactgrid/res/values-ky/strings.xml index a020e70d1d..6028022e1b 100644 --- a/java/com/android/incallui/contactgrid/res/values-ky/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ky/strings.xml @@ -1,4 +1,20 @@ + + "%s аркылуу чалуу" @@ -14,6 +30,8 @@ "Күтүү режиминде" "Видео чалуу" "Wi-Fi аркылуу видео чалуу:" + "Видеону кийинки версияга көтөрүү сурамы:" + "Wi-Fi аркылуу видеомаектешүү сурамы:" "Чалып жатат:" "Иш боюнча чалып жатат:" "%s аркылуу чалып жатат" diff --git a/java/com/android/incallui/contactgrid/res/values-lo/strings.xml b/java/com/android/incallui/contactgrid/res/values-lo/strings.xml index 96c1dcf11e..6ad1178186 100644 --- a/java/com/android/incallui/contactgrid/res/values-lo/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-lo/strings.xml @@ -1,4 +1,20 @@ + + "ກຳລັງໂທຜ່ານ %s" @@ -14,6 +30,8 @@ "ຖືສາຍລໍຖ້າ" "ການໂທວິດີໂອຈາກ" "Wi-Fi video call from" + "ຄຳຮ້ອງອັບເກຣດວິດີໂອຈາກ" + "ຄຳຮ້ອງອັບເກຣດວິດີໂອ Wi-Fi ຈາກ" "ການໂທຈາກ" "Work call from" "ສາຍໂທເຂົ້າ​ຈາກ %s" diff --git a/java/com/android/incallui/contactgrid/res/values-lt/strings.xml b/java/com/android/incallui/contactgrid/res/values-lt/strings.xml index e8e42fc9bf..3cca55c46b 100644 --- a/java/com/android/incallui/contactgrid/res/values-lt/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-lt/strings.xml @@ -1,4 +1,20 @@ + + "Skambinama naudojantis „%s“ paslaugomis" @@ -14,6 +30,8 @@ "Sulaikytas" "Vaizdo skambutis nuo" "„Wi-Fi“ vaizdo skambutis nuo" + "Vaizdo skambučio naujovinimo užklausa nuo" + "„Wi-Fi“ vaizdo skambučio naujovinimo užklausa nuo" "Skambutis nuo" "Darbo skambutis nuo" "Gaunama per „%s“" diff --git a/java/com/android/incallui/contactgrid/res/values-lv/strings.xml b/java/com/android/incallui/contactgrid/res/values-lv/strings.xml index 1b3823f1e9..87e5c90491 100644 --- a/java/com/android/incallui/contactgrid/res/values-lv/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-lv/strings.xml @@ -1,4 +1,20 @@ + + "Zvanu nodrošina %s" @@ -14,6 +30,8 @@ "Aizturēts" "Videozvans no:" "Wi-Fi videozvans no:" + "Videozvana jaunināšanas pieprasījums no:" + "Wi-Fi videozvana jaunināšanas pieprasījums no:" "Zvans no:" "Darba zvans no:" "Ienākošie zvani, ko nodrošina %s" diff --git a/java/com/android/incallui/contactgrid/res/values-mk/strings.xml b/java/com/android/incallui/contactgrid/res/values-mk/strings.xml index 104468359a..fcab8f4527 100644 --- a/java/com/android/incallui/contactgrid/res/values-mk/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-mk/strings.xml @@ -1,4 +1,20 @@ + + "Повикување преку %s" @@ -14,6 +30,8 @@ "На чекање" "Видеоповик од" "Видеоповик преку Wi-Fi од" + "Барање за надградба на видеоповик од" + "Барање за надградба на видеоповик преку Wi-Fi од" "Повик од" "Работен повик од" "Дојдовни повици преку %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ml/strings.xml b/java/com/android/incallui/contactgrid/res/values-ml/strings.xml index 519e9f4787..1dfb46a931 100644 --- a/java/com/android/incallui/contactgrid/res/values-ml/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ml/strings.xml @@ -1,4 +1,20 @@ + + "%s മുഖേന വിളിക്കുന്നു" @@ -14,6 +30,8 @@ "ഹോള്‍ഡിലാണ്" "ഈ വ്യക്തിയിൽ നിന്നുള്ള വീഡിയോ കോൾ" "ഈ വ്യക്തിയിൽ നിന്നുള്ള Wi-Fi വീഡിയോ കോൾ" + "ഇനിപ്പറയുന്നതിൽ നിന്നുള്ള വീഡിയോ അപ്‌ഗ്രേഡ് അഭ്യർത്ഥന" + "ഇനിപ്പറയുന്നതിൽ നിന്നുള്ള Wi-Fi വീഡിയോ അപ്‌ഗ്രേഡ് അഭ്യർത്ഥന" "ഈ വ്യക്തിയിൽ നിന്നുള്ള കോൾ" "ഈ വ്യക്തിയിൽ നിന്നുള്ള ഔദ്യോഗിക കോൾ" "%s മുഖേനയുള്ള ഇൻകമിംഗ്" diff --git a/java/com/android/incallui/contactgrid/res/values-mn/strings.xml b/java/com/android/incallui/contactgrid/res/values-mn/strings.xml index c87e071798..c93bd468a5 100644 --- a/java/com/android/incallui/contactgrid/res/values-mn/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-mn/strings.xml @@ -1,4 +1,20 @@ + + "%s-р залгаж байна" @@ -14,6 +30,8 @@ "Хүлээлгэнд байгаа" "Видео дуудлага" "Wi-Fi видео дуудлага" + "Видеог сайжруулах хүсэлт" + "Wi-Fi видеог сайжруулах хүсэлт" "Дуудлага" "Ажлын дуудлага" "%s-р ирж байна" diff --git a/java/com/android/incallui/contactgrid/res/values-mr/strings.xml b/java/com/android/incallui/contactgrid/res/values-mr/strings.xml index 6a0181774c..81d76dd704 100644 --- a/java/com/android/incallui/contactgrid/res/values-mr/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-mr/strings.xml @@ -1,4 +1,20 @@ + + "%s द्वारे कॉल करीत आहे" @@ -14,6 +30,8 @@ "होल्ड वर" "यावरून व्हिडिओ कॉल" "Wi-Fi व्हिडिओ कॉल" + "याकडून व्हिडिओ श्रेणीसुधारणेची विनंती" + "याकडून Wi-Fi व्हिडिओ श्रेणीसुधारणेची विनंती" "यावरील कॉल" "कडून कार्य कॉल" "%s द्वारे येणारे" diff --git a/java/com/android/incallui/contactgrid/res/values-ms/strings.xml b/java/com/android/incallui/contactgrid/res/values-ms/strings.xml index 17ca753691..815df7947b 100644 --- a/java/com/android/incallui/contactgrid/res/values-ms/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ms/strings.xml @@ -1,4 +1,20 @@ + + "Memanggil melalui %s" @@ -14,6 +30,8 @@ "Panggilan ditahan" "Panggilan video daripada" "Panggilan video Wi-Fi daripada" + "Permintaan peningkatan video daripada" + "Permintaan peningkatan video Wi-Fi daripada" "Panggilan daripada" "Panggilan kerja daripada" "Panggilan masuk melalui %s" diff --git a/java/com/android/incallui/contactgrid/res/values-my/strings.xml b/java/com/android/incallui/contactgrid/res/values-my/strings.xml index 14770cfaf8..3c8a88e417 100644 --- a/java/com/android/incallui/contactgrid/res/values-my/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-my/strings.xml @@ -1,4 +1,20 @@ + + "%s မှတစ်ဆင့် ခေါ်ဆိုနေသည်" @@ -14,6 +30,8 @@ "ဖုန်းကိုင်ထားသည်" "အောက်ပါထံမှ ဗီဒီယိုခေါ်ဆိုမှု" "အောက်ပါထံမှ Wi-Fi ဗီဒီယိုခေါ်ဆိုမှု" + "အောက်ပါထံမှ ဗီဒီယိုအဆင့်မြှင့်ခြင်းတောင်းဆိုချက်" + "အောက်ပါထံမှ Wi-Fi ဗီဒီယိုအဆင့်မြှင့်ခြင်းတောင်းဆိုချက်" "အောက်ပါထံမှ ခေါ်ဆိုမှု" "အောက်ပါထံမှ အလုပ်ခေါ်ဆိုမှု" "%s မှတစ်ဆင့် အဝင်ခေါ်ဆိုမှု" diff --git a/java/com/android/incallui/contactgrid/res/values-nb/strings.xml b/java/com/android/incallui/contactgrid/res/values-nb/strings.xml index fbf98954c8..9ad8d0d6aa 100644 --- a/java/com/android/incallui/contactgrid/res/values-nb/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-nb/strings.xml @@ -1,4 +1,20 @@ + + "Ringer via %s" @@ -14,6 +30,8 @@ "På vent" "Videoanrop fra" "Wi-Fi-videoanrop fra" + "Forespørsel om videooppdatering fra" + "Forespørsel om Wi-Fi-videooppdatering fra" "Anrop fra" "Jobbrelatert anrop fra" "Innkommende via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ne/strings.xml b/java/com/android/incallui/contactgrid/res/values-ne/strings.xml index d618af43f8..e6e65c5fbd 100644 --- a/java/com/android/incallui/contactgrid/res/values-ne/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ne/strings.xml @@ -1,4 +1,20 @@ + + "%s मार्फत कल गर्दै" @@ -14,6 +30,8 @@ "होल्डमा छ" "निम्नबाट भिडियो कल आएको छ" "निम्नबाट Wi-Fi मार्फत गरिएको भिडियो कल आएको छ" + "निम्नबाट आएको भिडियो अपग्रेडसम्बन्धी अनुरोध" + "निम्नबाट आएको Wi-Fi मार्फत भिडियो अपग्रेडसम्बन्धी अनुरोध" "निम्नबाट कल आएको छ" "निम्नबाट कार्य सम्बन्धी कल आएको छ" "%s मार्फत गरिएको आगमन कल" diff --git a/java/com/android/incallui/contactgrid/res/values-nl/strings.xml b/java/com/android/incallui/contactgrid/res/values-nl/strings.xml index 10dcd13f04..828a7a2284 100644 --- a/java/com/android/incallui/contactgrid/res/values-nl/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-nl/strings.xml @@ -1,4 +1,20 @@ + + "Bellen via %s" @@ -14,6 +30,8 @@ "In de wacht" "Videogesprek van" "Wifi-videogesprek van" + "Upgradeverzoek voor videogesprek van" + "Upgradeverzoek voor wifi-videogesprek van" "Oproep van" "Zakelijke oproep van" "Inkomend via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-no/strings.xml b/java/com/android/incallui/contactgrid/res/values-no/strings.xml index fbf98954c8..9ad8d0d6aa 100644 --- a/java/com/android/incallui/contactgrid/res/values-no/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-no/strings.xml @@ -1,4 +1,20 @@ + + "Ringer via %s" @@ -14,6 +30,8 @@ "På vent" "Videoanrop fra" "Wi-Fi-videoanrop fra" + "Forespørsel om videooppdatering fra" + "Forespørsel om Wi-Fi-videooppdatering fra" "Anrop fra" "Jobbrelatert anrop fra" "Innkommende via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-pa/strings.xml b/java/com/android/incallui/contactgrid/res/values-pa/strings.xml index fb261d649a..1d4801c431 100644 --- a/java/com/android/incallui/contactgrid/res/values-pa/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-pa/strings.xml @@ -1,4 +1,20 @@ + + "%s ਰਾਹੀਂ ਕਾਲ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" @@ -14,6 +30,8 @@ "ਰੋਕ ਕੇ ਰੱਖੀ ਗਈ" "ਇਸ ਤੋਂ ਵੀਡੀਓ ਕਾਲ" "ਇਸ ਤੋਂ Wi-Fi ਵੀਡੀਓ ਕਾਲ" + "ਇਸ ਤੋਂ ਵੀਡੀਓ ਅੱਪਗ੍ਰੇਡ ਬੇਨਤੀ" + "ਇਸ ਤੋਂ Wi-Fi ਵੀਡੀਓ ਅੱਪਗ੍ਰੇਡ ਬੇਨਤੀ" "ਇਸ ਤੋਂ ਕਾਲ" "ਇਸ ਤੋਂ ਕੰਮ ਸਬੰਧੀ ਕਾਲ" "%s ਰਾਹੀਂ ਇਨਕਮਿੰਗ" diff --git a/java/com/android/incallui/contactgrid/res/values-pl/strings.xml b/java/com/android/incallui/contactgrid/res/values-pl/strings.xml index 998e49e3ef..586f39e651 100644 --- a/java/com/android/incallui/contactgrid/res/values-pl/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-pl/strings.xml @@ -1,4 +1,20 @@ + + "Dzwonię przez %s" @@ -14,6 +30,8 @@ "Oczekujące" "Rozmowa wideo z:" "Rozmowa wideo przez Wi-Fi z:" + "Prośba o przejście na rozmowę wideo wysłana przez:" + "Prośba o przejście na rozmowę wideo przez Wi-Fi wysłana przez:" "Połączenie z:" "Połączenie służbowe z:" "Przychodzące z sieci %s" diff --git a/java/com/android/incallui/contactgrid/res/values-pt-rBR/strings.xml b/java/com/android/incallui/contactgrid/res/values-pt-rBR/strings.xml index 4365cba595..a445cdf600 100644 --- a/java/com/android/incallui/contactgrid/res/values-pt-rBR/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-pt-rBR/strings.xml @@ -1,4 +1,20 @@ + + "Ligando via %s" @@ -14,6 +30,8 @@ "Em espera" "Videochamada de" "Videochamada via Wi-Fi de" + "Solicitação de upgrade de vídeo de" + "Solicitação de upgrade de vídeo por Wi-Fi de" "Chamada de" "Chamada de trabalho de" "Chamada de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-pt-rPT/strings.xml b/java/com/android/incallui/contactgrid/res/values-pt-rPT/strings.xml index 55d3c26950..ca07b3fc97 100644 --- a/java/com/android/incallui/contactgrid/res/values-pt-rPT/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-pt-rPT/strings.xml @@ -1,4 +1,20 @@ + + "A telefonar através de %s…" @@ -14,6 +30,8 @@ "Em espera" "Videochamada de" "Videochamada a partir de rede Wi-Fi de" + "Pedido de atualização para videochamada de" + "Pedido de atualização para videochamada por Wi-Fi de" "Chamada de" "Chamada de trabalho de" "Chamada recebida através de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-pt/strings.xml b/java/com/android/incallui/contactgrid/res/values-pt/strings.xml index 4365cba595..a445cdf600 100644 --- a/java/com/android/incallui/contactgrid/res/values-pt/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-pt/strings.xml @@ -1,4 +1,20 @@ + + "Ligando via %s" @@ -14,6 +30,8 @@ "Em espera" "Videochamada de" "Videochamada via Wi-Fi de" + "Solicitação de upgrade de vídeo de" + "Solicitação de upgrade de vídeo por Wi-Fi de" "Chamada de" "Chamada de trabalho de" "Chamada de %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ro/strings.xml b/java/com/android/incallui/contactgrid/res/values-ro/strings.xml index f8d1c9b543..180a01f4c1 100644 --- a/java/com/android/incallui/contactgrid/res/values-ro/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ro/strings.xml @@ -1,4 +1,20 @@ + + "Se apelează prin %s" @@ -14,6 +30,8 @@ "În așteptare" "Apel video de la" "Apel video prin Wi-Fi de la" + "Solicitare de upgrade la apel video de la" + "Solicitare de upgrade la apel video prin Wi-Fi de la" "Apel primit de la" "Apel de serviciu de la" "Primite prin %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ru/strings.xml b/java/com/android/incallui/contactgrid/res/values-ru/strings.xml index dfbc08828b..e0a63518f3 100644 --- a/java/com/android/incallui/contactgrid/res/values-ru/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ru/strings.xml @@ -1,4 +1,20 @@ + + "Вызов через %s" @@ -14,6 +30,8 @@ "На удержании" "Видеовызов от" "Видеовызов по Wi-Fi от" + "Запрос на переход к видеовстрече от:" + "Запрос на переход к видеовстрече через Wi-Fi от:" "Вызов от" "Рабочий вызов от" "Входящий вызов (оператор: %s)" diff --git a/java/com/android/incallui/contactgrid/res/values-si/strings.xml b/java/com/android/incallui/contactgrid/res/values-si/strings.xml index 00ca2aa90b..451dc396ce 100644 --- a/java/com/android/incallui/contactgrid/res/values-si/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-si/strings.xml @@ -1,4 +1,20 @@ + + "%s හරහා අමතමින්" @@ -14,6 +30,8 @@ "රඳවා ගත්" "වෙතින් වීඩියෝ ඇමතුම" "වෙතින් Wi-Fi වීඩියෝ ඇමතුම" + "වෙතින් වීඩියෝ උත්ශ්‍රේණි කිරීමේ ඉල්ලීම" + "වෙතින් Wi-Fi වීඩියෝ උත්ශ්‍රේණි කිරීමේ ඉල්ලීම" "වෙතින් ඇමතුම" "වෙතින් කාර්යාල ඇමතුම" "%s හරහා එන" diff --git a/java/com/android/incallui/contactgrid/res/values-sk/strings.xml b/java/com/android/incallui/contactgrid/res/values-sk/strings.xml index 40039ee9aa..ae21ec855d 100644 --- a/java/com/android/incallui/contactgrid/res/values-sk/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sk/strings.xml @@ -1,4 +1,20 @@ + + "Voláte prostredníctvom poskytovateľa %s" @@ -14,6 +30,8 @@ "Podržané" "Videohovor od:" "Videohovor cez Wi-Fi od:" + "Žiadosť o inováciu na videohovor od používateľa" + "Žiadosť o inováciu na videohovor cez Wi-Fi od používateľa" "Hovor od:" "Pracovný hovor od:" "Prichádzajúci hovor prostredníctvom poskytovateľa %s" diff --git a/java/com/android/incallui/contactgrid/res/values-sl/strings.xml b/java/com/android/incallui/contactgrid/res/values-sl/strings.xml index f76b5cdacd..1d93d21a44 100644 --- a/java/com/android/incallui/contactgrid/res/values-sl/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sl/strings.xml @@ -1,4 +1,20 @@ + + "Klicanje prek ponudnika %s" @@ -14,6 +30,8 @@ "Zadržano" "Videoklic osebe" "Videoklic prek omrežja Wi-Fi osebe" + "Zahteva za nadgradnjo v video – zahteva osebe" + "Zahteva za nadgradnjo v video prek omrežja Wi-Fi – zahteva osebe" "Klic osebe" "Delovni klic osebe" "Dohodni klic prek storitve %s" diff --git a/java/com/android/incallui/contactgrid/res/values-sq/strings.xml b/java/com/android/incallui/contactgrid/res/values-sq/strings.xml index 34ec2d1f6b..8c28eb7eac 100644 --- a/java/com/android/incallui/contactgrid/res/values-sq/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sq/strings.xml @@ -1,4 +1,20 @@ + + "Telefonatë nëpërmjet %s" @@ -14,6 +30,8 @@ "Në pritje" "Telefonatë me video nga" "Telefonatë me video në Wi-Fi nga" + "Kërkesë për përmirësimin me video nga" + "Kërkesë për përmirësimin me video me Wi-Fi nga" "Telefonatë nga" "Telefonatë pune nga" "Telefonatë hyrëse nëpërmjet %s" diff --git a/java/com/android/incallui/contactgrid/res/values-sr/strings.xml b/java/com/android/incallui/contactgrid/res/values-sr/strings.xml index 9ad149905c..66ea45d6ec 100644 --- a/java/com/android/incallui/contactgrid/res/values-sr/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sr/strings.xml @@ -1,4 +1,20 @@ + + "Позивамо преко %s" @@ -14,6 +30,8 @@ "На чекању" "Видео позив од" "Wi-Fi видео позив од" + "Захтев за прелазак на видео позив од" + "Захтев за прелазак на видео позив преко Wi-Fi-ја од" "Позив од" "Пословни позив од" "Долазни позив преко %s" diff --git a/java/com/android/incallui/contactgrid/res/values-sv/strings.xml b/java/com/android/incallui/contactgrid/res/values-sv/strings.xml index d5dd15953e..931d9c98d5 100644 --- a/java/com/android/incallui/contactgrid/res/values-sv/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sv/strings.xml @@ -1,4 +1,20 @@ + + "Ringer med %s" @@ -14,6 +30,8 @@ "Parkerat" "Videosamtal från" "Wi-Fi-videosamtal från" + "Begäran om videouppgradering från" + "Begäran om uppgradering av Wi-Fi-video från" "Samtal från" "Jobbsamtal från" "Inkommande via %s" diff --git a/java/com/android/incallui/contactgrid/res/values-sw/strings.xml b/java/com/android/incallui/contactgrid/res/values-sw/strings.xml index 72bc26f588..581d7970a3 100644 --- a/java/com/android/incallui/contactgrid/res/values-sw/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-sw/strings.xml @@ -1,4 +1,20 @@ + + "Inapiga simu kupitia %s" @@ -14,6 +30,8 @@ "Imesitishwa" "Simu ya video kutoka kwa" "Simu ya video kupitia Wi-Fi kutoka kwa" + "Umetumiwa ombi ili ubadilishe utumie simu ya video na" + "Umetumiwa ombi ili ubadilishe utumie simu ya video kwenye Wi-Fi na" "Simu kutoka kwa" "Simu ya kazi kutoka kwa" "Simu zinazoingia kupitia %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ta/strings.xml b/java/com/android/incallui/contactgrid/res/values-ta/strings.xml index 2f5b1b81db..37ff87681b 100644 --- a/java/com/android/incallui/contactgrid/res/values-ta/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ta/strings.xml @@ -1,4 +1,20 @@ + + "%s வழியாக அழைக்கிறது" @@ -14,6 +30,8 @@ "ஹோல்டில் உள்ளது" "வீடியோ அழைப்பு:" "வைஃபை வீடியோ அழைப்பு:" + "வீடியோவை மேம்படுத்துவதற்கான கோரிக்கை:" + "வைஃபையில் வீடியோவை மேம்படுத்துவதற்கான கோரிக்கை:" "அழைப்பு:" "அழைப்பு (பணி) :" "%s மூலம் உள்வரும் அழைப்பு" diff --git a/java/com/android/incallui/contactgrid/res/values-te/strings.xml b/java/com/android/incallui/contactgrid/res/values-te/strings.xml index 52038dbf80..913c9448aa 100644 --- a/java/com/android/incallui/contactgrid/res/values-te/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-te/strings.xml @@ -1,4 +1,20 @@ + + "%s ద్వారా కాల్ చేస్తోంది" @@ -14,6 +30,8 @@ "హోల్డ్‌లో ఉంది" "వీరి నుండి వీడియో కాల్:" "వీరి నుండి Wi-Fi వీడియో కాల్:" + "వీరి నుండి వీడియో అప్‌గ్రేడ్ అభ్యర్థన" + "వీరి నుండి Wi-Fi వీడియో అప్‌గ్రేడ్ అభ్యర్థన" "వీరి నుండి కాల్:" "వీరి నుండి కార్యాలయ కాల్:" "%s ద్వారా ఇన్‌కమింగ్ కాల్" diff --git a/java/com/android/incallui/contactgrid/res/values-th/strings.xml b/java/com/android/incallui/contactgrid/res/values-th/strings.xml index 419db19cce..6503959e4f 100644 --- a/java/com/android/incallui/contactgrid/res/values-th/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-th/strings.xml @@ -1,4 +1,20 @@ + + "โทรผ่าน %s" @@ -14,6 +30,8 @@ "พักสาย" "แฮงเอาท์วิดีโอจาก" "แฮงเอาท์วิดีโอผ่าน Wi-Fi จาก" + "คำขออัปเกรดวิดีโอจาก" + "คำขออัปเกรดวิดีโอผ่าน Wi-Fi จาก" "โทรจาก" "โทรเรื่องงานจาก" "สายเรียกเข้าผ่าน %s" diff --git a/java/com/android/incallui/contactgrid/res/values-tl/strings.xml b/java/com/android/incallui/contactgrid/res/values-tl/strings.xml index 282ec106fb..7fa063b61e 100644 --- a/java/com/android/incallui/contactgrid/res/values-tl/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-tl/strings.xml @@ -1,4 +1,20 @@ + + "Tumatawag sa pamamagitan ng %s" @@ -14,6 +30,8 @@ "Naka-hold" "Video call mula kay" "Wi-Fi na video call mula kay" + "Kahilingan upang i-upgrade ang video mula kay" + "Kahilingan upang i-upgrade ang video gamit ang Wi-Fi mula kay" "Tawag mula kay" "Tawag sa trabaho mula kay" "Papasok sa pamamagitan ng %s" diff --git a/java/com/android/incallui/contactgrid/res/values-tr/strings.xml b/java/com/android/incallui/contactgrid/res/values-tr/strings.xml index 5ecbf35433..1ce565dcad 100644 --- a/java/com/android/incallui/contactgrid/res/values-tr/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-tr/strings.xml @@ -1,4 +1,20 @@ + + "%s üzerinden çağrı yapılıyor" @@ -14,6 +30,8 @@ "Beklemede" "Gelen video görüşmesi isteği:" "Gelen kablosuz video görüşmesi isteği:" + "Görüntülü görüşmeye geçme isteği alındı:" + "Kablosuz görüntülü görüşmeye geçme isteği alındı:" "Gelen çağrı:" "Gelen iş çağrısı:" "%s adlı sağlayıcı üzerinden gelen çağrı" diff --git a/java/com/android/incallui/contactgrid/res/values-uk/strings.xml b/java/com/android/incallui/contactgrid/res/values-uk/strings.xml index 7b84fb6500..0d4a595cad 100644 --- a/java/com/android/incallui/contactgrid/res/values-uk/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-uk/strings.xml @@ -1,4 +1,20 @@ + + "Виклик здійснюється через оператора %s" @@ -14,6 +30,8 @@ "Утримується" "Відеодзвінок від:" "Відеодзвінок через Wi-Fi від:" + "Запит на відеодзвінок від користувача" + "Запит на відеодзвінок через Wi-Fi від користувача" "Виклик від:" "Виклик на робочий телефон від:" "Вхідні виклики через оператора %s" diff --git a/java/com/android/incallui/contactgrid/res/values-ur/strings.xml b/java/com/android/incallui/contactgrid/res/values-ur/strings.xml index 6584181fb8..793e4879dd 100644 --- a/java/com/android/incallui/contactgrid/res/values-ur/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-ur/strings.xml @@ -1,4 +1,20 @@ + + "کالنگ بذریعہ %s" @@ -14,6 +30,8 @@ "ہولڈ پر ہے" "ویڈیو کال منجانب" "‏Wi-Fi ویڈیو کال منجانب" + "ویڈیو اپ گریڈ کی درخواست منجانب" + "‏Wi-Fi ویڈیو اپ گریڈ کی درخواست منجانب" "کال منجانب" "دفتری کال منجانب" "%s کے ذریعے آنے والی کال" diff --git a/java/com/android/incallui/contactgrid/res/values-uz/strings.xml b/java/com/android/incallui/contactgrid/res/values-uz/strings.xml index db11a1822e..a5ce1caeaf 100644 --- a/java/com/android/incallui/contactgrid/res/values-uz/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-uz/strings.xml @@ -1,4 +1,20 @@ + + "%s orqali qo‘ng‘rioq qilinmoqda" @@ -14,6 +30,8 @@ "Kutish rejimida" "Kimdan video qo‘ng‘iroq:" "Wi-Fi orqali kimdan video qo‘ng‘iroq:" + "Bu foydalanuvchi video suhbatga o‘tishni so‘ramoqda:" + "Bu foydalanuvchi Wi-Fi orqali video suhbatga o‘tishni so‘ramoqda:" "Kimdan qo‘ng‘iroq:" "Ish telefoniga kimdan qo‘ng‘iroq:" "Kiruvchi qo‘ng‘iroq (operator: %s)" diff --git a/java/com/android/incallui/contactgrid/res/values-vi/strings.xml b/java/com/android/incallui/contactgrid/res/values-vi/strings.xml index 340a115774..9ce0f18389 100644 --- a/java/com/android/incallui/contactgrid/res/values-vi/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-vi/strings.xml @@ -1,4 +1,20 @@ + + "Đang gọi điện qua %s" @@ -14,6 +30,8 @@ "Đang chờ" "Cuộc gọi điện video từ" "Cuộc gọi điện video qua Wi-Fi từ" + "Yêu cầu nâng cấp video từ" + "Yêu cầu nâng cấp video Wi-Fi từ" "Cuộc gọi từ" "Cuộc gọi về công việc từ" "Cuộc gọi đến qua %s" diff --git a/java/com/android/incallui/contactgrid/res/values-zh-rCN/strings.xml b/java/com/android/incallui/contactgrid/res/values-zh-rCN/strings.xml index 16031b8113..af5008af09 100644 --- a/java/com/android/incallui/contactgrid/res/values-zh-rCN/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-zh-rCN/strings.xml @@ -1,4 +1,20 @@ + + "正在通过%s进行通话" @@ -14,6 +30,8 @@ "保持" "视频通话来自:" "WLAN 视频通话来自:" + "视频通话升级请求来自:" + "WLAN 视频通话升级请求来自:" "通话来自:" "工作通话来自:" "有人通过 %s 来电" diff --git a/java/com/android/incallui/contactgrid/res/values-zh-rHK/strings.xml b/java/com/android/incallui/contactgrid/res/values-zh-rHK/strings.xml index 14a444124d..9f47481759 100644 --- a/java/com/android/incallui/contactgrid/res/values-zh-rHK/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-zh-rHK/strings.xml @@ -1,4 +1,20 @@ + + "正在透過 %s 撥號" @@ -14,6 +30,8 @@ "保留" "視像通話來自" "Wi-Fi 視像通話來自" + "視像升級要求來自" + "Wi-Fi 視像升級要求來自" "通話來自" "工作通話來自" "透過 %s 的來電" diff --git a/java/com/android/incallui/contactgrid/res/values-zh-rTW/strings.xml b/java/com/android/incallui/contactgrid/res/values-zh-rTW/strings.xml index bdee41e678..563bb28320 100644 --- a/java/com/android/incallui/contactgrid/res/values-zh-rTW/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-zh-rTW/strings.xml @@ -1,4 +1,20 @@ + + "正在透過 %s 撥號" @@ -14,6 +30,8 @@ "保留中" "視訊通話來電:" "Wi-Fi 視訊通話來電:" + "視訊升級要求,來自:" + "Wi-Fi 視訊升級要求,來自:" "語音來電:" "公司來電:" "有人透過 %s 來電" diff --git a/java/com/android/incallui/contactgrid/res/values-zu/strings.xml b/java/com/android/incallui/contactgrid/res/values-zu/strings.xml index 150d5cc98d..19951ccf7c 100644 --- a/java/com/android/incallui/contactgrid/res/values-zu/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values-zu/strings.xml @@ -1,4 +1,20 @@ + + "Ishaya ucingo nge-%s" @@ -14,6 +30,8 @@ "Ibambile" "Ikholi yevidiyo kusukela ku-" "Ikholi yevidiyo ye-Wi-Fi kusukela ku-" + "Isicelo sokuthuthukiswa kwevidiyo kusukela" + "Isicelo sokuthuthukiswa kwevidiyo ye-Wi-Fi kusukela" "Ikholi esuka ku-" "Ikholi yomsebenzi kusukela ku-" "Ingena nge-%s" diff --git a/java/com/android/incallui/contactgrid/res/values/strings.xml b/java/com/android/incallui/contactgrid/res/values/strings.xml index 385f843b18..5a9272ca39 100644 --- a/java/com/android/incallui/contactgrid/res/values/strings.xml +++ b/java/com/android/incallui/contactgrid/res/values/strings.xml @@ -1,4 +1,19 @@ + Wi-Fi video call from + + Video upgrade request from + + + Wi-Fi video upgrade request from + Call from diff --git a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java index 0dcfdb5fe9..99364e22c8 100644 --- a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java +++ b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java @@ -82,12 +82,19 @@ class ButtonChooserFactory { Map mapping = createCommonMapping(); mapping.put( InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY, MappingInfo.builder(4).setSlotOrder(0).build()); - mapping.put( - InCallButtonIds.BUTTON_MANAGE_VOICE_CONFERENCE, - MappingInfo.builder(4).setSlotOrder(5).build()); mapping.put( InCallButtonIds.BUTTON_UPGRADE_TO_VIDEO, MappingInfo.builder(4).setSlotOrder(10).build()); - mapping.put(InCallButtonIds.BUTTON_HOLD, MappingInfo.builder(5).setSlotOrder(0).build()); + + /* + * Unlike the other configurations, MANAGE_VOICE_CONFERENCE shares a spot with HOLD for GSM. + * On GSM, pressing hold while there's a background call just swaps to the background call. It + * doesn't make sense to show both SWITCH_TO_SECONDARY and HOLD when they do the same thing, so + * we show MANAGE_VOICE_CONFERENCE instead. Previously MANAGE_VOICE_CONFERENCE would not show. + */ + mapping.put( + InCallButtonIds.BUTTON_MANAGE_VOICE_CONFERENCE, + MappingInfo.builder(5).setSlotOrder(0).build()); + mapping.put(InCallButtonIds.BUTTON_HOLD, MappingInfo.builder(5).setSlotOrder(5).build()); return new ButtonChooser(new MappedButtonConfig(mapping)); } diff --git a/java/com/android/incallui/incall/impl/ButtonController.java b/java/com/android/incallui/incall/impl/ButtonController.java index 8c113649db..b7a47f08e5 100644 --- a/java/com/android/incallui/incall/impl/ButtonController.java +++ b/java/com/android/incallui/incall/impl/ButtonController.java @@ -29,6 +29,8 @@ import com.android.incallui.incall.impl.CheckableLabeledButton.OnCheckedChangeLi import com.android.incallui.incall.protocol.InCallButtonIds; import com.android.incallui.incall.protocol.InCallButtonUiDelegate; import com.android.incallui.incall.protocol.InCallScreenDelegate; +import com.android.incallui.speakerbuttonlogic.SpeakerButtonInfo; +import com.android.incallui.speakerbuttonlogic.SpeakerButtonInfo.IconSize; /** Manages a single button. */ interface ButtonController { @@ -376,36 +378,13 @@ interface ButtonController { } public void setAudioState(CallAudioState audioState) { - @StringRes int contentDescriptionResId; - if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH) - == CallAudioState.ROUTE_BLUETOOTH) { - checkable = false; - isChecked = false; - label = R.string.incall_label_audio; - - if ((audioState.getRoute() & CallAudioState.ROUTE_BLUETOOTH) - == CallAudioState.ROUTE_BLUETOOTH) { - icon = R.drawable.quantum_ic_bluetooth_audio_white_36; - contentDescriptionResId = R.string.incall_content_description_bluetooth; - } else if ((audioState.getRoute() & CallAudioState.ROUTE_SPEAKER) - == CallAudioState.ROUTE_SPEAKER) { - icon = R.drawable.quantum_ic_volume_up_white_36; - contentDescriptionResId = R.string.incall_content_description_speaker; - } else if ((audioState.getRoute() & CallAudioState.ROUTE_WIRED_HEADSET) - == CallAudioState.ROUTE_WIRED_HEADSET) { - icon = R.drawable.quantum_ic_headset_white_36; - contentDescriptionResId = R.string.incall_content_description_headset; - } else { - icon = R.drawable.ic_phone_audio_white_36dp; - contentDescriptionResId = R.string.incall_content_description_earpiece; - } - } else { - checkable = true; - isChecked = audioState.getRoute() == CallAudioState.ROUTE_SPEAKER; - label = R.string.incall_label_speaker; - icon = R.drawable.quantum_ic_volume_up_white_36; - contentDescriptionResId = R.string.incall_content_description_speaker; - } + SpeakerButtonInfo info = new SpeakerButtonInfo(audioState, IconSize.SIZE_36_DP); + + checkable = info.checkable; + isChecked = info.isChecked; + label = info.label; + icon = info.icon; + @StringRes int contentDescriptionResId = info.contentDescription; contentDescription = delegate.getContext().getText(contentDescriptionResId); checkedContentDescription = diff --git a/java/com/android/incallui/incall/impl/InCallFragment.java b/java/com/android/incallui/incall/impl/InCallFragment.java index c5d75329f5..d329dc9038 100644 --- a/java/com/android/incallui/incall/impl/InCallFragment.java +++ b/java/com/android/incallui/incall/impl/InCallFragment.java @@ -473,6 +473,9 @@ public class InCallFragment extends Fragment inCallButtonUiDelegate.setAudioRoute(audioRoute); } + @Override + public void onAudioRouteSelectorDismiss() {} + @NonNull @Override public ButtonController getButtonController(@InCallButtonIds int id) { diff --git a/java/com/android/incallui/incall/impl/InCallPagerAdapter.java b/java/com/android/incallui/incall/impl/InCallPagerAdapter.java index 0b1088d2d4..bc0c616078 100644 --- a/java/com/android/incallui/incall/impl/InCallPagerAdapter.java +++ b/java/com/android/incallui/incall/impl/InCallPagerAdapter.java @@ -21,7 +21,6 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.PagerAdapter; -import android.text.TextUtils; import com.android.dialer.multimedia.MultimediaData; import com.android.incallui.sessiondata.MultimediaFragment; @@ -47,8 +46,7 @@ public class InCallPagerAdapter extends FragmentStatePagerAdapter { @Override public int getCount() { - if (attachments != null - && (!TextUtils.isEmpty(attachments.getText()) || attachments.hasImageData())) { + if (attachments != null && attachments.hasData()) { return 2; } return 1; diff --git a/java/com/android/incallui/incall/impl/res/values-af/strings.xml b/java/com/android/incallui/incall/impl/res/values-af/strings.xml index fd632fb9ab..64529a51f9 100644 --- a/java/com/android/incallui/incall/impl/res/values-af/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-af/strings.xml @@ -1,18 +1,33 @@ + + "Video-oproep" "Hou aan" "Voeg oproep by" "Demp" + "Beëindig oproep" "Sleutelblok" - "Luidspreker" ", is aan" ", is af" "Voeg saam" "Bestuur" "Bestuur bellers" "Verwissel" - "Klank" "Nota is gestuur" diff --git a/java/com/android/incallui/incall/impl/res/values-am/strings.xml b/java/com/android/incallui/incall/impl/res/values-am/strings.xml index 9dfd0e61d0..66a38680eb 100644 --- a/java/com/android/incallui/incall/impl/res/values-am/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-am/strings.xml @@ -1,18 +1,33 @@ + + "የቪዲዮ ጥሪ" "ይዘህ ቆይ" "ጥሪ ያክሉ" "ድምፀ-ከል አድርግ" + "ጥሪ ጨርስ" "ቁልፍ ሰሌዳ" - "የድምጽ ማጉያ" "፣ በርቷል" "፣ ጠፍቷል" "አዋህድ" "አስተዳድር" "ደዋዮችን ያስተዳድሩ" "አገላብጥ" - "ድምፅ" "ማስታወሻ ተልኳል" diff --git a/java/com/android/incallui/incall/impl/res/values-ar/strings.xml b/java/com/android/incallui/incall/impl/res/values-ar/strings.xml index a5f448a318..e4dbfe4b6a 100644 --- a/java/com/android/incallui/incall/impl/res/values-ar/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ar/strings.xml @@ -1,18 +1,33 @@ + + "مكالمة فيديو" "انتظار" "إضافة مكالمة" "كتم" + "إنهاء المكالمة" "لوحة مفاتيح" - "مكبر الصوت" "، مشغل" "، غير مشغل" "دمج" "إدارة" "إدارة المتصلين" "تبديل" - "الصوت" "تم إرسال الملاحظة" diff --git a/java/com/android/incallui/incall/impl/res/values-az/strings.xml b/java/com/android/incallui/incall/impl/res/values-az/strings.xml index 5f1f8cb986..9a1f7f8fe8 100644 --- a/java/com/android/incallui/incall/impl/res/values-az/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-az/strings.xml @@ -1,18 +1,33 @@ + + "Video zəng" "Xətdə axlayın" "Zəng əlavə edin" "Susdurun" + "Zəngi bitirin" "Klaviatura" - "Dinamik" ", aktivdir" ", deaktivdir" "Birləşdir" "İdarə edin" "Zəng edənləri idarə edin" "Dəyişdirin" - "Səs" "Qeyd göndərildi" diff --git a/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml index bff7ed079a..02d6b7c96c 100644 --- a/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml @@ -1,18 +1,33 @@ + + "Video poziv" "Na čekanje" "Dodaj poziv" "Isključi zvuk" + "Završi poziv" "Tastatura" - "Zvučnik" ", uključen" ", isključen" "Objedini" "Upravljaj" "Upravljajte pozivaocima" "Zameni" - "Zvuk" "Beleška je poslata" diff --git a/java/com/android/incallui/incall/impl/res/values-be/strings.xml b/java/com/android/incallui/incall/impl/res/values-be/strings.xml index 394c7c82e5..45e1e10100 100644 --- a/java/com/android/incallui/incall/impl/res/values-be/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-be/strings.xml @@ -1,18 +1,33 @@ + + "Відэавыклік" "Утрымліваць" "Дадаць выклік" "Адключыць мікрафон" + "Сконч. выкл." "Клавіятура" - "Вонк.дынамік" ", уключана" ", выключана" "Аб\'яднаць" "Кіраваць" "Кіраваць выклікаючымі абанентамі" "Пераключыць" - "Гук" "Нататка адпраўлена" diff --git a/java/com/android/incallui/incall/impl/res/values-bg/strings.xml b/java/com/android/incallui/incall/impl/res/values-bg/strings.xml index 4f5933be9f..c339d3bca6 100644 --- a/java/com/android/incallui/incall/impl/res/values-bg/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-bg/strings.xml @@ -1,18 +1,33 @@ + + "Видеообажд." "Задържане" "Ново обажд." "Без звук" + "Затваряне" "Клавиатура" - "Високоговорител" "е включено" "е изключено" "Обединяване" "Управление" "Управление на обаждащите се" "Размяна" - "Звук" "Бележката е изпратена" diff --git a/java/com/android/incallui/incall/impl/res/values-bn/strings.xml b/java/com/android/incallui/incall/impl/res/values-bn/strings.xml index 9453e14bd6..ca5837b0eb 100644 --- a/java/com/android/incallui/incall/impl/res/values-bn/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-bn/strings.xml @@ -1,18 +1,33 @@ + + "ভিডিও কল" "ধরে থাকুন" "কল যোগ করুন" "নিঃশব্দ করুন" + "কল শেষ করুন" "কীপ্যাড" - "স্পিকার" ", চালু রয়েছে" ", বন্ধ রয়েছে" "মার্জ করুন" "পরিচালনা করুন" "কলারদের পরিচালনা করুন" "অদল বদল করুন" - "শব্দ" "নোট পাঠানো হয়েছে" diff --git a/java/com/android/incallui/incall/impl/res/values-bs/strings.xml b/java/com/android/incallui/incall/impl/res/values-bs/strings.xml index 4b47964574..26b44ea905 100644 --- a/java/com/android/incallui/incall/impl/res/values-bs/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-bs/strings.xml @@ -1,18 +1,33 @@ + + "Videopoziv" "Na čekanju" "Dodaj poziv" "Isključi" + "Prekini poziv" "Telefonska tastatura" - "Zvučnik" ", uključen" ", isključen" "Spoji" "Upravljaj" "Upravljanje pozivaocima" "Zamijeni" - "Zvuk" "Bilješka je poslana" diff --git a/java/com/android/incallui/incall/impl/res/values-ca/strings.xml b/java/com/android/incallui/incall/impl/res/values-ca/strings.xml index e10b7bd2d5..9c76a3a5f1 100644 --- a/java/com/android/incallui/incall/impl/res/values-ca/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ca/strings.xml @@ -1,18 +1,33 @@ + + "Videotrucada" "Posa en espera" "Afeg. trucada" "Silencia" + "Penja" "Teclat" - "Altaveu" ", activat" ", desactivat" "Combina" "Gestiona" "Gestiona les persones que truquen" "Canvia" - "So" "La nota s\'ha enviat" diff --git a/java/com/android/incallui/incall/impl/res/values-cs/strings.xml b/java/com/android/incallui/incall/impl/res/values-cs/strings.xml index a00c10547c..69f3e53a0e 100644 --- a/java/com/android/incallui/incall/impl/res/values-cs/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-cs/strings.xml @@ -1,18 +1,33 @@ + + "Videohovor" "Podržet" "Přidat hovor" "Vyp. mikrof." + "Zavěsit" "Klávesnice" - "Reproduktor" "– zapnuto" "– vypnuto" "Sloučit" "Spravovat" "Spravovat volající" "Přepnout" - "Zvuk" "Poznámka byla odeslána" diff --git a/java/com/android/incallui/incall/impl/res/values-da/strings.xml b/java/com/android/incallui/incall/impl/res/values-da/strings.xml index 08b5cbb8e8..d9328afe44 100644 --- a/java/com/android/incallui/incall/impl/res/values-da/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-da/strings.xml @@ -1,18 +1,33 @@ + + "Videoopkald" "Parkér" "Tilføj opkald" "Slå lyden fra" + "Slut opkald" "Tastatur" - "Højttaler" ", er til" ", er fra" "Flet" "Administrer" "Administrer opkaldere" "Byt" - "Lyd" "Noten blev sendt" diff --git a/java/com/android/incallui/incall/impl/res/values-de/strings.xml b/java/com/android/incallui/incall/impl/res/values-de/strings.xml index 5f3f8c1cbc..30eae96b36 100644 --- a/java/com/android/incallui/incall/impl/res/values-de/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-de/strings.xml @@ -1,18 +1,33 @@ + + "Videoanruf" "Halten" "Hinzufügen" "Stumm" + "Beenden" "Wähltasten" - "Lautsprecher" ", ist an" ", ist aus" "Zusammenf." "Verwalten" "Anrufer verwalten" "Wechseln" - "Audio" "Notiz gesendet" diff --git a/java/com/android/incallui/incall/impl/res/values-el/strings.xml b/java/com/android/incallui/incall/impl/res/values-el/strings.xml index 0f5a142389..b45314fa7b 100644 --- a/java/com/android/incallui/incall/impl/res/values-el/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-el/strings.xml @@ -1,18 +1,33 @@ + + "Βιντεοκλήση" "Αναμονή" "Προσθ. κλήσ." "Σίγαση" + "Τερματισμός" "Πληκτρολόγιο" - "Ηχείο" ", ενεργό" ", ανενεργό" "Συγχώνευση" "Διαχείριση" "Διαχείριση καλούντων" "Ανταλλαγή" - "Ήχος" "Η σημείωση εστάλη" diff --git a/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml b/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml index 89b72df548..34323f57a6 100644 --- a/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml @@ -1,18 +1,33 @@ + + "Video call" "Hold" "Add call" "Mute" + "End call" "Keypad" - "Speaker" ", is on" ", is off" "Merge" "Manage" "Manage callers" "Swap" - "Sound" "Note sent" diff --git a/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml b/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml index 89b72df548..34323f57a6 100644 --- a/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml @@ -1,18 +1,33 @@ + + "Video call" "Hold" "Add call" "Mute" + "End call" "Keypad" - "Speaker" ", is on" ", is off" "Merge" "Manage" "Manage callers" "Swap" - "Sound" "Note sent" diff --git a/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml b/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml index 89b72df548..34323f57a6 100644 --- a/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml @@ -1,18 +1,33 @@ + + "Video call" "Hold" "Add call" "Mute" + "End call" "Keypad" - "Speaker" ", is on" ", is off" "Merge" "Manage" "Manage callers" "Swap" - "Sound" "Note sent" diff --git a/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml b/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml index fe9374cb9e..d39cf2f6f1 100644 --- a/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml @@ -1,18 +1,33 @@ + + "Videollamada" "Retener" "Agregar llamada" "Silenciar" + "Finalizar" "Teclado" - "Altavoz" ", activado" ", desactivado" "Combinar" "Administrar" "Administrar números" "Cambiar" - "Sonido" "Se envió la nota" diff --git a/java/com/android/incallui/incall/impl/res/values-es/strings.xml b/java/com/android/incallui/incall/impl/res/values-es/strings.xml index f2dd09bb94..db5a7e6438 100644 --- a/java/com/android/incallui/incall/impl/res/values-es/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-es/strings.xml @@ -1,18 +1,33 @@ + + "Videollamada" "Retener" "Añadir" "Silenciar" + "Finalizar" "Teclado" - "Altavoz" ", activado" ", desactivado" "Combinar" "Gestionar" "Administrar llamadas" "Cambiar" - "Sonido" "Nota enviada" diff --git a/java/com/android/incallui/incall/impl/res/values-et/strings.xml b/java/com/android/incallui/incall/impl/res/values-et/strings.xml index 03fa7deae3..f4587adaa8 100644 --- a/java/com/android/incallui/incall/impl/res/values-et/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-et/strings.xml @@ -1,18 +1,33 @@ + + "Videokõne" "Ootele" "Lisa kõne" "Vaigista" + "Lõpeta kõne" "Klaviatuur" - "Kõlar" ", on sees" ", on väljas" "Ühenda" "Halda" "Helistajate haldamine" "Vaheta" - "Heli" "Märge on saadetud" diff --git a/java/com/android/incallui/incall/impl/res/values-eu/strings.xml b/java/com/android/incallui/incall/impl/res/values-eu/strings.xml index 51d300e2e8..28d78a70b3 100644 --- a/java/com/android/incallui/incall/impl/res/values-eu/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-eu/strings.xml @@ -1,18 +1,33 @@ + + "Bideo-deia" "Utzi zain" "Gehitu deia" "Des. audioa" + "Amaitu deia" "Teklatua" - "Bozgorailua" ", aktibatuta" ", desaktib." "Bateratu" "Kudeatu" "Kudeatu deitzaileak" "Aldatu" - "Soinua" "Bidali da oharra" diff --git a/java/com/android/incallui/incall/impl/res/values-fa/strings.xml b/java/com/android/incallui/incall/impl/res/values-fa/strings.xml index a0701163e0..a26ac75a29 100644 --- a/java/com/android/incallui/incall/impl/res/values-fa/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-fa/strings.xml @@ -1,18 +1,33 @@ + + "تماس ویدئویی" "درحال انتظار" "افزودن تماس" "بی‌صدا کردن" + "پایان تماس" "صفحه کلید" - "بلندگو" "، فعال است" "، غیرفعال است" "ادغام" "مدیریت" "مدیریت تماس‌گیرندگان" "جابه‌جایی" - "صدا" "یادداشت ارسال شد" diff --git a/java/com/android/incallui/incall/impl/res/values-fi/strings.xml b/java/com/android/incallui/incall/impl/res/values-fi/strings.xml index d81bfbf395..9ae53488a1 100644 --- a/java/com/android/incallui/incall/impl/res/values-fi/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-fi/strings.xml @@ -1,18 +1,33 @@ + + "Videopuhelu" "Pitoon" "Lisää puhelu" "Mykistä" + "Päätä puhelu" "Näppäimistö" - "Kaiutin" ", käytössä" ", ei käytössä" "Yhdistä" "Hallinnoi" "Hallinnoi soittajia" "Vaihda" - "Ääni" "Muistiinpano lähetettiin." diff --git a/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml b/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml index 1278bce2d7..cff6745d15 100644 --- a/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml @@ -1,18 +1,33 @@ + + "Appel vidéo" "En attente" "Autre appel" "Couper son" + "Raccrocher" "Clavier" - "Haut-parleur" ", activé" ", désactivé" "Fusionner" "Gérer" "Gérer les appels" "Permuter" - "Son" "Note envoyée" diff --git a/java/com/android/incallui/incall/impl/res/values-fr/strings.xml b/java/com/android/incallui/incall/impl/res/values-fr/strings.xml index 5532032b98..14e92beeb0 100644 --- a/java/com/android/incallui/incall/impl/res/values-fr/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-fr/strings.xml @@ -1,18 +1,33 @@ + + "Appel vidéo" "En attente" "Autre appel" "Couper micro" + "Raccrocher" "Clavier" - "Haut-parleur" ", activé" ", désactivé" "Fusionner" "Gérer" "Gérer les appelants" "Permuter" - "Son" "Note envoyée" diff --git a/java/com/android/incallui/incall/impl/res/values-gl/strings.xml b/java/com/android/incallui/incall/impl/res/values-gl/strings.xml index ec99b7c751..4b399f4eec 100644 --- a/java/com/android/incallui/incall/impl/res/values-gl/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-gl/strings.xml @@ -1,18 +1,33 @@ + + "Videochamada" "En espera" "Eng. chamada" "Ignorar" + "Finalizar chamada" "Teclado" - "Altofalante" "activado" "desactivado" "Combinar" "Xestionar" "Xestionar emisores de chamadas" "Cambiar" - "Son" "Enviouse a nota" diff --git a/java/com/android/incallui/incall/impl/res/values-gu/strings.xml b/java/com/android/incallui/incall/impl/res/values-gu/strings.xml index fb3999c9a1..438f0f3518 100644 --- a/java/com/android/incallui/incall/impl/res/values-gu/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-gu/strings.xml @@ -1,18 +1,33 @@ + + "વિડિઓ કૉલ" "હોલ્ડ કરો" "કૉલ ઉમેરો" "મ્યૂટ કરો" + "કૉલ સમાપ્ત કરો" "કીપેડ" - "સ્પીકર" ", ચાલુ છે" ", બંધ છે" "મર્જ કરો" "સંચાલિત કરો" "કૉલર્સને સંચાલિત કરો" "સ્વેપ કરો" - "ધ્વનિ" "નોંધ મોકલી" diff --git a/java/com/android/incallui/incall/impl/res/values-h580dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-h580dp/dimens.xml deleted file mode 100644 index 1f37cd5040..0000000000 --- a/java/com/android/incallui/incall/impl/res/values-h580dp/dimens.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - 88dp - diff --git a/java/com/android/incallui/incall/impl/res/values-h600dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-h600dp/dimens.xml new file mode 100644 index 0000000000..904aed2357 --- /dev/null +++ b/java/com/android/incallui/incall/impl/res/values-h600dp/dimens.xml @@ -0,0 +1,20 @@ + + + + + 88dp + diff --git a/java/com/android/incallui/incall/impl/res/values-h580dp/styles.xml b/java/com/android/incallui/incall/impl/res/values-h650dp/styles.xml similarity index 100% rename from java/com/android/incallui/incall/impl/res/values-h580dp/styles.xml rename to java/com/android/incallui/incall/impl/res/values-h650dp/styles.xml diff --git a/java/com/android/incallui/incall/impl/res/values-hi/strings.xml b/java/com/android/incallui/incall/impl/res/values-hi/strings.xml index 6a7538dea6..39e6e6b6d6 100644 --- a/java/com/android/incallui/incall/impl/res/values-hi/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-hi/strings.xml @@ -1,18 +1,33 @@ + + "वीडियो कॉल" "होल्ड करें" "कॉल जोड़ें" "म्यूट करें" + "कॉल समाप्त करें" "कीपैड" - "स्‍पीकर" ", चालू है" ", बंद है" "एक बनाएं" "प्रबंधित करें" "कॉलर प्रबंधित करें" "स्वैप करें" - "ध्वनि" "नोट भेज दिया गया है" diff --git a/java/com/android/incallui/incall/impl/res/values-hr/strings.xml b/java/com/android/incallui/incall/impl/res/values-hr/strings.xml index fc431b33b3..e440028d8a 100644 --- a/java/com/android/incallui/incall/impl/res/values-hr/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-hr/strings.xml @@ -1,18 +1,33 @@ + + "Videopoziv" "Pauziraj" "Dodaj poziv" "Isklj. zvuk" + "Prekini poziv" "Tipkovnica" - "Zvučnik" ", uključeno" ", isključeno" "Spoji" "Upravljanje" "Upravljaj pozivateljima" "Zamijeni" - "Zvuk" "Bilješka je poslana" diff --git a/java/com/android/incallui/incall/impl/res/values-hu/strings.xml b/java/com/android/incallui/incall/impl/res/values-hu/strings.xml index 194c348d9c..e63ce5946c 100644 --- a/java/com/android/incallui/incall/impl/res/values-hu/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-hu/strings.xml @@ -1,18 +1,33 @@ + + "Videohívás" "Várakoztatás" "Hívás felv." "Némítás" + "Hívás vége" "Billentyűzet" - "Hangszóró" ", be" ", ki" "Egyesítés" "Kezelés" "Hívók kezelése" "Csere" - "Hang" "Üzenet elküldve" diff --git a/java/com/android/incallui/incall/impl/res/values-hy/strings.xml b/java/com/android/incallui/incall/impl/res/values-hy/strings.xml index 0e8054ec9b..ce395e70ce 100644 --- a/java/com/android/incallui/incall/impl/res/values-hy/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-hy/strings.xml @@ -1,18 +1,33 @@ + + "Տեսազանգ" "Պահել զանգը" "Ավելացնել զանգ" "Անջատել" + "Ավարտել զանգը" "Ստեղնաշար" - "Բարձրախոս" ", միացած է" ", անջատած է" "Միավորել" "Կառավարել" "Զանգողների կառավարում" "Փոխարկել" - "Ձայն" "Գրառումն ուղարկվեց" diff --git a/java/com/android/incallui/incall/impl/res/values-in/strings.xml b/java/com/android/incallui/incall/impl/res/values-in/strings.xml index f429cb4b73..e9d738a36e 100644 --- a/java/com/android/incallui/incall/impl/res/values-in/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-in/strings.xml @@ -1,18 +1,33 @@ + + "Video call" "Tahan" "Tambahkan panggilan" "Bisukan" + "Akhiri panggilan" "Keypad" - "Speaker" ", aktif" ", Nonaktif" "Gabungkan" "Kelola" "Kelola penelepon" "Tukar" - "Suara" "Catatan telah dikirim" diff --git a/java/com/android/incallui/incall/impl/res/values-is/strings.xml b/java/com/android/incallui/incall/impl/res/values-is/strings.xml index 9c3bf89bfc..f262e3f9ff 100644 --- a/java/com/android/incallui/incall/impl/res/values-is/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-is/strings.xml @@ -1,18 +1,33 @@ + + "Myndsímtal" "Setja í bið" "Bæta við" "Hljóð af" + "Ljúka" "Talnaborð" - "Hátalari" ", kveikt" ", slökkt" "Sameina" "Stjórna" "Hafa umsjón með hringjendum" "Skipta milli" - "Hljóð" "Glósa send" diff --git a/java/com/android/incallui/incall/impl/res/values-it/strings.xml b/java/com/android/incallui/incall/impl/res/values-it/strings.xml index 1cfb0be678..f29a702606 100644 --- a/java/com/android/incallui/incall/impl/res/values-it/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-it/strings.xml @@ -1,18 +1,33 @@ + + "Videochiamata" "In attesa" "Aggiungi chiamata" "Disattiva" + "Termina chiamata" "Tastierino" - "Altoparlante" ", attivo" ", non attivo" "Unisci" "Gestisci" "Gestisci chiamanti" "Scambia" - "Audio" "Nota inviata" diff --git a/java/com/android/incallui/incall/impl/res/values-iw/strings.xml b/java/com/android/incallui/incall/impl/res/values-iw/strings.xml index 2426fc8686..bf08e3b065 100644 --- a/java/com/android/incallui/incall/impl/res/values-iw/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-iw/strings.xml @@ -1,18 +1,33 @@ + + "שיחת וידאו" "המתנה" "הוסף שיחה" "השתק" + "סיום השיחה" "לוח חיוג" - "רמקול" ", מופעל" ", מושבת" "מזג" "נהל" "ניהול המתקשרים" "החלף" - "צלילים" "ההערה נשלחה" diff --git a/java/com/android/incallui/incall/impl/res/values-ja/strings.xml b/java/com/android/incallui/incall/impl/res/values-ja/strings.xml index 9e313a072d..b78ee202ec 100644 --- a/java/com/android/incallui/incall/impl/res/values-ja/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ja/strings.xml @@ -1,18 +1,33 @@ + + "ビデオ通話" "保留" "通話を追加" "ミュート" + "通話を終了" "キーパッド" - "スピーカー" "がオンです" "がオフです" "統合" "管理" "発信者を管理" "切り替え" - "音声" "メモを送信しました" diff --git a/java/com/android/incallui/incall/impl/res/values-ka/strings.xml b/java/com/android/incallui/incall/impl/res/values-ka/strings.xml index d33af5a466..f6926f39cf 100644 --- a/java/com/android/incallui/incall/impl/res/values-ka/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ka/strings.xml @@ -1,18 +1,33 @@ + + "ვიდეოზარი" "შეყოვნება" "ზარის დამატ." "დადუმება" + "ზარის დასრ." "კლავიატურა" - "სპიკერი" ", ჩართულია" ", გამორთულია" "გაერთიანება" "მართვა" "აბონენტების მართვა" "შენაცვლება" - "ხმა" "ჩანიშვნა გაიგზავნა" diff --git a/java/com/android/incallui/incall/impl/res/values-kk/strings.xml b/java/com/android/incallui/incall/impl/res/values-kk/strings.xml index db9c4f6ca4..8da9982d0e 100644 --- a/java/com/android/incallui/incall/impl/res/values-kk/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-kk/strings.xml @@ -1,18 +1,33 @@ + + "Бейне қоңырау" "Күттіру" "Қоңырау қосу" "Дыбысын өшіру" + "Қоңырауды аяқтау" "Пернетақта" - "Динамик" ", қосулы" ", өшірулі" "Біріктіру" "Басқару" "Қоңырау шалушыларды басқару" "Ауыстыру" - "Дыбыс" "Ескертпе жіберілді" diff --git a/java/com/android/incallui/incall/impl/res/values-km/strings.xml b/java/com/android/incallui/incall/impl/res/values-km/strings.xml index 6596bdf0c3..88e356a41d 100644 --- a/java/com/android/incallui/incall/impl/res/values-km/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-km/strings.xml @@ -1,18 +1,33 @@ + + "ហៅ​ជា​វីដេអូ" "រង់ចាំ" "បន្ថែម​ការ​ហៅ" "បិទ​សំឡេង" + "បញ្ចប់​ការ​ហៅ" "បន្ទះ​​ចុច​លេខ" - "ឧបករណ៍​បំពង​សំឡេង" ", បាន​បើក" ", បានបិទ" "បញ្ចូលគ្នា" "គ្រប់គ្រង" "គ្រប់គ្រងអ្នក​ហៅ" "ប្ដូរ" - "សំឡេង" "បានផ្ញើចំណាំ" diff --git a/java/com/android/incallui/incall/impl/res/values-kn/strings.xml b/java/com/android/incallui/incall/impl/res/values-kn/strings.xml index c03ec09fad..ad29b6d361 100644 --- a/java/com/android/incallui/incall/impl/res/values-kn/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-kn/strings.xml @@ -1,18 +1,33 @@ + + "ವೀಡಿಯೊ ಕರೆ" "ಹೋಲ್ಡ್‌‌ ಮಾಡು" "ಕರೆಯನ್ನು ಸೇರಿಸಿ" "ಮ್ಯೂಟ್ ಮಾಡಿ" + "ಕರೆ ಅಂತ್ಯಗೊಳಿಸಿ" "ಕೀಪ್ಯಾಡ್‌" - "ಸ್ಪೀಕರ್‌" ", ಆನ್ ಆಗಿದೆ" ", ಆಫ್ ಆಗಿದೆ" "ವಿಲೀನಗೊಳಿಸು" "ನಿರ್ವಹಿಸು" "ಕರೆದಾತರನ್ನು ನಿರ್ವಹಿಸಿ" "ಸ್ವ್ಯಾಪ್‌ ಮಾಡು" - "ಧ್ವನಿ" "ಟಿಪ್ಪಣಿ ಕಳುಹಿಸಲಾಗಿದೆ" diff --git a/java/com/android/incallui/incall/impl/res/values-ko/strings.xml b/java/com/android/incallui/incall/impl/res/values-ko/strings.xml index e701e772f0..f9bb20f8b1 100644 --- a/java/com/android/incallui/incall/impl/res/values-ko/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ko/strings.xml @@ -1,18 +1,33 @@ + + "화상 통화" "대기" "통화 추가" "음소거" + "통화 종료" "키패드" - "스피커" ", 켜짐" ", 꺼짐" "병합" "관리" "발신자 관리" "전환" - "소리" "메모가 전송되었습니다." diff --git a/java/com/android/incallui/incall/impl/res/values-ky/strings.xml b/java/com/android/incallui/incall/impl/res/values-ky/strings.xml index e51d4c5820..f00264dbe2 100644 --- a/java/com/android/incallui/incall/impl/res/values-ky/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ky/strings.xml @@ -1,18 +1,33 @@ + + "Видео чалуу" "Күттүрүү" "Чалууну кошуу" "Үнүн өчүрүү" + "Чалууну бүтүрүү" "Ном. тергич" - "Катуу сүйлөткүч" ", күйүк" ", өчүк" "Бириктирүү" "Башкаруу" "Чалуучуларды башкаруу" "Алмаштыруу" - "Добуш" "Билдирүү жөнөтүлдү" diff --git a/java/com/android/incallui/incall/impl/res/values-lo/strings.xml b/java/com/android/incallui/incall/impl/res/values-lo/strings.xml index 52de3ffccb..2382f3241a 100644 --- a/java/com/android/incallui/incall/impl/res/values-lo/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-lo/strings.xml @@ -1,18 +1,33 @@ + + "ໂທດ້ວຍວິດີໂອ" "ພັກສາຍຊົ່ວຄາວ" "ເພີ່ມການໂທ" "ປີດສຽງ" + "ວາງສາຍ" "ແປ້ນກົດ" - "ລຳໂພງ" ", ເປີດຢູ່" ", ປິດຢູ່" "ຮວມສາຍ" "ຈັດການ" "ຈັດການຜູ້ໂທ" "ສະຫຼັບສາຍ" - "ສຽງ" "ສົ່ງບັນທຶກແລ້ວ" diff --git a/java/com/android/incallui/incall/impl/res/values-lt/strings.xml b/java/com/android/incallui/incall/impl/res/values-lt/strings.xml index 4cd0356f35..1a10884cb4 100644 --- a/java/com/android/incallui/incall/impl/res/values-lt/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-lt/strings.xml @@ -1,18 +1,33 @@ + + "Vaizdo skambutis" "Sulaikyti" "Pr. skambutį" "Nutildyti" + "Baig. skamb." "Klaviatūra" - "Garsiakalbis" ", įjungtas" ", išjungtas" "Sujungti" "Tvarkyti" "Tvarkyti skambintojus" "Sukeisti" - "Garsas" "Užrašas išsiųstas" diff --git a/java/com/android/incallui/incall/impl/res/values-lv/strings.xml b/java/com/android/incallui/incall/impl/res/values-lv/strings.xml index 48f9ae032e..c19e7c0ae8 100644 --- a/java/com/android/incallui/incall/impl/res/values-lv/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-lv/strings.xml @@ -1,18 +1,33 @@ + + "Videozvans" "Aizturēt" "Pievienot zvanu" "Izslēgt" + "Beigt zvanu" "Cipartast." - "Skaļrunis" ", ieslēgts" ", izslēgts" "Apvienot" "Pārvaldīt" "Pārvaldīt zvanītājus" "Pārslēgt" - "Skaņa" "Piezīme nosūtīta" diff --git a/java/com/android/incallui/incall/impl/res/values-mk/strings.xml b/java/com/android/incallui/incall/impl/res/values-mk/strings.xml index 5a61de5d39..610a308035 100644 --- a/java/com/android/incallui/incall/impl/res/values-mk/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-mk/strings.xml @@ -1,18 +1,33 @@ + + "Видеоповик" "На чекање" "Додај повик" "Исклучи звук" + "Заврши повик" "Тастатура" - "Звучник" ", е вклучен" ", е исклучен" "Спои" "Управувај" "Управувајте со повикувачите" "Замени" - "Звук" "Белешката е испратена" diff --git a/java/com/android/incallui/incall/impl/res/values-ml/strings.xml b/java/com/android/incallui/incall/impl/res/values-ml/strings.xml index 00586ffa7f..83c2989f06 100644 --- a/java/com/android/incallui/incall/impl/res/values-ml/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ml/strings.xml @@ -1,18 +1,33 @@ + + "വീഡിയോ കോള്‍" "ഹോള്‍ഡുചെയ്യുക" "കോൾ ചേർക്കുക" "മ്യൂട്ടുചെയ്യുക" + "കോള്‍ അവസാനിപ്പിക്കൂ" "കീപാഡ്" - "സ്പീക്കർ" ", ഓണാണ്" ", ഓഫാണ്" "ലയിപ്പിക്കുക" "മാനേജുചെയ്യുക" "കോൾ ചെയ്യുന്നവരെ മാനേജുചെയ്യുക" "സ്വാപ്പുചെയ്യുക" - "ശബ്‌ദം" "കുറിപ്പ് അയച്ചു" diff --git a/java/com/android/incallui/incall/impl/res/values-mn/strings.xml b/java/com/android/incallui/incall/impl/res/values-mn/strings.xml index 085a405b01..9427d86d21 100644 --- a/java/com/android/incallui/incall/impl/res/values-mn/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-mn/strings.xml @@ -1,18 +1,33 @@ + + "Видео хурал" "Саатуулах" "Дуудлага нэмэх" "Дууг хаах" + "Дуудлагыг таслах" "Товчлуур" - "Чанга яригч" ", асаатай" ", унтраатай" "Нэгтгэх" "Удирдах" "Залгагчдыг удирдах" "Солих" - "Дуу" "Тэмдэглэлийг илгээсэн" diff --git a/java/com/android/incallui/incall/impl/res/values-mr/strings.xml b/java/com/android/incallui/incall/impl/res/values-mr/strings.xml index 8419233521..194c192bd4 100644 --- a/java/com/android/incallui/incall/impl/res/values-mr/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-mr/strings.xml @@ -1,18 +1,33 @@ + + "व्हिडिओ कॉल" "होल्ड करा" "कॉल जोडा" "नि:शब्द करा" + "कॉल समाप्त करा" "कीपॅड" - "स्पीकर" ", सुरू आहे" ", बंद आहे" "विलीन करा" "व्यवस्थापित करा" "कॉलर व्यवस्थापित करा" "अदलाबदल करा" - "ध्वनी" "टीप पाठविली" diff --git a/java/com/android/incallui/incall/impl/res/values-ms/strings.xml b/java/com/android/incallui/incall/impl/res/values-ms/strings.xml index c9db8325e9..a918dedb4a 100644 --- a/java/com/android/incallui/incall/impl/res/values-ms/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ms/strings.xml @@ -1,18 +1,33 @@ + + "Pgln video" "Tunda" "Tambah pgln" "Redam" + "Tamatkn pgln" "Pad kekunci" - "Pmbsr suara" ", dihidupkan" ", Dimatikan" "Gabung" "Urus" "Urus pemanggil" "Silih" - "Bunyi" "Nota dihantar" diff --git a/java/com/android/incallui/incall/impl/res/values-my/strings.xml b/java/com/android/incallui/incall/impl/res/values-my/strings.xml index e0bfb8c711..80070297bd 100644 --- a/java/com/android/incallui/incall/impl/res/values-my/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-my/strings.xml @@ -1,18 +1,33 @@ + + "ဗီဒီယိုခေါ်ဆိုမှု" "ခဏရပ်ထားရန်" "ထပ်ခေါ်ရန်" "အသံပိတ်ရန်" + "ဖုန်းချရန်" "ခလုတ်ခုံ" - "စပီကာ" "၊ ပွင့်နေသည်" "၊ ပိတ်နေသည်" "ပေါင်းရန်" "စီမံရန်" "ခေါ်ဆိုသူများကို စီမံခန့်ခွဲရန်" "ဖလှယ်ရန်" - "အသံ" "မှတ်စုပို့ပြီးပါပြီ" diff --git a/java/com/android/incallui/incall/impl/res/values-nb/strings.xml b/java/com/android/incallui/incall/impl/res/values-nb/strings.xml index 75200869c6..704384ea0b 100644 --- a/java/com/android/incallui/incall/impl/res/values-nb/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-nb/strings.xml @@ -1,18 +1,33 @@ + + "Videosamtale" "Sett på vent" "Nytt anrop" "Ignorer" + "Avslutt samtalen" "Tastatur" - "Høyttaler" "er på" "er av" "Slå sammen" "Administrer" "Håndter innringere" "Bytt" - "Lyd" "Notatet er sendt" diff --git a/java/com/android/incallui/incall/impl/res/values-ne/strings.xml b/java/com/android/incallui/incall/impl/res/values-ne/strings.xml index 6bcfb6dd27..beffa3e740 100644 --- a/java/com/android/incallui/incall/impl/res/values-ne/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ne/strings.xml @@ -1,18 +1,33 @@ + + "भिडियो कल" "होल्ड गर्ने" "कल थप्नुहोस्" "म्यूट गर्ने" + "कल अन्त्य गर्ने" "किप्याड" - "स्पिकर" ", खुला छ" ", बन्द छ" "मर्ज गर्ने" "प्रबन्ध गर्ने" "कल गर्ने व्यक्तिहरूलाई व्यवस्थित गर्नुहोस्" "साट्नुहोस्" - "आवाज" "टिपोट पठाइयो" diff --git a/java/com/android/incallui/incall/impl/res/values-nl/strings.xml b/java/com/android/incallui/incall/impl/res/values-nl/strings.xml index 63f1ebd5d8..e3c919e1ac 100644 --- a/java/com/android/incallui/incall/impl/res/values-nl/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-nl/strings.xml @@ -1,18 +1,33 @@ + + "Videogespr." "In wacht" "Oproep toev." "Dempen" + "Oproep beëindigen" "Toetsenblok" - "Luidspreker" ", is aan" ", is uit" "Samenvoegen" "Beheren" "Bellers beheren" "Wisselen" - "Geluid" "Notitie verzonden" diff --git a/java/com/android/incallui/incall/impl/res/values-no/strings.xml b/java/com/android/incallui/incall/impl/res/values-no/strings.xml index 75200869c6..704384ea0b 100644 --- a/java/com/android/incallui/incall/impl/res/values-no/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-no/strings.xml @@ -1,18 +1,33 @@ + + "Videosamtale" "Sett på vent" "Nytt anrop" "Ignorer" + "Avslutt samtalen" "Tastatur" - "Høyttaler" "er på" "er av" "Slå sammen" "Administrer" "Håndter innringere" "Bytt" - "Lyd" "Notatet er sendt" diff --git a/java/com/android/incallui/incall/impl/res/values-pa/strings.xml b/java/com/android/incallui/incall/impl/res/values-pa/strings.xml index 10a2865a65..d7e74ed830 100644 --- a/java/com/android/incallui/incall/impl/res/values-pa/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-pa/strings.xml @@ -1,18 +1,33 @@ + + "ਵੀਡੀਓ ਕਾਲ" "ਰੋਕ ਕੇ ਰੱਖੋ" "ਕਾਲ ਸ਼ਾਮਲ ਕਰੋ" "ਮਿਊਟ ਕਰੋ" + "ਕਾਲ ਖਤਮ ਕਰੋ" "ਕੀਪੈਡ" - "ਸਪੀਕਰ" ", ਚਾਲੂ ਹੈ" ", ਬੰਦ ਹੈ" "ਰਲਗੱਡ ਕਰੋ" "ਪ੍ਰਬੰਧਨ ਕਰੋ" "ਕਾਲਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ" "ਅਦਲੋ-ਬਦਲੋ" - "ਧੁਨੀ" "ਨੋਟ-ਕਥਨ ਭੇਜਿਆ ਗਿਆ" diff --git a/java/com/android/incallui/incall/impl/res/values-pl/strings.xml b/java/com/android/incallui/incall/impl/res/values-pl/strings.xml index 4bf6a5833f..9971d75532 100644 --- a/java/com/android/incallui/incall/impl/res/values-pl/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-pl/strings.xml @@ -1,18 +1,33 @@ + + "Rozmowa wid." "Wstrzymaj" "Dodaj poł." "Wycisz" + "Zakończ" "Klawiatura" - "Głośnik" "– włączony" "– wyłączony" "Scal" "Zarządzaj" "Zarządzaj rozmówcami" "Przełącz" - "Dźwięk" "Notatka wysłana" diff --git a/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml b/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml index 7ca6b6b6be..538c20c0be 100644 --- a/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml @@ -1,18 +1,33 @@ + + "Videocham." "Em espera" "Adic chamada" "Desativar" + "Encerrar" "Teclado" - "Alto-falante" "ativado" "desativado" "Mesclar" "Gerenciar" "Gerenciar os autores das chamadas" "Trocar" - "Som" "Nota enviada" diff --git a/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml b/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml index 750e57e375..376ee84433 100644 --- a/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml @@ -1,18 +1,33 @@ + + "Videochamada" "Em espera" "Adic. cham." "Desativ. som" + "Term. cham." "Teclado" - "Altifalante" ", ativado" ", desativado" "Unir" "Gerir" "Gerir autores das chamadas" "Alternar" - "Som" "Nota enviada" diff --git a/java/com/android/incallui/incall/impl/res/values-pt/strings.xml b/java/com/android/incallui/incall/impl/res/values-pt/strings.xml index 7ca6b6b6be..538c20c0be 100644 --- a/java/com/android/incallui/incall/impl/res/values-pt/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-pt/strings.xml @@ -1,18 +1,33 @@ + + "Videocham." "Em espera" "Adic chamada" "Desativar" + "Encerrar" "Teclado" - "Alto-falante" "ativado" "desativado" "Mesclar" "Gerenciar" "Gerenciar os autores das chamadas" "Trocar" - "Som" "Nota enviada" diff --git a/java/com/android/incallui/incall/impl/res/values-ro/strings.xml b/java/com/android/incallui/incall/impl/res/values-ro/strings.xml index 1f93da9be0..81dcdf3cce 100644 --- a/java/com/android/incallui/incall/impl/res/values-ro/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ro/strings.xml @@ -1,18 +1,33 @@ + + "Apel video" "În așteptare" "Încă un apel" "Dezactivați" + "Încheiați" "Tastatură" - "Difuzor" ", e activat" ", dezactivat" "Îmbinați" "Gestionați" "Gestionați apelanții" "Schimbați" - "Sunet" "Nota a fost trimisă" diff --git a/java/com/android/incallui/incall/impl/res/values-ru/strings.xml b/java/com/android/incallui/incall/impl/res/values-ru/strings.xml index 89192c3aea..274f8fff7f 100644 --- a/java/com/android/incallui/incall/impl/res/values-ru/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ru/strings.xml @@ -1,18 +1,33 @@ + + "Видеовызов" "Удерживать" "Добавить вызов" "Выкл. звук" + "Завершить вызов" "Клавиатура" - "Динамик" ", включен" ", отключен" "Объединить" "Управление" "Управление абонентами" "Переключить" - "Звук" "Сообщение отправлено" diff --git a/java/com/android/incallui/incall/impl/res/values-si/strings.xml b/java/com/android/incallui/incall/impl/res/values-si/strings.xml index 209bb77b1a..a600c2193e 100644 --- a/java/com/android/incallui/incall/impl/res/values-si/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-si/strings.xml @@ -1,18 +1,33 @@ + + "වීඩියෝ ඇමතුම" "රඳවා ගන්න" "ඇමතුම එක් ක." "නිහඬ කරන්න" + "ඇමතුම නිම ක." "යතුරු පුවරුව" - "ස්පීකරය" ", සක්‍රියයි" ", අක්‍රියයි" "ඒකාබද්ධ කර." "කළමනාකරණය ක." "අමතන්නන් කළමනාකරණය කරන්න" "මාරු කරන්න" - "හඬ" "සටහන යවන ලදී" diff --git a/java/com/android/incallui/incall/impl/res/values-sk/strings.xml b/java/com/android/incallui/incall/impl/res/values-sk/strings.xml index 4e06aee32b..d74d19e221 100644 --- a/java/com/android/incallui/incall/impl/res/values-sk/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sk/strings.xml @@ -1,18 +1,33 @@ + + "Videohovor" "Podržať" "Pridať hovor" "Vypnúť zvuk" + "Ukonč. hovor" "Klávesnica" - "Reproduktor" ", je zapnutý" ", je vypnutý" "Zlúčiť" "Spravovať" "Spravovať volajúcich" "Zameniť" - "Zvuk" "Poznámka bola odoslaná" diff --git a/java/com/android/incallui/incall/impl/res/values-sl/strings.xml b/java/com/android/incallui/incall/impl/res/values-sl/strings.xml index 7cdb6c88c8..782ce444bf 100644 --- a/java/com/android/incallui/incall/impl/res/values-sl/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sl/strings.xml @@ -1,18 +1,33 @@ + + "Videoklic" "Zadrži" "Dodaj klic" "Izklopi zvok" + "Končaj klic" "Tipkovnica" - "Zvočnik" ", vklopljen" ", izklopljen" "Združi" "Upravljanje" "Upravljanje klicateljev" "Zamenjaj" - "Zvok" "Opomba je poslana" diff --git a/java/com/android/incallui/incall/impl/res/values-sq/strings.xml b/java/com/android/incallui/incall/impl/res/values-sq/strings.xml index 9ba18b5f48..a0fca3668e 100644 --- a/java/com/android/incallui/incall/impl/res/values-sq/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sq/strings.xml @@ -1,18 +1,33 @@ + + "Video tel." "Në pritje" "Shto telef." "Hiqi zërin" + "Mbyll tel." "Blloku i tasteve" - "Altoparlant" ", është aktiv" ", është joaktiv" "Shkri" "Menaxho" "Menaxho telefonuesit" "Shkëmbe" - "Tingulli" "Shënimi u dërgua" diff --git a/java/com/android/incallui/incall/impl/res/values-sr/strings.xml b/java/com/android/incallui/incall/impl/res/values-sr/strings.xml index 56a968453c..ec704511b2 100644 --- a/java/com/android/incallui/incall/impl/res/values-sr/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sr/strings.xml @@ -1,18 +1,33 @@ + + "Видео позив" "На чекање" "Додај позив" "Искључи звук" + "Заврши позив" "Тастатура" - "Звучник" ", укључен" ", искључен" "Обједини" "Управљај" "Управљајте позиваоцима" "Замени" - "Звук" "Белешка је послата" diff --git a/java/com/android/incallui/incall/impl/res/values-sv/strings.xml b/java/com/android/incallui/incall/impl/res/values-sv/strings.xml index 27d83b74b0..ded45221cc 100644 --- a/java/com/android/incallui/incall/impl/res/values-sv/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sv/strings.xml @@ -1,18 +1,33 @@ + + "Videosamtal" "Parkera" "Lägg t samt." "Ljud av" + "Avsl. samtal" "Knappsats" - "Högtalare" ", är på" ", är av" "Sammanfoga" "Hantera" "Hantera uppringare" "Växla" - "Ljud" "Anteckning skickad" diff --git a/java/com/android/incallui/incall/impl/res/values-sw/strings.xml b/java/com/android/incallui/incall/impl/res/values-sw/strings.xml index 136fe1713f..df634f4694 100644 --- a/java/com/android/incallui/incall/impl/res/values-sw/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-sw/strings.xml @@ -1,18 +1,33 @@ + + "Hangout ya video" "Shikilia" "Ongeza simu" "Zima maikrofoni" + "Kata simu" "Vitufe vya Simu" - "Spika" ", kimewashwa" ", kimezimwa" "Unganisha" "Dhibiti" "Dhibiti wanaopiga simu" "Badili" - "Sauti" "Dokezo limetumwa" diff --git a/java/com/android/incallui/incall/impl/res/values-ta/strings.xml b/java/com/android/incallui/incall/impl/res/values-ta/strings.xml index 342f8d0419..5c94abff41 100644 --- a/java/com/android/incallui/incall/impl/res/values-ta/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ta/strings.xml @@ -1,18 +1,33 @@ + + "வீடியோ கால்" "ஹோல்டில் வை" "அழைப்பை சேர்" "முடக்கு" + "அழைப்பை முடி" "விசைத்தளம்" - "ஸ்பீக்கர்" ", ஆன்" ", ஆஃப்" "இணை" "நிர்வகி" "அழைப்பாளர்களை நிர்வகிக்கும்" "மாற்று" - "ஒலி" "குறிப்பு அனுப்பப்பட்டது" diff --git a/java/com/android/incallui/incall/impl/res/values-te/strings.xml b/java/com/android/incallui/incall/impl/res/values-te/strings.xml index 004895647b..0cb3fb837c 100644 --- a/java/com/android/incallui/incall/impl/res/values-te/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-te/strings.xml @@ -1,18 +1,33 @@ + + "వీడియో కాల్" "హోల్డ్ చేయి" "కాల్ జోడించు" "మ్యూట్ చేయి" + "కాల్ ముగించు" "కీప్యాడ్" - "స్పీకర్" ", ఆన్‌లో ఉంది" ", ఆఫ్‌లో ఉంది" "విలీనం చేయి" "నిర్వహించు" "కాలర్‌లను నిర్వహిస్తుంది" "మార్చు" - "శబ్దం" "గమనిక పంపబడింది" diff --git a/java/com/android/incallui/incall/impl/res/values-th/strings.xml b/java/com/android/incallui/incall/impl/res/values-th/strings.xml index a740288423..0929cfc23f 100644 --- a/java/com/android/incallui/incall/impl/res/values-th/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-th/strings.xml @@ -1,18 +1,33 @@ + + "แฮงเอาท์วิดีโอ" "พักสาย" "เพิ่มการโทร" "ปิดเสียง" + "วางสาย" "ปุ่มกด" - "ลำโพง" "เปิดอยู่" "ปิดอยู่" "รวม" "จัดการ" "จัดการผู้โทร" "สลับ" - "เสียง" "ส่งโน้ตแล้ว" diff --git a/java/com/android/incallui/incall/impl/res/values-tl/strings.xml b/java/com/android/incallui/incall/impl/res/values-tl/strings.xml index 46ff797313..1ac2ef88cf 100644 --- a/java/com/android/incallui/incall/impl/res/values-tl/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-tl/strings.xml @@ -1,18 +1,33 @@ + + "Video call" "I-hold" "Mag-add: tawag" "I-mute" + "Tapusin ang tawag" "Keypad" - "Speaker" ",ay On" ", ay Off" "I-merge" "Pamahalaan" "Pamahalaan ang mga tumatawag" "Pagpalitin" - "Tunog" "Naipadala ang tala" diff --git a/java/com/android/incallui/incall/impl/res/values-tr/strings.xml b/java/com/android/incallui/incall/impl/res/values-tr/strings.xml index 89ca3302f6..241b694291 100644 --- a/java/com/android/incallui/incall/impl/res/values-tr/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-tr/strings.xml @@ -1,18 +1,33 @@ + + "Görü. görüş." "Beklemeye al" "Çağrı ekle" "Sesi kapat" + "Çğryı sonldr" "Tuş takımı" - "Hoparlör" ", Açık" ", Kapalı" "Birleştir" "Yönet" "Arayanları yönetin" "Değiştir" - "Ses" "Not gönderildi" diff --git a/java/com/android/incallui/incall/impl/res/values-uk/strings.xml b/java/com/android/incallui/incall/impl/res/values-uk/strings.xml index 516bcb757d..1821556fa1 100644 --- a/java/com/android/incallui/incall/impl/res/values-uk/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-uk/strings.xml @@ -1,18 +1,33 @@ + + "Відеодзвінок" "Утримувати" "Дод. виклик" "Без звуку" + "Завер. викл." "Клавіатура" - "Динамік" ", увімкнено" ", вимкнено" "Об’єднати" "Керувати" "Керувати абонентами" "Поміняти" - "Звук" "Нотатку надіслано" diff --git a/java/com/android/incallui/incall/impl/res/values-ur/strings.xml b/java/com/android/incallui/incall/impl/res/values-ur/strings.xml index 53ba19031c..fed0af6c24 100644 --- a/java/com/android/incallui/incall/impl/res/values-ur/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-ur/strings.xml @@ -1,18 +1,33 @@ + + "ویڈیو کال" "ہولڈ کریں" "کال شامل کریں" "خاموش کریں" + "کال ختم کریں" "کی پیڈ" - "اسپیکر" "، آن ہے" "، آف ہے" "ضم کریں" "نظم کریں" "کالرز کا نظم کریں" "تبادلہ کریں" - "آواز" "نوٹ بھیج دیا گیا" diff --git a/java/com/android/incallui/incall/impl/res/values-uz/strings.xml b/java/com/android/incallui/incall/impl/res/values-uz/strings.xml index 8818489650..7d6af27b23 100644 --- a/java/com/android/incallui/incall/impl/res/values-uz/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-uz/strings.xml @@ -1,18 +1,33 @@ + + "Video qo‘n." "Pauza" "Chaqiruv" "Ovozsiz" + "Tugatish" "Klaviatura" - "Karnay" ", yoniq" ", o‘chiq" - "Birlashtir." + "Birlashtirish" "Boshqarish" "Qo‘ng‘iroq qiluvchilarni boshqarish" "Almashish" - "Ovoz" "Qayd yuborildi" diff --git a/java/com/android/incallui/incall/impl/res/values-vi/strings.xml b/java/com/android/incallui/incall/impl/res/values-vi/strings.xml index 29f85efab1..42e320a7a9 100644 --- a/java/com/android/incallui/incall/impl/res/values-vi/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-vi/strings.xml @@ -1,18 +1,33 @@ + + "Gọi điện video" "Giữ" "Thêm cuộc gọi" "Tắt tiếng" + "Kết thúc cuộc gọi" "Bàn phím" - "Loa" ", đang bật" ", đang tắt" "Hợp nhất" "Quản lý" "Quản lý người gọi" "Hoán đổi" - "Âm thanh" "Đã gửi ghi chú" diff --git a/java/com/android/incallui/incall/impl/res/values-w260dp-h520dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-w260dp-h520dp/dimens.xml deleted file mode 100644 index e73eb934c5..0000000000 --- a/java/com/android/incallui/incall/impl/res/values-w260dp-h520dp/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - 16dp - 16dp - 64dp - 92dp - diff --git a/java/com/android/incallui/incall/impl/res/values-w260dp-h580dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-w260dp-h580dp/dimens.xml new file mode 100644 index 0000000000..834ea2f302 --- /dev/null +++ b/java/com/android/incallui/incall/impl/res/values-w260dp-h580dp/dimens.xml @@ -0,0 +1,23 @@ + + + + + 16dp + 16dp + 64dp + 92dp + diff --git a/java/com/android/incallui/incall/impl/res/values-w300dp-h540dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-w300dp-h540dp/dimens.xml deleted file mode 100644 index 502ae72dc7..0000000000 --- a/java/com/android/incallui/incall/impl/res/values-w300dp-h540dp/dimens.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 32dp - 32dp - diff --git a/java/com/android/incallui/incall/impl/res/values-w300dp-h620dp/dimens.xml b/java/com/android/incallui/incall/impl/res/values-w300dp-h620dp/dimens.xml new file mode 100644 index 0000000000..c7ac35efca --- /dev/null +++ b/java/com/android/incallui/incall/impl/res/values-w300dp-h620dp/dimens.xml @@ -0,0 +1,21 @@ + + + + + 32dp + 32dp + diff --git a/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml b/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml index ec64045692..f0cca9060a 100644 --- a/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml @@ -1,18 +1,33 @@ + + "视频通话" "保持" "添加通话" "静音" + "结束通话" "拨号键盘" - "免提" ",已开启" ",已关闭" "合并" "管理" "管理来电者" "切换" - "声音" "已发送备注" diff --git a/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml b/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml index 63cd6d8c84..c38ef35a05 100644 --- a/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml @@ -1,18 +1,33 @@ + + "視像通話" "保留" "新增通話" "靜音" + "結束通話" "小鍵盤" - "揚聲器" ",已開啟" ",已關閉" "合併" "管理" "管理來電者" "切換" - "音效" "已傳送筆記" diff --git a/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml b/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml index be3103ba6d..c04b8309e7 100644 --- a/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml @@ -1,18 +1,33 @@ + + "視訊通話" "保留" "新增通話" "靜音" + "結束通話" "撥號鍵盤" - "擴音模式" ",已開啟" ",已關閉" "合併" "管理" "管理來電者" "切換" - "音訊" "備註已送出" diff --git a/java/com/android/incallui/incall/impl/res/values-zu/strings.xml b/java/com/android/incallui/incall/impl/res/values-zu/strings.xml index df3f79484b..a23a1d5e34 100644 --- a/java/com/android/incallui/incall/impl/res/values-zu/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values-zu/strings.xml @@ -1,18 +1,33 @@ + + "Ikholi yevidiyo ye-Hangout" "Bamba" "Engeza ikholi" "Thulisa" + "Qeda ikholi" "Ikhiphedi" - "Isipikha" ", ivuliwe" ", ivaliwe" "Hlanganisa" "Phatha" "Phatha abashayi" "Shintsha" - "Umsindo" "Inothi lithunyelwe" diff --git a/java/com/android/incallui/incall/impl/res/values/strings.xml b/java/com/android/incallui/incall/impl/res/values/strings.xml index 054ca9687b..2b30dfa538 100644 --- a/java/com/android/incallui/incall/impl/res/values/strings.xml +++ b/java/com/android/incallui/incall/impl/res/values/strings.xml @@ -1,4 +1,19 @@ + Mute - - Keypad + End call - - Speaker + Keypad , is on @@ -45,12 +60,9 @@ [CHAR LIMIT=12] --> Swap - - Sound Note sent - \ No newline at end of file + diff --git a/java/com/android/incallui/incall/protocol/PrimaryCallState.java b/java/com/android/incallui/incall/protocol/PrimaryCallState.java index 2ae6a18e5b..26dd3887aa 100644 --- a/java/com/android/incallui/incall/protocol/PrimaryCallState.java +++ b/java/com/android/incallui/incall/protocol/PrimaryCallState.java @@ -44,6 +44,7 @@ public class PrimaryCallState { public final boolean isVoiceMailNumber; public final boolean isRemotelyHeld; public final boolean isBusinessNumber; + public final boolean supportsCallOnHold; // TODO: Convert to autovalue. b/34502119 public static PrimaryCallState createEmptyPrimaryCallState() { @@ -67,7 +68,8 @@ public class PrimaryCallState { 0, false /* isVoiceMailNumber */, false /* isRemotelyHeld */, - false /* isBusinessNumber */); + false /* isBusinessNumber */, + true /* supportsCallOnHold */); } public PrimaryCallState( @@ -90,7 +92,8 @@ public class PrimaryCallState { long connectTimeMillis, boolean isVoiceMailNumber, boolean isRemotelyHeld, - boolean isBusinessNumber) { + boolean isBusinessNumber, + boolean supportsCallOnHold) { this.state = state; this.isVideoCall = isVideoCall; this.sessionModificationState = sessionModificationState; @@ -111,6 +114,7 @@ public class PrimaryCallState { this.isVoiceMailNumber = isVoiceMailNumber; this.isRemotelyHeld = isRemotelyHeld; this.isBusinessNumber = isBusinessNumber; + this.supportsCallOnHold = supportsCallOnHold; } @Override diff --git a/java/com/android/incallui/res/drawable-hdpi/img_conference.png b/java/com/android/incallui/res/drawable-hdpi/img_conference.png deleted file mode 100644 index 3d9f683a58a696d3afa6a61031959036a2c15836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7037 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 F{1@g&Cy)RD diff --git a/java/com/android/incallui/res/drawable-xxhdpi/img_conference.png b/java/com/android/incallui/res/drawable-xxhdpi/img_conference.png deleted file mode 100644 index a8dba5ed02efd651135c248d2dbcefc4962217ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16306 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 W$*+_K@@;AcXQ*qc^ZeAs=>G#S2Pu32 diff --git a/java/com/android/incallui/res/values-ca/strings.xml b/java/com/android/incallui/res/values-ca/strings.xml index 5148db5408..ad34b00ef9 100644 --- a/java/com/android/incallui/res/values-ca/strings.xml +++ b/java/com/android/incallui/res/values-ca/strings.xml @@ -136,6 +136,6 @@ "En una trucada" "S\'està continuant la trucada mitjançant dades mòbils…" "No s\'ha pogut canviar a la xarxa Wi-Fi" - "La videotrucada es mantindrà a la xarxa mòbil. És possible que s\'apliquin càrrecs de dades estàndard." + "La videotrucada es mantindrà a la xarxa mòbil. És possible que s\'hi apliquin càrrecs de dades estàndard." "No ho tornis a mostrar" diff --git a/java/com/android/incallui/res/values-mcc262-mnc01/strings.xml b/java/com/android/incallui/res/values-mcc262-mnc01/strings.xml new file mode 100644 index 0000000000..2679653a74 --- /dev/null +++ b/java/com/android/incallui/res/values-mcc262-mnc01/strings.xml @@ -0,0 +1,32 @@ + + + + + + + Ongoing WLAN Call + + Ongoing WLAN work call + + Incoming WLAN Call + + Incoming WLAN work call + \ No newline at end of file diff --git a/java/com/android/incallui/res/values-uz/strings.xml b/java/com/android/incallui/res/values-uz/strings.xml index 38285015a6..b04972ffd1 100644 --- a/java/com/android/incallui/res/values-uz/strings.xml +++ b/java/com/android/incallui/res/values-uz/strings.xml @@ -36,7 +36,7 @@ "Chiquvchi Wi-Fi qo‘ng‘irog‘i" "Chiquvchi Wi-Fi ishchi qo‘ng‘irog‘i" "Kutmoqda" - "Kiruvchi qo‘ng‘iroq" + "Kiruvchi chaqiruv" "Suratga ega kiruvchi chaqiruv" "Xabarga ega kiruvchi chaqiruv" "Joylashuv axborotiga ega kiruvchi chaqiruv" diff --git a/java/com/android/incallui/res/values/dimens.xml b/java/com/android/incallui/res/values/dimens.xml index 18816f645b..fb4934d015 100644 --- a/java/com/android/incallui/res/values/dimens.xml +++ b/java/com/android/incallui/res/values/dimens.xml @@ -38,7 +38,7 @@ 0dp 20sp 50dp - 36sp + 36dp 10dp diff --git a/java/com/android/incallui/res/values/styles.xml b/java/com/android/incallui/res/values/styles.xml index 68a38f0b26..3c036c95ff 100644 --- a/java/com/android/incallui/res/values/styles.xml +++ b/java/com/android/incallui/res/values/styles.xml @@ -78,4 +78,13 @@ @color/dialer_theme_color + + diff --git a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_image.xml b/java/com/android/incallui/sessiondata/res/layout/fragment_composer_image.xml index ed29e78c4b..3b3327d4f1 100644 --- a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_image.xml +++ b/java/com/android/incallui/sessiondata/res/layout/fragment_composer_image.xml @@ -24,8 +24,8 @@ + android:scaleType="centerCrop"/> + + diff --git a/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java b/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java new file mode 100644 index 0000000000..5ab821be0b --- /dev/null +++ b/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java @@ -0,0 +1,91 @@ +/* + * 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.incallui.speakerbuttonlogic; + +import android.support.annotation.DrawableRes; +import android.support.annotation.IntDef; +import android.support.annotation.StringRes; +import android.telecom.CallAudioState; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** Info about how a "Speaker" button should be displayed */ +public class SpeakerButtonInfo { + + // Testing note: most of this is exercised in ReturnToCallTest.java + + /** Preferred size for icons */ + @Retention(RetentionPolicy.SOURCE) + @IntDef({IconSize.SIZE_24_DP, IconSize.SIZE_36_DP}) + public @interface IconSize { + int SIZE_24_DP = 1; + int SIZE_36_DP = 2; + } + + @DrawableRes public final int icon; + @StringRes public final int contentDescription; + @StringRes public final int label; + public final boolean checkable; + public final boolean isChecked; + + public SpeakerButtonInfo(CallAudioState audioState, @IconSize int iconSize) { + if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH) + == CallAudioState.ROUTE_BLUETOOTH) { + checkable = false; + isChecked = false; + label = R.string.incall_label_audio; + + if ((audioState.getRoute() & CallAudioState.ROUTE_BLUETOOTH) + == CallAudioState.ROUTE_BLUETOOTH) { + icon = + iconSize == IconSize.SIZE_36_DP + ? R.drawable.quantum_ic_bluetooth_audio_white_36 + : R.drawable.quantum_ic_bluetooth_audio_white_24; + contentDescription = R.string.incall_content_description_bluetooth; + } else if ((audioState.getRoute() & CallAudioState.ROUTE_SPEAKER) + == CallAudioState.ROUTE_SPEAKER) { + icon = + iconSize == IconSize.SIZE_36_DP + ? R.drawable.quantum_ic_volume_up_white_36 + : R.drawable.quantum_ic_volume_up_white_24; + contentDescription = R.string.incall_content_description_speaker; + } else if ((audioState.getRoute() & CallAudioState.ROUTE_WIRED_HEADSET) + == CallAudioState.ROUTE_WIRED_HEADSET) { + icon = + iconSize == IconSize.SIZE_36_DP + ? R.drawable.quantum_ic_headset_white_36 + : R.drawable.quantum_ic_headset_white_24; + contentDescription = R.string.incall_content_description_headset; + } else { + icon = + iconSize == IconSize.SIZE_36_DP + ? R.drawable.quantum_ic_phone_in_talk_white_36 + : R.drawable.quantum_ic_phone_in_talk_white_24; + contentDescription = R.string.incall_content_description_earpiece; + } + } else { + checkable = true; + isChecked = audioState.getRoute() == CallAudioState.ROUTE_SPEAKER; + label = R.string.incall_label_speaker; + icon = + iconSize == IconSize.SIZE_36_DP + ? R.drawable.quantum_ic_volume_up_white_36 + : R.drawable.quantum_ic_volume_up_white_24; + contentDescription = R.string.incall_content_description_speaker; + } + } +} diff --git a/java/com/android/incallui/video/impl/SpeakerButtonController.java b/java/com/android/incallui/video/impl/SpeakerButtonController.java index e12032abf7..d98545feb2 100644 --- a/java/com/android/incallui/video/impl/SpeakerButtonController.java +++ b/java/com/android/incallui/video/impl/SpeakerButtonController.java @@ -88,7 +88,7 @@ public class SpeakerButtonController implements OnCheckedChangeListener, OnClick icon = R.drawable.quantum_ic_headset_white_36; contentDescriptionResId = R.string.incall_content_description_headset; } else { - icon = R.drawable.ic_phone_audio_white_36dp; + icon = R.drawable.quantum_ic_phone_in_talk_white_36; contentDescriptionResId = R.string.incall_content_description_earpiece; } } else { diff --git a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java index b7a960e352..489f72b7d7 100644 --- a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java +++ b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java @@ -495,7 +495,7 @@ public class SurfaceViewVideoCallFragment extends Fragment } private View[] getAllPreviewRelatedViews() { - return new View[] {previewRoot}; + return new View[] {previewRoot, mutePreviewOverlay}; } private int getOffsetTop(View view) { @@ -644,12 +644,6 @@ public class SurfaceViewVideoCallFragment extends Fragment updateVideoOffViews(); } - /** - * This method scales the video feed inside the texture view, it doesn't change the texture view's - * size. In the old UI we would change the view size to match the aspect ratio of the video. In - * the new UI the view is always square (with the circular clip) so we have to do additional work - * to make sure the non-square video doesn't look squished. - */ @Override public void onLocalVideoDimensionsChanged() { LogUtil.i("SurfaceViewVideoCallFragment.onLocalVideoDimensionsChanged", null); @@ -833,6 +827,9 @@ public class SurfaceViewVideoCallFragment extends Fragment inCallButtonUiDelegate.setAudioRoute(audioRoute); } + @Override + public void onAudioRouteSelectorDismiss() {} + @Override public void setPrimary(@NonNull PrimaryInfo primaryInfo) { LogUtil.i("SurfaceViewVideoCallFragment.setPrimary", primaryInfo.toString()); diff --git a/java/com/android/incallui/video/impl/VideoCallFragment.java b/java/com/android/incallui/video/impl/VideoCallFragment.java index 8e2f5aefd9..6e45f928a5 100644 --- a/java/com/android/incallui/video/impl/VideoCallFragment.java +++ b/java/com/android/incallui/video/impl/VideoCallFragment.java @@ -59,6 +59,7 @@ import android.widget.TextView; import com.android.dialer.common.Assert; import com.android.dialer.common.FragmentUtils; import com.android.dialer.common.LogUtil; +import com.android.dialer.common.concurrent.ThreadUtil; import com.android.dialer.compat.ActivityCompat; import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment; import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter; @@ -665,22 +666,14 @@ public class VideoCallFragment extends Fragment updateRemoteVideoScaling(); } - /** - * This method scales the video feed inside the texture view, it doesn't change the texture view's - * size. In the old UI we would change the view size to match the aspect ratio of the video. In - * the new UI the view is always square (with the circular clip) so we have to do additional work - * to make sure the non-square video doesn't look squished. - */ @Override public void onLocalVideoDimensionsChanged() { LogUtil.i("VideoCallFragment.onLocalVideoDimensionsChanged", null); - updatePreviewVideoScaling(); } @Override public void onLocalVideoOrientationChanged() { LogUtil.i("VideoCallFragment.onLocalVideoOrientationChanged", null); - updatePreviewVideoScaling(); } /** Called when the remote video's dimensions change. */ @@ -852,6 +845,9 @@ public class VideoCallFragment extends Fragment inCallButtonUiDelegate.setAudioRoute(audioRoute); } + @Override + public void onAudioRouteSelectorDismiss() {} + @Override public void setPrimary(@NonNull PrimaryInfo primaryInfo) { LogUtil.i("VideoCallFragment.setPrimary", primaryInfo.toString()); @@ -1045,7 +1041,6 @@ public class VideoCallFragment extends Fragment params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); previewTextureView.setLayoutParams(params); previewTextureView.setOutlineProvider(circleOutlineProvider); - updatePreviewVideoScaling(); updateOverlayBackground(); contactGridManager.setIsMiddleRowVisible(false); updateMutePreviewOverlayVisibility(); @@ -1053,6 +1048,9 @@ public class VideoCallFragment extends Fragment previewOffBlurredImageView.setLayoutParams(params); previewOffBlurredImageView.setOutlineProvider(circleOutlineProvider); previewOffBlurredImageView.setClipToOutline(true); + + // Wait until the layout pass has finished before updating the scaling + ThreadUtil.postOnUiThread(this::updatePreviewVideoScaling); } private void updateVideoOffViews() { diff --git a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml index c672466759..1a2bc2429a 100644 --- a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml +++ b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml @@ -14,7 +14,7 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License --> - - - + + - + diff --git a/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml b/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml index a53fb64043..e9e7f9e8b5 100644 --- a/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml +++ b/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml @@ -19,5 +19,5 @@ 72dp 88dp 88dp - 104dp + 116dp diff --git a/java/com/android/incallui/video/impl/res/values-land/dimens.xml b/java/com/android/incallui/video/impl/res/values-land/dimens.xml index 6485735e2b..d0a5e409ac 100644 --- a/java/com/android/incallui/video/impl/res/values-land/dimens.xml +++ b/java/com/android/incallui/video/impl/res/values-land/dimens.xml @@ -15,5 +15,5 @@ ~ limitations under the License --> - 92dp + 96dp diff --git a/java/com/android/incallui/video/impl/res/values-land/styles.xml b/java/com/android/incallui/video/impl/res/values-land/styles.xml index a809708df6..f60dbd1d6a 100644 --- a/java/com/android/incallui/video/impl/res/values-land/styles.xml +++ b/java/com/android/incallui/video/impl/res/values-land/styles.xml @@ -16,7 +16,8 @@ -->