diff options
114 files changed, 903 insertions, 594 deletions
diff --git a/aconfig/settings_bluetooth_declarations.aconfig b/aconfig/settings_bluetooth_declarations.aconfig index 4d2528a71db..7f3089500f6 100644 --- a/aconfig/settings_bluetooth_declarations.aconfig +++ b/aconfig/settings_bluetooth_declarations.aconfig @@ -54,3 +54,11 @@ flag { purpose: PURPOSE_BUGFIX } } + +flag { + name: "enable_remove_association_bt_unpair" + is_exported: true + namespace: "companion_device_manager" + description: "Allow to disassociate when to forget a BT pair device" + bug: "365613753" + } diff --git a/res-product/values/strings.xml b/res-product/values/strings.xml index c121406a03f..48810b9cc49 100644 --- a/res-product/values/strings.xml +++ b/res-product/values/strings.xml @@ -419,6 +419,12 @@ <string name="bluetooth_unpair_dialog_body" product="tablet">Your tablet will no longer be paired with <xliff:g id="device_name">%1$s</xliff:g></string> <!-- Bluetooth device details. The body of a confirmation dialog for unpairing a paired device. --> <string name="bluetooth_unpair_dialog_body" product="device">Your device will no longer be paired with <xliff:g id="device_name">%1$s</xliff:g></string> + <!-- Bluetooth device details. The body of a confirmation dialog for unpairing a paired device if there's any associations associated with this device [CHAR_LIMIT=NONE] --> + <string name="bluetooth_unpair_dialog_with_associations_body" product="default">Your phone will no longer be paired with <xliff:g id="device_name">%1$s</xliff:g>.\u0020<xliff:g id="app_name">%2$s</xliff:g> will no longer manage the device</string> + <!-- Bluetooth device details. The body of a confirmation dialog for unpairing a paired device if there's any associations associated with this device [CHAR_LIMIT=NONE] --> + <string name="bluetooth_unpair_dialog_with_associations_body" product="tablet">Your tablet will no longer be paired with <xliff:g id="device_name">%1$s</xliff:g>.\u0020<xliff:g id="app_name">%2$s</xliff:g> will no longer manage the device</string> + <!-- Bluetooth device details. The body of a confirmation dialog for unpairing a paired device if there's any associations associated with this device [CHAR_LIMIT=NONE] --> + <string name="bluetooth_unpair_dialog_with_associations_body" product="device">Your device will no longer be paired with <xliff:g id="device_name">%1$s</xliff:g>.\u0020<xliff:g id="app_name">%2$s</xliff:g> will no longer manage the device</string> <!-- Virtual device details. The body of a confirmation dialog for unpairing a paired device. [CHAR LIMIT=none] --> <string name="virtual_device_forget_dialog_body" product="default"><xliff:g id="device_name">%1$s</xliff:g> will no longer be connected to this phone. If you continue, some apps and app streaming may stop working.</string> <!-- Virtual device details. The body of a confirmation dialog for unpairing a paired device. [CHAR LIMIT=none] --> diff --git a/res/drawable/keyboard_arrow_left.xml b/res/drawable/keyboard_arrow_left.xml new file mode 100644 index 00000000000..c2ffc1d21cf --- /dev/null +++ b/res/drawable/keyboard_arrow_left.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2025 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960" android:tint="?attr/colorControlNormal" android:autoMirrored="true"> + <path android:fillColor="@color/settingslib_materialColorPrimary" android:pathData="M560,720L320,480L560,240L616,296L432,480L616,664L560,720Z"/> +</vector>
\ No newline at end of file diff --git a/res/drawable/keyboard_arrow_right.xml b/res/drawable/keyboard_arrow_right.xml new file mode 100644 index 00000000000..ba763690521 --- /dev/null +++ b/res/drawable/keyboard_arrow_right.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2025 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960" android:tint="?attr/colorControlNormal" android:autoMirrored="true"> + <path android:fillColor="@color/settingslib_materialColorPrimary" android:pathData="M504,480L320,296L376,240L616,480L376,720L320,664L504,480Z" /> +</vector>
\ No newline at end of file diff --git a/res/layout/accessibility_text_reading_preview.xml b/res/layout/accessibility_text_reading_preview.xml index 830d9e66778..2532a7957eb 100644 --- a/res/layout/accessibility_text_reading_preview.xml +++ b/res/layout/accessibility_text_reading_preview.xml @@ -38,20 +38,47 @@ android:text="@string/screen_zoom_preview_title" style="@style/AccessibilityTextReadingPreviewTitle" /> - <com.android.settings.accessibility.TextReadingPreviewPager - android:id="@+id/preview_pager" + <LinearLayout android:layout_width="match_parent" - android:layout_height="217dp" - android:contentDescription="@string/preview_pager_content_description" - android:nestedScrollingEnabled="true" /> - - <com.android.settings.widget.DotsPageIndicator - android:id="@+id/page_indicator" - style="@style/PreviewPagerPageIndicator" - android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:padding="6dp" - android:visibility="gone" /> + android:orientation="vertical"> + <com.android.settings.accessibility.TextReadingPreviewPager + android:id="@+id/preview_pager" + android:layout_width="wrap_content" + android:layout_height="217dp" + android:contentDescription="@string/preview_pager_content_description" + android:nestedScrollingEnabled="true" /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_gravity="center_horizontal" + android:gravity="center_horizontal"> + <ImageButton + android:id="@+id/preview_left_button" + android:src="@drawable/keyboard_arrow_left" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_gravity="center_vertical" + android:contentDescription="@string/preview_pager_previous_button" + style="?android:attr/borderlessButtonStyle" /> + <com.android.settings.widget.DotsPageIndicator + android:id="@+id/page_indicator" + style="@style/PreviewPagerPageIndicator" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:padding="6dp" + android:visibility="gone" /> + <ImageButton + android:id="@+id/preview_right_button" + android:src="@drawable/keyboard_arrow_right" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_gravity="center_vertical" + android:contentDescription="@string/preview_pager_next_button" + style="?android:attr/borderlessButtonStyle" /> + </LinearLayout> + </LinearLayout> </LinearLayout> </FrameLayout> diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index d5165c939ef..530dfce499b 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Hoë resolusie"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimum resolusie"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimum resolusie gebruik meer van jou battery. As jy jou resolusie oorskakel, sal sommige apps dalk herbegin."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Gekies"</string> <string name="color_mode_title" msgid="8666690832113906028">"Kleure"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Natuurlik"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Gemaksimeer"</string> diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 8b5dbfcb76b..ed94606a55e 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"ከፍተኛ ጥራት"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"ከፍተኛው ጥራት"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"ከፍተኛው ጥራት የባትሪዎን ተጨማሪ ይጠቀማል። ጥራትዎን መቀየር አንዳንድ መተግበሪያዎች እንደገና እንዲጀምሩ ሊያስደርግ ይችላል።"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ተመርጧል"</string> <string name="color_mode_title" msgid="8666690832113906028">"ቀለማት"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"ተፈጥሯዊ"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"ተጨምሯል"</string> diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 91e3b3f813a..4a8a3e264a8 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"دقة عالية"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"الحد الأقصى للدقة"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"يستهلك الحد الأقصى للدقة مزيدًا من طاقة البطارية. وقد يؤدي تبديل الدقة إلى إعادة تشغيل بعض التطبيقات."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"تم الاختيار"</string> <string name="color_mode_title" msgid="8666690832113906028">"الألوان"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"طبيعية"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"مُحسنة"</string> diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index d253972a83c..0b5a9773f1f 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"উচ্চ ৰিজ\'লিউশ্বন"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"সর্বাধিক ৰিজ’লিউশ্বন"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"সর্বাধিক ৰিজ’লিউশ্বনে আপোনাৰ অধিক বেটাৰী ব্যৱহাৰ কৰে। আপোনাৰ ৰিজ’লিউশ্বনলৈ সলনি কৰিলে কিছুমান এপ্ ৰিষ্টাৰ্ট হ’ব পাৰে।"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"বাছনি কৰা হৈছে"</string> <string name="color_mode_title" msgid="8666690832113906028">"ৰংবোৰ"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"প্ৰাকৃতিক"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"বৃদ্ধি কৰা"</string> diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index ce505f6cda5..9fc5d7f2343 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Yüksək ayırdetmə dəqiqliyi"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maks ayırdetmə dəqiqliyi"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maks ayırdetmə dəqiqliyi batareyanızdan daha çox istifadə edir. Ayırdetmə dəqiqliyinin dəyişdirilməsi bəzi tətbiqlərin yenidən başladılmasına səbəb ola bilər."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seçilib"</string> <string name="color_mode_title" msgid="8666690832113906028">"Rənglər"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Təbii"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Dolğun"</string> diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index 2d2ad3ba4ee..6cb31d16c8d 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -1315,7 +1315,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Visoka rezolucija"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimalna rezolucija"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimalna rezolucija koristi više baterije. Ako pređete na ovu rezoluciju, neke aplikacije će se možda restartovati."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Izabrano je"</string> <string name="color_mode_title" msgid="8666690832113906028">"Boje"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Prirodne"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Pojačane"</string> diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index e37d73afc15..73ebe0c8a11 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Высокая раздзяляльнасць"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Максімальная раздзяляльнасць"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Пры максімальнай раздзяляльнасці хутчэй разраджаецца акумулятар. Пераключэнне на іншую раздзяляльнасць экрана можа прывесці да перазапуску некаторых праграм."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Выбрана"</string> <string name="color_mode_title" msgid="8666690832113906028">"Колеры"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Натуральныя"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Яркія"</string> diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 5c4d56a83dc..5f8560470c2 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Висока разделителна способност"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Максимална разделителна способност"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Максималната разделителна способност изразходва батерията ви в по-голяма степен. Превключването на разделителната способност може да доведе до рестартирането на някои приложения."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Избрано"</string> <string name="color_mode_title" msgid="8666690832113906028">"Цветове"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Естествени"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Подсилени"</string> diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 26089c7e2b4..f30bda15290 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"হাই রেজোলিউশন"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"সর্বাধিক রেজোলিউশন"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"সর্বাধিক রেজোলিউশন ব্যবহার করলে আপনার ব্যাটারির চার্জ বেশি খরচ হয়। রেজোলিউশন পরিবর্তন করা হলে কিছু অ্যাপ রিস্টার্ট হতে পারে।"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"বেছে নেওয়া হয়েছে"</string> <string name="color_mode_title" msgid="8666690832113906028">"রঙ"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"স্বাভাবিক"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"বুস্ট করা"</string> diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 5b4375929cd..8ed4fedc718 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Visoka rezolucija"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimalna rezolucija"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimalna rezolucija troši više baterije. Zbog promjene rezolucije neke aplikacije se mogu ponovo pokrenuti."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Odabrano"</string> <string name="color_mode_title" msgid="8666690832113906028">"Boje"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Prirodne"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Pojačane"</string> diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 4b34545a8f0..a356880847f 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolució"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolució màxima"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"La resolució màxima consumeix més bateria. Si canvies la resolució, és possible que algunes aplicacions es reiniciïn."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seleccionada"</string> <string name="color_mode_title" msgid="8666690832113906028">"Colors"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturals"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Millorats"</string> diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 0bd66538244..325dba5441a 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Vysoké rozlišení"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maximální rozlišení"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maximální rozlišení víc vybíjí baterii. Po přepnutí rozlišení se některé aplikace můžou restartovat."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Vybráno"</string> <string name="color_mode_title" msgid="8666690832113906028">"Barvy"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Přirozené"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Zesílené"</string> diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 7a384bda896..6a616b59df2 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Høj opløsning"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimal opløsning"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimal opløsning bruger mere batteri. Nogle apps genstarter muligvis, hvis du skifter opløsning."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Valgt"</string> <string name="color_mode_title" msgid="8666690832113906028">"Farver"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturlige"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Forstærkede"</string> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 633b2b8f3c8..9dc00d9c353 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Hohe Auflösung"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maximale Auflösung"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Bei maximaler Auflösung wird mehr Akkukapazität verbraucht. Wenn du die Auflösung änderst, werden einige Apps möglicherweise neu gestartet."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Ausgewählt"</string> <string name="color_mode_title" msgid="8666690832113906028">"Farben"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Natürlich"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Verstärkt"</string> diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 06cbb33d4c1..efca6007c78 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Υψηλή ανάλυση"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Μέγιστη ανάλυση"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Η μέγιστη ανάλυση χρησιμοποιεί περισσότερο την μπαταρία. Η αλλαγή της ανάλυσης μπορεί να προκαλέσει επανεκκίνηση ορισμένων εφαρμογών."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Επιλέχθηκε"</string> <string name="color_mode_title" msgid="8666690832113906028">"Χρώματα"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Φυσικό"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Ενισχυμένο"</string> diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index b128d80d5a9..4916707f46f 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"High resolution"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Max resolution"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Max resolution uses more of your battery. Switching your resolution may cause some apps to restart."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selected"</string> <string name="color_mode_title" msgid="8666690832113906028">"Colours"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Natural"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Boosted"</string> diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 9a07172c84d..99750781210 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -1315,7 +1315,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"High resolution"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Max resolution"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Max resolution uses more of your battery. Switching your resolution may cause some apps to restart."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selected"</string> <string name="color_mode_title" msgid="8666690832113906028">"Colors"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Natural"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Boosted"</string> diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 7ca1b5d0ab8..593c655b38c 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"High resolution"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Max resolution"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Max resolution uses more of your battery. Switching your resolution may cause some apps to restart."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selected"</string> <string name="color_mode_title" msgid="8666690832113906028">"Colours"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Natural"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Boosted"</string> diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index d3c742e60dd..68691633688 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"High resolution"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Max resolution"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Max resolution uses more of your battery. Switching your resolution may cause some apps to restart."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selected"</string> <string name="color_mode_title" msgid="8666690832113906028">"Colours"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Natural"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Boosted"</string> diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 0ed369a4de1..4a2dcaec11d 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -1228,7 +1228,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"High resolution"</string> <string name="screen_resolution_option_full" msgid="2694003735219114186">"Full resolution"</string> <string name="screen_resolution_footer" msgid="6772341522952795647">"Full resolution uses more of your battery. Switching your resolution may cause some apps to restart."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selected"</string> <string name="color_mode_title" msgid="8666690832113906028">"Colors"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Natural"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Boosted"</string> diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 5a90ddfb4dd..c7322c5f09d 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolución"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolución máxima"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"La resolución máxima consume más batería. Es posible que, si cambias la resolución, algunas apps se reinicien."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seleccionada"</string> <string name="color_mode_title" msgid="8666690832113906028">"Colores"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturales"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Potenciado"</string> diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 91dda808093..e8ff03af087 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolución"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolución máxima"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"La resolución máxima consume más batería. Cambiar la resolución puede provocar que algunas aplicaciones se reinicien."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seleccionado"</string> <string name="color_mode_title" msgid="8666690832113906028">"Colores"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturales"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Mejorados"</string> diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 1866ca349b6..e5526608a07 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Kõrge eraldusvõime"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimaalne eraldusvõime"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimaalne eraldusvõime tarbib rohkem akut. Eraldusvõime muutmine võib mõne rakenduse taaskäivitada."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Valitud"</string> <string name="color_mode_title" msgid="8666690832113906028">"Värvid"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Loomulikud"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Võimendatud"</string> diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 88697811d2e..87c3b522336 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Bereizmen handia"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Bereizmen handiena"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Bereizmen handienarekin bateria gehiago kontsumitzen da. Bereizmena aldatuz gero, baliteke aplikazio batzuk berrabiaraztea."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Hautatuta"</string> <string name="color_mode_title" msgid="8666690832113906028">"Koloreak"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturalak"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Nabarmenduak"</string> diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index a683c737039..5a3f8de63b8 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"وضوح بالا"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"وضوح بیشینه"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"«وضوح بیشینه» از شارژ باتری بیشتری استفاده میکند. تغییر دادن وضوح ممکن است باعث شود برخیاز برنامهها بازراهاندازی شوند."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"انتخابشده"</string> <string name="color_mode_title" msgid="8666690832113906028">"رنگ"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"طبیعی"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"تقویتشده"</string> diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 6991880b05e..480c0ee6d55 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Korkea resoluutio"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimaalinen resoluutio"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimaalinen resoluutio kuluttaa enemmän akkua. Jotkin sovellukset käynnistyvät uudelleen, kun vaihdat resoluutiota."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Valittu"</string> <string name="color_mode_title" msgid="8666690832113906028">"Värit"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Luonnollinen"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Tehostettu"</string> diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 3b29aab3d93..0973f7587c6 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Haute résolution"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Résolution maximale"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"La résolution maximale sollicite davantage votre pile. Le changement de résolution peut entraîner le redémarrage de certaines applis."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Sélectionnée"</string> <string name="color_mode_title" msgid="8666690832113906028">"Couleurs"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturelles"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Intenses"</string> diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 0c76e3e0266..e42b499f9b9 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Haute résolution"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Résolution maximale"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"La résolution maximale consomme davantage de batterie. Modifier la résolution peut entraîner le redémarrage de certaines applis."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Sélectionnée"</string> <string name="color_mode_title" msgid="8666690832113906028">"Couleurs"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturelles"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Rehaussées"</string> diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 762c705ad21..31dd10c405b 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolución"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Máxima resolución"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"A máxima resolución consome máis batería. Se cambias a resolución, pode que se reinicien algunhas aplicacións."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seleccionada"</string> <string name="color_mode_title" msgid="8666690832113906028">"Cores"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturais"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Realzadas"</string> diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index b60bc67555a..6094ebef3b1 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"વધુ રિઝોલ્યુશન"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"ઉચ્ચ રિઝોલ્યુશન"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"ઉચ્ચ રિઝોલ્યુશનથી તમારી બૅટરીનો વપરાશ વધુ થાય છે. તમારું રિઝોલ્યુશન સ્વિચ કરવાથી કેટલીક ઍપ કદાચ ફરી શરૂ થઈ શકે છે."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"પસંદ કર્યું"</string> <string name="color_mode_title" msgid="8666690832113906028">"રંગો"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"કુદરતી"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"બુસ્ટ કરેલ"</string> diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 1e748363e80..c30cd728d4f 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"हाई रिज़ॉल्यूशन"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"फ़ुल रिज़ॉल्यूशन"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"फ़ुल रिज़ॉल्यूशन में ज़्यादा बैटरी खर्च होती है. रिज़ॉल्यूशन बदलने पर, कुछ ऐप्लिकेशन रीस्टार्ट हो सकते हैं."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"चुना गया"</string> <string name="color_mode_title" msgid="8666690832113906028">"रंग"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"बिना किसी बदलाव के"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"बूस्ट किया गया"</string> diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 7c58370b91f..05c3bd5de3f 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Visoka razlučivost"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimalna razlučivost"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimalna razlučivost više troši bateriju. Promjena razlučivosti može uzrokovati ponovno pokretanje nekih aplikacija."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Odabrano"</string> <string name="color_mode_title" msgid="8666690832113906028">"Boje"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Prirodno"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Pojačano"</string> diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 2783c4db7f2..8913c79607d 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Nagy felbontás"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maximális felbontás"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"A maximális felbontás jobban igénybe veszi az akkumulátort. A felbontásra váltáskor előfordulhat, hogy néhány alkalmazás újraindul."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Kijelölve"</string> <string name="color_mode_title" msgid="8666690832113906028">"Színek"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Természetes"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Élénk"</string> diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index d87d47beb4b..b895fd3237f 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Բարձր լուծաչափ"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Առավելագույն լուծաչափ"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Առավելագույն լուծաչափը մարտկոցի լիցքն ավելի շատ է սպառում։ Այս լուծաչափին անցնելու դեպքում որոշ հավելվածներ կարող են վերագործարկվել։"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Ընտրված է"</string> <string name="color_mode_title" msgid="8666690832113906028">"Գույներ"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Բնական"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Պայծառ"</string> diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 351bbc623a5..1b8312122df 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Resolusi tinggi"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolusi maksimum"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Resolusi maksimum menggunakan lebih banyak daya baterai. Mengganti resolusi mungkin menyebabkan beberapa aplikasi dimulai ulang."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Dipilih"</string> <string name="color_mode_title" msgid="8666690832113906028">"Warna"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Alami"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Dipertajam"</string> diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 5ad2a77bb16..7bd32aed475 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Há upplausn"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Hámarksupplausn"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Hámarksupplausn gengur meira á rafhlöðuna. Hugsanlega munu einhver forrit endurræsast ef upplausn er breytt."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Valið"</string> <string name="color_mode_title" msgid="8666690832113906028">"Litir"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Náttúrulegir"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Efldir"</string> diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 3ba9bff8a44..38beb2cc51a 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -1315,7 +1315,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta risoluzione"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Massima risoluzione"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Se usi la massima risoluzione, viene consumata più batteria. La modifica della risoluzione potrebbe causare il riavvio di alcune app."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selezionata"</string> <string name="color_mode_title" msgid="8666690832113906028">"Colori"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturali"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Migliorati"</string> diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 48797d1b403..e22ff376379 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"רזולוציה גבוהה"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"רזולוציה מקסימלית"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"כשמשתמשים ברזולוציה מקסימלית, צריכת הסוללה גבוהה יותר. שינוי הרזולוציה עלול לגרום להפעלה מחדש של חלק מהאפליקציות."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"נבחרה"</string> <string name="color_mode_title" msgid="8666690832113906028">"צבעים"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"גוון טבעי"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"גוון מוגבר"</string> diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 750dd040a32..fbdfd8f7a11 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -1315,7 +1315,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"高解像度"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"最大解像度"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"最大解像度ではバッテリー消費量が多くなります。解像度を切り替えると、一部のアプリが再起動することがあります。"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"選択中"</string> <string name="color_mode_title" msgid="8666690832113906028">"カラー"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"ナチュラル"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"ブースト"</string> diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 42ac1c0de0b..24a05e34449 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"მაღალი გარჩევადობა"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"მაქსიმალური გარჩევადობა"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"მაქსიმალური გარჩევადობა მეტად მოიხმარს ბატარეას. გარჩევადობის გადართვამ შეიძლება გამოიწვიოს ზოგიერთი აპის გადატვირთვა."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"არჩეულია"</string> <string name="color_mode_title" msgid="8666690832113906028">"ფერები"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"ბუნებრივი"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"გაძლიერებული"</string> diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index 8b07a2e1b8c..fe1438a3058 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Жоғары ажыратымдылық"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Ең жоғары ажыратымдылық"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Ең жоғары ажыратымдылық батарея зарядын көбірек пайдаланады. Ажыратымдылықты ауыстырсаңыз, кейбір қолданбалар өшіп қосылады."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Таңдалды."</string> <string name="color_mode_title" msgid="8666690832113906028">"Түстер"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Табиғи"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Жарқын"</string> diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 16bc1d3a27c..613dc3df82f 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"កម្រិតច្បាស់ខ្ពស់"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"កម្រិតគុណភាពខ្ពស់បំផុត"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"កម្រិតគុណភាពខ្ពស់បំផុតប្រើថ្មរបស់អ្នកច្រើនជាង។ ការប្ដូរកម្រិតគុណភាពរបស់អ្នកអាចបណ្ដាលឱ្យកម្មវិធីមួយចំនួនចាប់ផ្ដើមឡើងវិញ។"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"បានជ្រើសរើស"</string> <string name="color_mode_title" msgid="8666690832113906028">"ពណ៌"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"ធម្មជាតិ"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"បង្កើនពន្លឺ"</string> diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 6539b226b3b..7205f2c4c80 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"ಹೆಚ್ಚಿನ ರೆಸಲ್ಯೂಷನ್"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"ಗರಿಷ್ಠ ರೆಸಲ್ಯೂಶನ್"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"ಗರಿಷ್ಠ ರೆಸಲ್ಯೂಶನ್ ನಿಮ್ಮ ಬ್ಯಾಟರಿಯನ್ನು ಹೆಚ್ಚು ಬಳಸುತ್ತದೆ. ನಿಮ್ಮ ರೆಸಲ್ಯೂಶನ್ ಅನ್ನು ಬದಲಿಸುವುದರಿಂದ ಕೆಲವು ಆ್ಯಪ್ಗಳು ಮರುಪ್ರಾರಂಭವಾಗಬಹುದು."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ"</string> <string name="color_mode_title" msgid="8666690832113906028">"ಬಣ್ಣಗಳು"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"ಸ್ವಾಭಾವಿಕ"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"ಬೂಸ್ಟ್ ಮಾಡಿರುವುದು"</string> diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 74a7b579f94..adc260b2065 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"고해상도"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"최대 해상도"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"최대 해상도 사용 시 배터리 사용량이 증가합니다. 해상도를 전환하면 일부 앱이 다시 시작될 수 있습니다."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"선택됨"</string> <string name="color_mode_title" msgid="8666690832113906028">"색상"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"자연스럽게"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"생생하게"</string> diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 5b60b3adc5f..1b277dd1e03 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Жогорку дааналык"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Эң жогорку дааналык"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Эң жогорку дааналык режиминде батареяңыз тез отуруп калат. Дааналыкты өзгөртсөңүз, айрым колдонмолор өчүп кайра күйүшү мүмкүн."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Тандалды"</string> <string name="color_mode_title" msgid="8666690832113906028">"Түстөр"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Табигый"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Күчөтүлгөн"</string> diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 66491ba2d44..3a42075d987 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"ຄວາມລະອຽດສູງ"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"ຄວາມລະອຽດສູງສຸດ"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"ຄວາມລະອຽດສູງສຸດຈະໃຊ້ແບັດເຕີຣີຂອງທ່ານຫຼາຍຂຶ້ນ. ການປ່ຽນຄວາມລະອຽດຂອງທ່ານອາດເຮັດໃຫ້ບາງແອັບຣີສະຕາດ."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ເລືອກແລ້ວ"</string> <string name="color_mode_title" msgid="8666690832113906028">"ສີ"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"ທຳມະຊາດ"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"ສີເຂັ້ມຂຶ້ນ"</string> diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 620f234f8d9..6aa84ce6949 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Didelė skyra"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Didžiausia skyra"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Didžiausia skyra eikvoja daugiau akumuliatoriaus energijos. Perjungus skyrą, kai kurios programos gali būti paleistos iš naujo."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Pasirinkta"</string> <string name="color_mode_title" msgid="8666690832113906028">"Spalvos"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Natūrali"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Suintensyvinta"</string> diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index cfd60a506e6..7e97580c43a 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Augsta izšķirtspēja"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimālā izšķirtspēja"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Izmantojot maksimālo izšķirtspēju, tiek patērēts vairāk akumulatora enerģijas. Ja mainīsiet izšķirtspēju, noteiktas lietotnes var tikt restartētas."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Atlasīta"</string> <string name="color_mode_title" msgid="8666690832113906028">"Krāsas"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Dabiska"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Paspilgtināta"</string> diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index e857e32be64..7e2a519d74a 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Висока резолуција"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Максимална резолуција"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Максималната резолуција повеќе ја троши батеријата. Ако ја смените резолуцијата, некои од апликациите може да се рестартираат."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Избрано"</string> <string name="color_mode_title" msgid="8666690832113906028">"Бои"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Природни"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Нагласени"</string> diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index 47488400e4c..afe47748fa2 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -1315,7 +1315,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"കൂടിയ റെസല്യൂഷൻ"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"പരമാവധി റെസല്യൂഷൻ"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"പരമാവധി റെസല്യൂഷൻ കൂടുതൽ ബാറ്ററി ചാർജ് ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ റെസല്യൂഷൻ മാറ്റുന്നത് ചില ആപ്പുകൾ റീസ്റ്റാർട്ട് ചെയ്യാൻ കാരണമായേക്കാം."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"തിരഞ്ഞെടുത്തു"</string> <string name="color_mode_title" msgid="8666690832113906028">"നിറങ്ങൾ"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"സ്വാഭാവികം"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"ബൂസ്റ്റ് ചെയ്തത്"</string> diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 13c1caebb80..97a42908de8 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Өндөр нягтрал"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Дээд нягтрал"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Дээд нягтрал нь таны батарейн цэнэгийг илүү их ашигладаг. Нягтралаа сэлгэх нь зарим аппыг дахин эхлүүлэхэд хүргэж магадгүй."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Сонгосон"</string> <string name="color_mode_title" msgid="8666690832113906028">"Өнгө"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Байгалийн"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Өдөөсөн"</string> diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 75c4882ba3b..481992cf5a0 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"उच्च रेझोल्यूशन"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"कमाल रेझोल्यूशन"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"कमाल रेझोल्यूशन तुमची बॅटरी जास्त वापरते. तुमचे रेझोल्यूशन स्विच केल्याने काही ॲप्स रीस्टार्ट होऊ शकतात."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"निवडले"</string> <string name="color_mode_title" msgid="8666690832113906028">"रंग"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"नैसर्गिक"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"बूस्ट केलेला"</string> diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index caf79f17f0d..ca335415b6d 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -1315,7 +1315,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Peleraian tinggi"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Peleraian maksimum"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Peleraian maksimum menggunakan lebih banyak bateri anda. Penukaran peleraian anda mungkin menyebabkan sesetengah apl dimulakan semula."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Dipilih"</string> <string name="color_mode_title" msgid="8666690832113906028">"Warna"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Asli"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Ditingkatkan"</string> diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index fd86ab09fad..92a449575ff 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"ပုံရိပ်ပြတ်သားကိန်းမြင့်"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"အမြင့်ဆုံး ပုံရိပ်ပြတ်သားကိန်း"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"အမြင့်ဆုံး ပုံရိပ်ပြတ်သားကိန်းသည် ဘက်ထရီပိုသုံးသည်။ ပုံရိပ်ပြတ်သားကိန်း ပြောင်းပါက အချို့အက်ပ်များကို ပြန်စစေနိုင်သည်။"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ရွေးထားသည်"</string> <string name="color_mode_title" msgid="8666690832113906028">"အရောင်များ"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"သဘာဝ"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"အရောင်တင်ထားသည်"</string> diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 7cf9b5277ce..3111acb6a64 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Høy oppløsning"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimal oppløsning"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimal oppløsning bruker mer batteri. Hvis du endrer oppløsningen, kan det føre til at noen apper starter på nytt."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Valgt"</string> <string name="color_mode_title" msgid="8666690832113906028">"Farger"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturlig"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Forsterket"</string> diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index b0c1405dfad..8ddde598791 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"उच्च रिजोल्युसन"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"अधिकतम रिजोल्युसन"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"अधिकतम रिजोल्युसन प्रयोग गर्दा तपाईंको डिभाइसको ब्याट्री बढी खपत हुन्छ। तपाईंले रोजेको रिजोल्युसन प्रयोग गर्नुभयो भने केही एपहरू रिस्टार्ट हुन सक्छन्।"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"चयन गरियो"</string> <string name="color_mode_title" msgid="8666690832113906028">"रङ्गहरू"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"प्राकृतिक"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"बुस्ट गरिएको"</string> diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 984eb9b6417..9e36dae2b65 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Hoge resolutie"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maximale resolutie"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"De maximale resolutie gebruikt meer batterijlading. Als je de resolutie wijzigt, worden sommige apps misschien opnieuw gestart."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Geselecteerd"</string> <string name="color_mode_title" msgid="8666690832113906028">"Kleuren"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Natuurlijk"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Versterkt"</string> diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index aee0a586a2d..a1cc9b3fbec 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -1315,7 +1315,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"ଉଚ୍ଚ ରିଜୋଲ୍ୟୁସନ"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"ସର୍ବାଧିକ ରିଜୋଲ୍ୟୁସନ"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"ସର୍ବାଧିକ ରିଜୋଲ୍ୟୁସନ ଆପଣଙ୍କ ବେଟେରୀକୁ ଅଧିକ ବ୍ୟବହାର କରେ। ଆପଣଙ୍କ ରିଜୋଲ୍ୟୁସନକୁ ସୁଇଚ କରିବା ଦ୍ୱାରା କିଛି ଆପ୍ସ ରିଷ୍ଟାର୍ଟ ହୋଇପାରେ।"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ଚୟନ କରାଯାଇଛି"</string> <string name="color_mode_title" msgid="8666690832113906028">"ରଙ୍ଗ"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"ପ୍ରାକୃତିକ"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"ବର୍ଦ୍ଧିତ"</string> diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index a2874728374..780154ddd0b 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -1315,7 +1315,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"ਜ਼ਿਆਦਾ ਰੈਜ਼ੋਲਿਊਸ਼ਨ"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"ਪੂਰਾ ਰੈਜ਼ੋਲਿਊਸ਼ਨ"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"ਪੂਰਾ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਤੁਹਾਡੀ ਬੈਟਰੀ ਦੀ ਜ਼ਿਆਦਾ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਤੁਹਾਡੇ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਵਿੱਚ ਸਵਿੱਚ ਕਰਨ ਕਰ ਕੇ ਕੁਝ ਐਪਾਂ ਮੁੜ-ਸ਼ੁਰੂ ਹੋ ਸਕਦੀਆਂ ਹਨ।"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ਚੁਣਿਆ ਗਿਆ"</string> <string name="color_mode_title" msgid="8666690832113906028">"ਰੰਗ"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"ਕੁਦਰਤੀ"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"ਵਧਾਇਆ ਗਿਆ"</string> diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 0f2180696a0..58912c20401 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Wysoka rozdzielczość"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksymalna rozdzielczość"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maksymalna rozdzielczość bardziej zużywa baterię. Po przełączeniu rozdzielczości niektóre aplikacje mogą wymagać ponownego uruchomienia."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Wybrano"</string> <string name="color_mode_title" msgid="8666690832113906028">"Kolory"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturalne"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Wzmocnione"</string> diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 523b67a5f00..874a5dc01bd 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolução"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolução máxima"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"A resolução máxima consome mais bateria. A troca de resolução pode fazer com que alguns apps sejam reiniciados."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selecionada"</string> <string name="color_mode_title" msgid="8666690832113906028">"Cores"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturais"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Realçadas"</string> diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 757a9c00c1c..2923803bc51 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolução"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolução máxima"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"A resolução máxima consome mais bateria. Se mudar a resolução, algumas apps podem ser reiniciadas."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selecionada"</string> <string name="color_mode_title" msgid="8666690832113906028">"Cores"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturais"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Amplificadas"</string> diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 523b67a5f00..874a5dc01bd 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolução"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolução máxima"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"A resolução máxima consome mais bateria. A troca de resolução pode fazer com que alguns apps sejam reiniciados."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selecionada"</string> <string name="color_mode_title" msgid="8666690832113906028">"Cores"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturais"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Realçadas"</string> diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index f58d5775d9b..41c76d636ae 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Rezoluție înaltă"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Rezoluție maximă"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Rezoluția maximă consumă mai multă baterie. Dacă schimbi rezoluția, unele aplicații pot reporni."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selectată"</string> <string name="color_mode_title" msgid="8666690832113906028">"Culori"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturale"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Intensificate"</string> diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index f73a9d18a5e..138c66a79ce 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Высокое разрешение"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Максимальное разрешение"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"При максимальном разрешении расходуется больше заряда. Когда разрешение меняется, некоторые приложения могут перезапуститься."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Выбрано"</string> <string name="color_mode_title" msgid="8666690832113906028">"Цвета"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Натуральные"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Яркие"</string> diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index 8c7989ee833..a8a522ab6ee 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"ඉහළ විභේදනය"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"උපරිම විභේදනය"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"උපරිම විභේදනය ඔබේ බැටරිය වැඩියෙන් භාවිත කරයි. ඔබේ විභේදනය මාරු කිරීම සමහර යෙදුම් නැවත ආරම්භ කිරීමට හේතු විය හැක."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"තෝරා ඇත"</string> <string name="color_mode_title" msgid="8666690832113906028">"වර්ණ"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"ස්වභාවික"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"වැඩි කළ"</string> diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 399f82332b7..900ee51b9d2 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Vysoké rozlíšenie"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maximálne rozlíšenie"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maximálne rozlíšenie viac spotrebúva batériu. Ak rozlíšenie prepnete, niektoré aplikácie sa môžu reštartovať."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Vybrané"</string> <string name="color_mode_title" msgid="8666690832113906028">"Farby"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Prirodzené"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Zosilnené"</string> diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 8180b258aa1..8622b8fb4a7 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Visoka ločljivost"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Najvišja ločljivost"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Za najvišjo ločljivost se porablja več energije baterije. Ob spremembi ločljivosti se bodo morda nekatere aplikacije znova zagnale."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Izbrano"</string> <string name="color_mode_title" msgid="8666690832113906028">"Barve"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naravne"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Poudarjene"</string> diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 6e6bc5cf4e9..473615711a8 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Rezolucion i lartë"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Rezolucioni maksimal"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Rezolucioni maksimal përdor më shumë bateri. Ndryshimi i rezolucionit mund të shkaktojë rinisjen e disa aplikacioneve."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Zgjedhur"</string> <string name="color_mode_title" msgid="8666690832113906028">"Ngjyrat"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Natyrale"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Të theksuara"</string> diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index f10b4247490..02884f46a67 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -1315,7 +1315,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Висока резолуција"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Максимална резолуција"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Максимална резолуција користи више батерије. Ако пређете на ову резолуцију, неке апликације ће се можда рестартовати."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Изабрано је"</string> <string name="color_mode_title" msgid="8666690832113906028">"Боје"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Природне"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Појачане"</string> diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 8f1739973e3..040049aa376 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Hög upplösning"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Högsta upplösning"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Högsta upplösning drar mer batteri. Om du byter upplösning kan vissa appar startas om."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Markerad"</string> <string name="color_mode_title" msgid="8666690832113906028">"Färger"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Naturliga"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Förstärkta"</string> diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 889c056949f..6cef85f08ba 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Ubora wa juu"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Ubora wa juu zaidi"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Ubora wa juu zaidi wa skrini hutumia zaidi betri yako. Ukibadilisha ubora wa skrini yako, huenda baadhi ya programu zikazimwa kisha kuwashwa."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Umechaguliwa"</string> <string name="color_mode_title" msgid="8666690832113906028">"Rangi"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Asili"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Imeongezwa Rangi"</string> diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 31c51b6010b..c4ee04d749f 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"உயர் தெளிவுத்திறன்"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"அதிகபட்சத் தெளிவுத்திறன்"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"அதிகபட்சத் தெளிவுத்திறனை அமைத்தால் பேட்டரி அதிகமாகப் பயன்படுத்தப்படும். தெளிவுத்திறனை மாற்றினால் சில ஆப்ஸ் மீண்டும் தொடங்கக்கூடும்."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"தேர்ந்தெடுக்கப்பட்டது"</string> <string name="color_mode_title" msgid="8666690832113906028">"வண்ணங்கள்"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"இயற்கை வண்ணம்"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"பூஸ்ட் செய்யப்பட்டது"</string> diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 0e9cd91b6bd..48ea4cd1bc4 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"అధిక రిజల్యూషన్"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"పూర్తి రిజల్యూషన్"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"పూర్తి రిజల్యూషన్, మీ బ్యాటరీని ఎక్కువగా వినియోగిస్తుంది. పూర్తి రిజల్యూషన్కు మారడం వల్ల కొన్ని యాప్లు రీస్టార్ట్ అయ్యే అవకాశం ఉంది."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ఎంచుకోబడింది"</string> <string name="color_mode_title" msgid="8666690832113906028">"రంగులు"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"సహజం"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"మెరుగుపరిచినవి"</string> diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 012eee2da02..2190a69e4ac 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -1315,7 +1315,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"ความละเอียดสูง"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"ความละเอียดสูงสุด"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"ความละเอียดสูงสุดจะใช้แบตเตอรี่มากขึ้น การเปลี่ยนความละเอียดอาจทำให้บางแอปรีสตาร์ท"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"เลือกแล้ว"</string> <string name="color_mode_title" msgid="8666690832113906028">"สี"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"ธรรมชาติ"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"บูสต์"</string> diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 40c3340c63d..c5dacc47fe4 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Mataas na resolution"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Max na resolution"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Mas malakas gumamit ng iyong baterya ang max na resolution. Kapag pinalitan mo ang iyong resolution, posible itong maging sanhi ng pag-restart ng ilang app."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Napili"</string> <string name="color_mode_title" msgid="8666690832113906028">"Mga Kulay"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Natural"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Naka-boost"</string> diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 11b3427418e..dfb6ed8717d 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Yüksek çözünürlük"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimum çözünürlük"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimum çözünürlük daha fazla pil kullanır. Çözünürlük değiştirildiğinde bazı uygulamalar yeniden başlatılabilir."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seçili"</string> <string name="color_mode_title" msgid="8666690832113906028">"Renkler"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Doğal"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Zenginleştirilmiş"</string> diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 392397a4d03..23cdd8bb242 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Висока роздільна здатність"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Максимальна роздільна здатність"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Коли екран працює з максимальною роздільною здатністю, акумулятор розряджається швидше. Якщо змінити роздільну здатність, деякі додатки можуть перезапуститися."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Вибрано"</string> <string name="color_mode_title" msgid="8666690832113906028">"Кольори"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Природні"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Яскраві"</string> diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index d3375d2bcef..fd977234e3d 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"اعلی ریزولیوشن"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"زیادہ سے زیادہ ریزولیوشن"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"زیادہ سے زیادہ ریزولیوشن آپ کی زیادہ بیٹری کا استعمال کرتا ہے۔ آپ کی ریزولیوشن پر سوئچ کرنے سے کچھ ایپس ری سٹارٹ ہو سکتی ہیں۔"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"منتخب کردہ"</string> <string name="color_mode_title" msgid="8666690832113906028">"رنگ"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"قدرتی"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"بڑھایا گیا"</string> diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 79da69ea3bb..a1dc225be16 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Yuqori tiniqlik"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimal aniqlik darajasi"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimal aniqlik darajasi batareya quvvatini koʻproq sarflaydi. Tiniqlik almashtirilsa, ayrim ilovalar qayta ishga tushadi."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Tanlandi"</string> <string name="color_mode_title" msgid="8666690832113906028">"Ranglar"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Tabiiy"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Yorqin"</string> diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 0a1fa9dad60..d17eb61296d 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Độ phân giải cao"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Độ phân giải tối đa"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Độ phân giải tối đa sẽ làm tiêu tốn nhiều pin hơn. Việc điều chỉnh độ phân giải có thể khiến một số ứng dụng khởi động lại."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Đã chọn"</string> <string name="color_mode_title" msgid="8666690832113906028">"Màu"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Tự nhiên"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"Tăng độ nét"</string> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 6a7ebcd8351..131ef89a6b2 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"高分辨率"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"最大分辨率"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"最大分辨率会增加耗电量。切换分辨率可能会导致一些应用重启。"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"已选择"</string> <string name="color_mode_title" msgid="8666690832113906028">"颜色"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"自然色"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"增强色"</string> diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 838b6619f5d..0c6540e8be2 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"高解像度"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"最高解像度"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"設定至最高解像度時,耗電量會較高。切換解像度後,部分應用程式可能會重新啟動。"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"揀咗"</string> <string name="color_mode_title" msgid="8666690832113906028">"顏色"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"自然"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"強化"</string> diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index f98bfbbca24..69331dd7225 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"高解析度"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"最大解析度"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"使用最大解析度會比較耗電。如果切換解析度,部分應用程式可能會重新啟動。"</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"已選取"</string> <string name="color_mode_title" msgid="8666690832113906028">"色彩"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"自然"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"增強"</string> diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index f9cb4601f19..17849991eb2 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -1318,7 +1318,6 @@ <string name="screen_resolution_option_high" msgid="2617496842852992853">"Ukucaca okuphezulu"</string> <string name="screen_resolution_option_full" msgid="4456839315039000517">"Umkhawulo wokukucaca"</string> <string name="screen_resolution_footer" msgid="1230761249204935717">"Umkhawulo wokucaca usebenzisa ibhethri yakho eyengeziwe. Ukushintsha ukucaca kwakho kungase kubangele amanye ama-app ukuthi aqale kabusha."</string> - <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Okukhethiwe"</string> <string name="color_mode_title" msgid="8666690832113906028">"Imibala"</string> <string name="color_mode_option_natural" msgid="6192875655101283303">"Kwemvelo"</string> <string name="color_mode_option_boosted" msgid="4698797857766774289">"I-Boost"</string> diff --git a/res/values/strings.xml b/res/values/strings.xml index fee6a0a67fb..63bf8b21744 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -80,6 +80,10 @@ <string name="preview_pager_content_description">Preview</string> <!-- Content description for qrcode image. [CHAR LIMIT=none]--> <string name="qr_code_content_description">QR code</string> + <!-- Previous button for preview pager. [CHAR LIMIT=NONE] --> + <string name="preview_pager_previous_button">Previous preview</string> + <!-- Next button for preview pager. [CHAR LIMIT=NONE] --> + <string name="preview_pager_next_button">Next preview</string> <!-- Description for the button that makes interface elements smaller. [CHAR_LIMIT=NONE] --> <string name="font_size_make_smaller_desc">Make smaller</string> @@ -1735,6 +1739,11 @@ <!-- Summary specifying that this is the current screen lock setting [CHAR LIMIT=45] --> <string name="current_screen_lock">Current screen lock</string> + <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] --> + <string name="unlock_accessibility_pin_area">PIN area</string> + <!-- Accessibility description of the normal password view. [CHAR_LIMIT=none] --> + <string name="unlock_accessibility_password">Device password</string> + <!-- Title for preference that guides the user through creating a backup unlock pattern for fingerprint [CHAR LIMIT=45]--> <string name="fingerprint_unlock_set_unlock_pattern">Pattern \u2022 Fingerprint</string> <!-- Title for preference that guides the user through creating a backup unlock PIN for fingerprint [CHAR LIMIT=45]--> @@ -3012,9 +3021,6 @@ <string name="screen_resolution_option_full">Max resolution</string> <!-- The footer message for switch screen resolution [CHAR LIMIT=NONE] --> <string name="screen_resolution_footer">Max resolution uses more of your battery. Switching your resolution may cause some apps to restart.</string> - <!-- Message announced to a11y users when they selected one resolution [CHAR LIMIT=NONE] --> - <string name="screen_resolution_selected_a11y">Selected</string> - <!-- Display settings screen, Color mode settings title [CHAR LIMIT=30] --> <string name="color_mode_title">Colors</string> <!-- Display settings screen, Color mode option for "natural(sRGB) color" [CHAR LIMIT=45] --> @@ -3171,6 +3177,7 @@ <string name="dark_ui_summary_on_auto_mode_modes">Will turn off when <xliff:g name="modeName" example="Bedtime">%1$s</xliff:g> ends</string> <!-- Dark theme screen, description of Dark theme feature. [CHAR LIMIT=NONE] --> <string name="dark_ui_text">Dark theme uses a black background to help keep battery alive longer on some screens. Dark theme schedules wait to turn on until your screen is off.</string> + <string name="dark_ui_text_force_invert">Use a dark background to make your screen more comfortable to view and reduce battery usage on some screens. Your theme will change if you have a schedule, when the screen is off.</string> <!-- Dark UI screen footer summary text shown when the when Dark theme turns on/off automatically according to a user bedtime schedule. [CHAR LIMIT=NONE] --> <string name="dark_ui_bedtime_footer_summary">Dark theme is currently following your Bedtime mode schedule</string> <!-- Dark UI screen footer action text shown when the when Dark theme turns on/off automatically according to a user bedtime schedule. [CHAR LIMIT=NONE] --> @@ -5568,7 +5575,7 @@ <!-- Title for the accessibility preference for forcing all apps to use dark theme. [CHAR LIMIT=35] --> <string name="accessibility_force_invert_title">Make more apps dark</string> <!-- Summary for the accessibility preference for forcing all apps to use dark theme. [CHAR LIMIT=100] --> - <string name="accessibility_force_invert_summary">Automatically convert light theme apps to dark theme</string> + <string name="accessibility_force_invert_summary">Expands dark theme to more apps. May not work with all apps.</string> <!-- Title for the accessibility preference for disabling animations. [CHAR LIMIT=35] --> <string name="accessibility_disable_animations">Remove animations</string> <!-- Summary for the accessibility preference for disabling animations. [CHAR LIMIT=60] --> @@ -5688,6 +5695,9 @@ <!-- Title for the toggle button that turns on/off the autoclick setting of ignoring minor cursor movement. [CHAR_LIMIT=NONE] --> <!-- TODO(b/388845718): Update string to translatable once approved by UXW. --> <string name="autoclick_ignore_minor_cursor_movement_title" translatable="false">Ignore minor cursor movement</string> + <!-- TODO(b/394683600): Update string to translatable once approved by UXW. --> + <!-- Title for the switch setting to toggle on/off the revert to left click after action. [CHAR LIMIT=NONE] --> + <string name="autoclick_revert_to_left_click_title" translatable="false">Revert to left click after action</string> <!-- Title for preference screen for configuring vibrations. [CHAR LIMIT=NONE] --> <string name="accessibility_vibration_settings_title">Vibration & haptics</string> <!-- Summary for preference screen for configuring vibrations. [CHAR LIMIT=NONE] --> @@ -9324,7 +9334,7 @@ Data usage charges may apply.</string> <string name="nls_feature_settings_summary">It can turn Do Not Disturb on or off and change related settings.</string> <string name="nls_feature_modes_settings_summary">It can manage and activate Modes, and change related settings.</string> <string name="notification_listener_disable_warning_summary"> - If you turn off notification access for <xliff:g id="notification_listener_name">%1$s</xliff:g>, Do Not Disturb access may also be turned off. + If you turn off notification access for <xliff:g id="notification_listener_name">%1$s</xliff:g>, Do Not Disturb control may also be turned off. </string> <string name="notification_listener_disable_modes_warning_summary"> If you turn off notification access for <xliff:g id="notification_listener_name">%1$s</xliff:g>, Modes access may also be turned off. @@ -9507,14 +9517,14 @@ Data usage charges may apply.</string> The placeholder would be the app name (e.g. Calendar). [CHAR LIMIT=NONE]--> <string name="interact_across_profiles_install_app_summary">Tap to get the app</string> - <!-- Sound & notification > Advanced section: Title for managing Do Not Disturb access option. [CHAR LIMIT=40] --> - <string name="manage_zen_access_title">Do Not Disturb access</string> + <!-- Sound & notification > Advanced section: Title for managing Do Not Disturb control option. [CHAR LIMIT=40] --> + <string name="manage_zen_access_title">Do Not Disturb control</string> <!-- Button title that grants 'Do Not Disturb' permission to an app [CHAR_LIMIT=60]--> <string name="zen_access_detail_switch">Allow Do Not Disturb</string> - <!-- Sound & notification > Do Not Disturb access > Text to display when the list is empty. [CHAR LIMIT=NONE] --> - <string name="zen_access_empty_text">No installed apps have requested Do Not Disturb access</string> + <!-- Sound & notification > Do Not Disturb control > Text to display when the list is empty. [CHAR LIMIT=NONE] --> + <string name="zen_access_empty_text">No installed apps have requested Do Not Disturb control</string> <!-- Special App Access: Title for managing Modes access option. [CHAR LIMIT=40] --> <string name="manage_zen_modes_access_title">Modes access</string> @@ -9522,7 +9532,7 @@ Data usage charges may apply.</string> <!-- Button title that grants 'Modes' permission to an app [CHAR_LIMIT=60]--> <string name="zen_modes_access_detail_switch">Allow Modes access</string> - <!-- Special App Access > Do Not Disturb access > Text to display when the list is empty. [CHAR LIMIT=NONE] --> + <!-- Special App Access > Do Not Disturb control > Text to display when the list is empty. [CHAR LIMIT=NONE] --> <string name="zen_modes_access_empty_text">No installed apps have requested Modes access</string> <!-- [CHAR LIMIT=NONE] Text appearing when app notifications are off --> diff --git a/res/xml/accessibility_autoclick_settings.xml b/res/xml/accessibility_autoclick_settings.xml index 7eddb8697da..3878e6c5c9b 100644 --- a/res/xml/accessibility_autoclick_settings.xml +++ b/res/xml/accessibility_autoclick_settings.xml @@ -93,6 +93,11 @@ android:title="@string/autoclick_ignore_minor_cursor_movement_title" settings:controller="com.android.settings.accessibility.ToggleAutoclickIgnoreMinorCursorMovementController"/> + <SwitchPreferenceCompat + android:key="accessibility_control_autoclick_revert_to_left_click" + android:title="@string/autoclick_revert_to_left_click_title" + settings:controller="com.android.settings.accessibility.ToggleAutoclickRevertToLeftClickController"/> + <com.android.settings.accessibility.AccessibilityFooterPreference android:key="accessibility_autoclick_footer" android:title="@string/accessibility_autoclick_description" diff --git a/res/xml/dark_mode_settings.xml b/res/xml/dark_mode_settings.xml index 44bd807b660..f886daf2e5b 100644 --- a/res/xml/dark_mode_settings.xml +++ b/res/xml/dark_mode_settings.xml @@ -22,8 +22,8 @@ <com.android.settingslib.widget.TopIntroPreference android:key="dark_ui_top_intro" - android:title="@string/dark_ui_text" - settings:searchable="false"/> + settings:searchable="false" + settings:controller="com.android.settings.display.darkmode.DarkModeTopIntroPreferenceController"/> <com.android.settingslib.widget.MainSwitchPreference android:key="dark_ui_activated" diff --git a/src/com/android/settings/accessibility/TextReadingPreviewPreference.java b/src/com/android/settings/accessibility/TextReadingPreviewPreference.java index 9161171914a..99e71258b6f 100644 --- a/src/com/android/settings/accessibility/TextReadingPreviewPreference.java +++ b/src/com/android/settings/accessibility/TextReadingPreviewPreference.java @@ -22,6 +22,7 @@ import android.os.Parcelable; import android.util.AttributeSet; import android.view.View; import android.widget.FrameLayout; +import android.widget.ImageButton; import android.widget.LinearLayout; import androidx.preference.Preference; @@ -99,6 +100,28 @@ public class TextReadingPreviewPreference extends Preference { (DotsPageIndicator) holder.findViewById(R.id.page_indicator); updateAdapterIfNeeded(viewPager, pageIndicator, mPreviewAdapter); updatePagerAndIndicator(viewPager, pageIndicator); + viewPager.setClipToOutline(true); + + int layoutDirection = + getContext().getResources().getConfiguration().getLayoutDirection(); + int previousId = (layoutDirection == View.LAYOUT_DIRECTION_RTL) + ? R.id.preview_right_button : R.id.preview_left_button; + int nextId = (layoutDirection == View.LAYOUT_DIRECTION_RTL) + ? R.id.preview_left_button : R.id.preview_right_button; + final ImageButton previousButton = previewLayout.findViewById(previousId); + final ImageButton nextButton = previewLayout.findViewById(nextId); + + // These call ViewPager#setCurrentItem directly + // because that doesn't force a refresh through notifyChanged(). + // We found this avoids a crash in SUW (See b/386906497). + previousButton.setOnClickListener((view) -> + viewPager.setCurrentItem(getCurrentItem() - 1)); + previousButton.setContentDescription(getContext().getString( + R.string.preview_pager_previous_button)); + nextButton.setOnClickListener((view) -> + viewPager.setCurrentItem(getCurrentItem() + 1)); + previousButton.setContentDescription(getContext().getString( + R.string.preview_pager_next_button)); } @Override diff --git a/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickController.java b/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickController.java new file mode 100644 index 00000000000..6659c271160 --- /dev/null +++ b/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickController.java @@ -0,0 +1,75 @@ +/* + * Copyright 2025 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.settings.accessibility; + +import static android.view.accessibility.AccessibilityManager.AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT; + +import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; +import static com.android.settings.accessibility.AccessibilityUtil.State.ON; + +import android.content.ContentResolver; +import android.content.Context; +import android.provider.Settings; + +import androidx.annotation.NonNull; + +import com.android.server.accessibility.Flags; +import com.android.settings.R; +import com.android.settings.core.TogglePreferenceController; + +public class ToggleAutoclickRevertToLeftClickController extends TogglePreferenceController { + + private static final String TAG = + ToggleAutoclickRevertToLeftClickController.class.getSimpleName(); + + private final ContentResolver mContentResolver; + + public ToggleAutoclickRevertToLeftClickController( + @NonNull Context context, @NonNull String key) { + super(context, key); + + mContentResolver = context.getContentResolver(); + } + + @Override + public int getAvailabilityStatus() { + return Flags.enableAutoclickIndicator() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + } + + @Override + public boolean isChecked() { + return Settings.Secure.getInt( + mContentResolver, + Settings.Secure.ACCESSIBILITY_AUTOCLICK_REVERT_TO_LEFT_CLICK, + AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT ? ON : OFF) + == ON; + } + + @Override + public boolean setChecked(boolean isChecked) { + Settings.Secure.putInt( + mContentResolver, + Settings.Secure.ACCESSIBILITY_AUTOCLICK_REVERT_TO_LEFT_CLICK, + isChecked ? ON : OFF); + return true; + } + + @Override + public int getSliceHighlightMenuRes() { + return R.string.menu_key_accessibility; + } +} diff --git a/src/com/android/settings/bluetooth/ForgetDeviceDialogFragment.java b/src/com/android/settings/bluetooth/ForgetDeviceDialogFragment.java index 60d63c637df..7cfa5ea30e6 100644 --- a/src/com/android/settings/bluetooth/ForgetDeviceDialogFragment.java +++ b/src/com/android/settings/bluetooth/ForgetDeviceDialogFragment.java @@ -16,31 +16,52 @@ package com.android.settings.bluetooth; +import static com.android.internal.util.CollectionUtils.filter; + import android.app.Activity; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.bluetooth.BluetoothDevice; +import android.companion.AssociationInfo; +import android.companion.CompanionDeviceManager; import android.content.Context; import android.content.DialogInterface; +import android.content.pm.PackageManager; +import android.icu.text.ListFormatter; import android.os.Bundle; +import android.text.TextUtils; import android.util.Log; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; +import com.android.settings.flags.Flags; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.LocalBluetoothManager; +import com.google.common.base.Objects; + +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; + /** Implements an AlertDialog for confirming that a user wishes to unpair or "forget" a paired * device*/ public class ForgetDeviceDialogFragment extends InstrumentedDialogFragment { public static final String TAG = "ForgetBluetoothDevice"; private static final String KEY_DEVICE_ADDRESS = "device_address"; - private CachedBluetoothDevice mDevice; - + @VisibleForTesting + CachedBluetoothDevice mDevice; + @VisibleForTesting + CompanionDeviceManager mCompanionDeviceManager; + @VisibleForTesting + PackageManager mPackageManager; public static ForgetDeviceDialogFragment newInstance(String deviceAddress) { Bundle args = new Bundle(1); args.putString(KEY_DEVICE_ADDRESS, deviceAddress); @@ -63,29 +84,93 @@ public class ForgetDeviceDialogFragment extends InstrumentedDialogFragment { } @Override - public Dialog onCreateDialog(Bundle inState) { - Context context = getContext(); + public void onAttach(@NonNull Context context) { + super.onAttach(context); + mCompanionDeviceManager = context.getSystemService(CompanionDeviceManager.class); + mPackageManager = context.getPackageManager(); mDevice = getDevice(context); + } + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle inState) { if (mDevice == null) { - Log.e(TAG, "onCreateDialog: Device is null."); - return null; + throw new IllegalStateException("Device must not be null when creating dialog."); + } + List<AssociationInfo> associationInfos = getAssociations(mDevice.getAddress()); + Set<String> packageNames = new HashSet<>(); + if (Flags.enableRemoveAssociationBtUnpair()) { + for (AssociationInfo ai : associationInfos) { + CharSequence appLabel = getAppLabel(ai.getPackageName()); + if (!TextUtils.isEmpty(appLabel)) { + packageNames.add(appLabel.toString()); + } + } } DialogInterface.OnClickListener onConfirm = (dialog, which) -> { + // 1. Unpair the device. mDevice.unpair(); + // 2. Remove the associations if any. + if (Flags.enableRemoveAssociationBtUnpair()) { + for (AssociationInfo ai : associationInfos) { + mCompanionDeviceManager.disassociate(ai.getId()); + } + } + Activity activity = getActivity(); if (activity != null) { activity.finish(); } }; - AlertDialog dialog = new AlertDialog.Builder(context) + + AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setPositiveButton(R.string.bluetooth_unpair_dialog_forget_confirm_button, onConfirm) .setNegativeButton(android.R.string.cancel, null) .create(); + dialog.setTitle(R.string.bluetooth_unpair_dialog_title); - dialog.setMessage(context.getString(R.string.bluetooth_unpair_dialog_body, - mDevice.getName())); + String message = buildUnpairMessage( + getActivity(), mDevice, associationInfos, packageNames.stream().toList()); + dialog.setMessage(message); + return dialog; } + + private List<AssociationInfo> getAssociations(String address) { + return filter( + mCompanionDeviceManager.getAllAssociations(), + a -> Objects.equal(address, a.getDeviceMacAddressAsString())); + } + + private String buildUnpairMessage(Context context, CachedBluetoothDevice device, + List<AssociationInfo> associationInfos, List<String> packageNames) { + if (Flags.enableRemoveAssociationBtUnpair() && !associationInfos.isEmpty()) { + String appNamesString = getAppNamesString(packageNames.stream().toList()); + return context.getString(R.string.bluetooth_unpair_dialog_with_associations_body, + device.getName(), appNamesString); + } else { + return context.getString(R.string.bluetooth_unpair_dialog_body, device.getName()); + } + } + + private String getAppNamesString(List<String> appNames) { + if (appNames == null || appNames.isEmpty()) { + return ""; + } + + ListFormatter formatter = ListFormatter.getInstance(Locale.getDefault()); + return formatter.format(appNames); + } + + private CharSequence getAppLabel(String packageName) { + try { + return mPackageManager.getApplicationLabel( + mPackageManager.getApplicationInfo(packageName, 0)); + } catch (PackageManager.NameNotFoundException e) { + Log.e(TAG, "Package Not Found", e); + return ""; + } + } } diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java b/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java index 84fbc05f1c9..75b94395963 100644 --- a/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java +++ b/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java @@ -16,8 +16,6 @@ package com.android.settings.connecteddevice.display; -import static android.view.Display.INVALID_DISPLAY; - import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DISPLAY_ID_ARG; import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_HELP_URL; import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_NOT_FOUND_RESOURCE; @@ -60,7 +58,6 @@ import com.android.settingslib.display.DisplayDensityUtils; import com.android.settingslib.widget.FooterPreference; import com.android.settingslib.widget.IllustrationPreference; import com.android.settingslib.widget.MainSwitchPreference; -import com.android.settingslib.widget.TwoTargetPreference; import java.util.ArrayList; import java.util.HashMap; @@ -87,10 +84,12 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen EXTERNAL_DISPLAY_RESOLUTION(60, "external_display_resolution", R.string.external_display_resolution_settings_title), - // Built-in display link is after per-display settings. + // Built-in display link is before per-display settings. BUILTIN_DISPLAY_LIST(70, "builtin_display_list_preference", R.string.builtin_display_settings_category), + EXTERNAL_DISPLAY_LIST(-1, "external_display_list", null), + // If shown, footer should appear below everything. FOOTER(90, "footer_preference", null); @@ -106,16 +105,27 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen public final String key; @Nullable public final Integer titleResource; - void apply(Preference preference) { + /** + * Applies this basic data to the given preference. + * + * @param preference object whose properties to set + * @param nth if non-null, disambiguates the key so that other preferences can have the same + * basic properties. Does not affect the order. + */ + void apply(Preference preference, @Nullable Integer nth) { if (order != -1) { preference.setOrder(order); } if (titleResource != null) { preference.setTitle(titleResource); } - preference.setKey(key); + preference.setKey(nth == null ? key : keyForNth(nth)); preference.setPersistent(false); } + + String keyForNth(int nth) { + return key + "_" + nth; + } } static final int EXTERNAL_DISPLAY_SETTINGS_RESOURCE = R.xml.external_display_settings; @@ -131,12 +141,8 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen R.drawable.external_display_mirror_portrait; static final int EXTERNAL_DISPLAY_SIZE_SUMMARY_RESOURCE = R.string.screen_zoom_short_summary; - @VisibleForTesting - static final String PREVIOUSLY_SHOWN_LIST_KEY = "mPreviouslyShownListOfDisplays"; private boolean mStarted; @Nullable - private IllustrationPreference mImagePreference; - @Nullable private Preference mDisplayTopologyPreference; @Nullable private PreferenceCategory mBuiltinDisplayPreference; @@ -156,7 +162,6 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen scheduleUpdate(); } }; - private boolean mPreviouslyShownListOfDisplays; public ExternalDisplayPreferenceFragment() {} @@ -176,12 +181,6 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen } @Override - public void onSaveInstanceStateCallback(@NonNull Bundle outState) { - outState.putSerializable(PREVIOUSLY_SHOWN_LIST_KEY, - mPreviouslyShownListOfDisplays); - } - - @Override public void onCreateCallback(@Nullable Bundle icicle) { if (mInjector == null) { mInjector = new Injector(getPrefContext()); @@ -191,7 +190,6 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen @Override public void onActivityCreatedCallback(@Nullable Bundle savedInstanceState) { - restoreState(savedInstanceState); View view = getView(); TextView emptyView = null; if (view != null) { @@ -242,17 +240,6 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen } @VisibleForTesting - protected void launchExternalDisplaySettings(final int displayId) { - final Bundle args = new Bundle(); - var context = getPrefContext(); - args.putInt(DISPLAY_ID_ARG, displayId); - new SubSettingLauncher(context) - .setDestination(this.getClass().getName()) - .setArguments(args) - .setSourceMetricsCategory(getMetricsCategory()).launch(); - } - - @VisibleForTesting protected void launchBuiltinDisplaySettings() { final Bundle args = new Bundle(); var context = getPrefContext(); @@ -275,30 +262,33 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen var pref = refresh.findUnusedPreference(PrefBasics.FOOTER.key); if (pref == null) { pref = newFooterPreference(context); - PrefBasics.FOOTER.apply(pref); + PrefBasics.FOOTER.apply(pref, /* nth= */ null); } pref.setTitle(title); refresh.addPreference(pref); } @NonNull - private ListPreference reuseRotationPreference(@NonNull Context context, PrefRefresh refresh) { + private ListPreference reuseRotationPreference(@NonNull Context context, PrefRefresh refresh, + int position) { ListPreference pref = refresh.findUnusedPreference( - PrefBasics.EXTERNAL_DISPLAY_ROTATION.key); + PrefBasics.EXTERNAL_DISPLAY_ROTATION.keyForNth(position)); if (pref == null) { pref = new ListPreference(context); - PrefBasics.EXTERNAL_DISPLAY_ROTATION.apply(pref); + PrefBasics.EXTERNAL_DISPLAY_ROTATION.apply(pref, position); } refresh.addPreference(pref); return pref; } @NonNull - private Preference reuseResolutionPreference(@NonNull Context context, PrefRefresh refresh) { - var pref = refresh.findUnusedPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key); + private Preference reuseResolutionPreference(@NonNull Context context, PrefRefresh refresh, + int position) { + var pref = refresh.findUnusedPreference( + PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(position)); if (pref == null) { pref = new Preference(context); - PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.apply(pref); + PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.apply(pref, position); } refresh.addPreference(pref); return pref; @@ -306,41 +296,34 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen @NonNull private MainSwitchPreference reuseUseDisplayPreference( - @NonNull Context context, @NonNull PrefRefresh refresh) { + Context context, PrefRefresh refresh, int position) { MainSwitchPreference pref = refresh.findUnusedPreference( - PrefBasics.EXTERNAL_DISPLAY_USE.key); + PrefBasics.EXTERNAL_DISPLAY_USE.keyForNth(position)); if (pref == null) { pref = new MainSwitchPreference(context); - PrefBasics.EXTERNAL_DISPLAY_USE.apply(pref); + PrefBasics.EXTERNAL_DISPLAY_USE.apply(pref, position); } refresh.addPreference(pref); return pref; } @NonNull - @VisibleForTesting - IllustrationPreference getIllustrationPreference(@NonNull Context context) { - if (mImagePreference == null) { - mImagePreference = new IllustrationPreference(context); - PrefBasics.ILLUSTRATION.apply(mImagePreference); + private IllustrationPreference reuseIllustrationPreference( + Context context, PrefRefresh refresh) { + IllustrationPreference pref = refresh.findUnusedPreference(PrefBasics.ILLUSTRATION.key); + if (pref == null) { + pref = new IllustrationPreference(context); + PrefBasics.ILLUSTRATION.apply(pref, /* nth= */ null); } - return mImagePreference; - } - - /** - * @return return display id argument of this settings page. - */ - @VisibleForTesting - protected int getDisplayIdArg() { - var args = getArguments(); - return args != null ? args.getInt(DISPLAY_ID_ARG, INVALID_DISPLAY) : INVALID_DISPLAY; + refresh.addPreference(pref); + return pref; } @NonNull private PreferenceCategory getBuiltinDisplayListPreference(@NonNull Context context) { if (mBuiltinDisplayPreference == null) { mBuiltinDisplayPreference = new PreferenceCategory(context); - PrefBasics.BUILTIN_DISPLAY_LIST.apply(mBuiltinDisplayPreference); + PrefBasics.BUILTIN_DISPLAY_LIST.apply(mBuiltinDisplayPreference, /* nth= */ null); } return mBuiltinDisplayPreference; } @@ -356,7 +339,7 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen @NonNull Preference getDisplayTopologyPreference(@NonNull Context context) { if (mDisplayTopologyPreference == null) { mDisplayTopologyPreference = new DisplayTopologyPreference(context); - PrefBasics.DISPLAY_TOPOLOGY.apply(mDisplayTopologyPreference); + PrefBasics.DISPLAY_TOPOLOGY.apply(mDisplayTopologyPreference, /* nth= */ null); } return mDisplayTopologyPreference; } @@ -366,23 +349,23 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen if (pref == null) { pref = new MirrorPreference(context, DesktopExperienceFlags.ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT.isTrue()); - PrefBasics.MIRROR.apply(pref); + PrefBasics.MIRROR.apply(pref, /* nth= */ null); } refresh.addPreference(pref); } @NonNull private AccessibilitySeekBarPreference reuseSizePreference(Context context, - PrefRefresh refresh, int displayId) { + PrefRefresh refresh, int displayId, int position) { AccessibilitySeekBarPreference pref = - refresh.findUnusedPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key); + refresh.findUnusedPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(position)); if (pref == null) { pref = new AccessibilitySeekBarPreference(context, /* attrs= */ null); pref.setIconStart(R.drawable.ic_remove_24dp); pref.setIconStartContentDescription(R.string.screen_zoom_make_smaller_desc); pref.setIconEnd(R.drawable.ic_add_24dp); pref.setIconEndContentDescription(R.string.screen_zoom_make_larger_desc); - PrefBasics.EXTERNAL_DISPLAY_SIZE.apply(pref); + PrefBasics.EXTERNAL_DISPLAY_SIZE.apply(pref, position); setStateForDisplaySizePreference(context, displayId, pref); } @@ -404,74 +387,43 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen preference.setOnSeekBarChangeListener(seekBarChangeHandler); } - private void restoreState(@Nullable Bundle savedInstanceState) { - if (savedInstanceState == null) { - return; - } - mPreviouslyShownListOfDisplays = Boolean.TRUE.equals(savedInstanceState.getSerializable( - PREVIOUSLY_SHOWN_LIST_KEY, Boolean.class)); - } - private void update() { final var screen = getPreferenceScreen(); if (screen == null || mInjector == null || mInjector.getContext() == null) { return; } try (var cleanableScreen = new PrefRefresh(screen)) { - updateScreenForDisplayId(getDisplayIdArg(), cleanableScreen, mInjector.getContext()); + updateScreen(cleanableScreen, mInjector.getContext()); } } - private void updateScreenForDisplayId(final int displayId, - @NonNull final PrefRefresh screen, @NonNull Context context) { - final var displaysToShow = externalDisplaysToShow(displayId); + private void updateScreen(final PrefRefresh screen, Context context) { + final var displaysToShow = externalDisplaysToShow(); - if (displaysToShow.isEmpty() && displayId == INVALID_DISPLAY) { - showTextWhenNoDisplaysToShow(screen, context); - } else if (displaysToShow.size() == 1 - && ((displayId == INVALID_DISPLAY && !mPreviouslyShownListOfDisplays) - || displaysToShow.get(0).getDisplayId() == displayId)) { - showDisplaySettings(displaysToShow.get(0), screen, context); - if (displayId == INVALID_DISPLAY && isTopologyPaneEnabled(mInjector)) { - // Only show the topology pane if the user did not arrive via the displays list. - maybeAddV2Components(context, screen); - } - } else if (displayId == INVALID_DISPLAY) { - // If ever shown a list of displays - keep showing it for consistency after - // disconnecting one of the displays, and only one display is left. - mPreviouslyShownListOfDisplays = true; + if (displaysToShow.isEmpty()) { + showTextWhenNoDisplaysToShow(screen, context, /* position= */ 0); + } else { showDisplaysList(displaysToShow, screen, context); } - updateSettingsTitle(displaysToShow, displayId); - } - private void updateSettingsTitle(@NonNull final List<Display> displaysToShow, int displayId) { final Activity activity = getCurrentActivity(); - if (activity == null) { - return; + if (activity != null) { + activity.setTitle(EXTERNAL_DISPLAY_TITLE_RESOURCE); } - if (displaysToShow.size() == 1 && displaysToShow.get(0).getDisplayId() == displayId) { - var displayName = displaysToShow.get(0).getName(); - if (!displayName.isEmpty()) { - activity.setTitle(displayName.substring(0, Math.min(displayName.length(), 40))); - return; - } - } - activity.setTitle(EXTERNAL_DISPLAY_TITLE_RESOURCE); } private void showTextWhenNoDisplaysToShow(@NonNull final PrefRefresh screen, - @NonNull Context context) { + @NonNull Context context, int position) { if (isUseDisplaySettingEnabled(mInjector)) { - addUseDisplayPreferenceNoDisplaysFound(context, screen); + addUseDisplayPreferenceNoDisplaysFound(context, screen, position); } addFooterPreference(context, screen, EXTERNAL_DISPLAY_NOT_FOUND_FOOTER_RESOURCE); } - private static PreferenceCategory getCategoryForDisplay(@NonNull Display display, - @NonNull PrefRefresh screen, @NonNull Context context) { + private static PreferenceCategory reuseDisplayCategory( + PrefRefresh screen, Context context, int position) { // The rest of the settings are in a category with the display name as the title. - String categoryKey = "expanded_display_items_" + display.getDisplayId(); + String categoryKey = PrefBasics.EXTERNAL_DISPLAY_LIST.keyForNth(position); var category = (PreferenceCategory) screen.findUnusedPreference(categoryKey); if (category != null) { @@ -479,45 +431,30 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen } else { category = new PreferenceCategory(context); screen.addPreference(category); - category.setPersistent(false); - category.setKey(categoryKey); - category.setTitle(display.getName()); - category.setOrder(PrefBasics.BUILTIN_DISPLAY_LIST.order + 1); + PrefBasics.EXTERNAL_DISPLAY_LIST.apply(category, position); + category.setOrder(PrefBasics.BUILTIN_DISPLAY_LIST.order + 1 + position); } return category; } - private void showDisplaySettings(@NonNull Display display, @NonNull PrefRefresh screen, - @NonNull Context context) { + private void showDisplaySettings(Display display, PrefRefresh refresh, + Context context, boolean includeV1Helpers, int position) { final var isEnabled = mInjector != null && mInjector.isDisplayEnabled(display); if (isUseDisplaySettingEnabled(mInjector)) { - addUseDisplayPreferenceForDisplay(context, screen, display, isEnabled); + addUseDisplayPreferenceForDisplay(context, refresh, display, isEnabled, position); } if (!isEnabled) { // Skip all other settings return; } final var displayRotation = getDisplayRotation(display.getDisplayId()); - if (!isTopologyPaneEnabled(mInjector)) { - screen.addPreference(updateIllustrationImage(context, displayRotation)); - } - - if (isTopologyPaneEnabled(mInjector)) { - var displayCategory = getCategoryForDisplay(display, screen, context); - try (var categoryRefresh = new PrefRefresh(displayCategory)) { - addDisplaySettings(context, categoryRefresh, display, displayRotation); - } - } else { - addDisplaySettings(context, screen, display, displayRotation); + if (includeV1Helpers) { + addIllustrationImage(context, refresh, displayRotation); } - } - - private void addDisplaySettings(Context context, PrefRefresh refresh, Display display, - int displayRotation) { - addResolutionPreference(context, refresh, display); - addRotationPreference(context, refresh, display, displayRotation); + addResolutionPreference(context, refresh, display, position); + addRotationPreference(context, refresh, display, displayRotation, position); if (isResolutionSettingEnabled(mInjector)) { // Do not show the footer about changing resolution affecting apps. This is not in the // UX design for v2, and there is no good place to put it, since (a) if it is on the @@ -529,13 +466,13 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen // inconsistent with the topology pane, which shows that display. // TODO(b/352648432): probably remove footer once the pane and rest of v2 UI is in // place. - if (!isTopologyPaneEnabled(mInjector)) { + if (includeV1Helpers) { addFooterPreference( context, refresh, EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE); } } if (isDisplaySizeSettingEnabled(mInjector)) { - addSizePreference(context, refresh, display.getDisplayId()); + addSizePreference(context, refresh, display.getDisplayId(), position); } } @@ -555,66 +492,26 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen private void showDisplaysList(@NonNull List<Display> displaysToShow, @NonNull PrefRefresh screen, @NonNull Context context) { maybeAddV2Components(context, screen); - int order = PrefBasics.BUILTIN_DISPLAY_LIST.order; + int position = 0; + boolean includeV1Helpers = !isTopologyPaneEnabled(mInjector) && displaysToShow.size() <= 1; for (var display : displaysToShow) { - var pref = getDisplayPreference(context, display, screen, ++order); - pref.setSummary(display.getMode().getPhysicalWidth() + " x " - + display.getMode().getPhysicalHeight()); - } - } - - @VisibleForTesting - static String displayListDisplayCategoryKey(int displayId) { - return "display_list_display_category_" + displayId; - } - - @VisibleForTesting - static String resolutionRotationPreferenceKey(int displayId) { - return "display_id_" + displayId; - } - - private Preference getDisplayPreference(@NonNull Context context, - @NonNull Display display, @NonNull PrefRefresh groupCleanable, int categoryOrder) { - var itemKey = resolutionRotationPreferenceKey(display.getDisplayId()); - var categoryKey = displayListDisplayCategoryKey(display.getDisplayId()); - var category = (PreferenceCategory) groupCleanable.findUnusedPreference(categoryKey); - - if (category != null) { - groupCleanable.addPreference(category); - return category.findPreference(itemKey); - } else { - category = new PreferenceCategory(context); - category.setPersistent(false); - category.setKey(categoryKey); - category.setOrder(categoryOrder); - // Must add the category to the hierarchy before adding its descendants. Otherwise - // the category will not have a preference manager, which causes an exception when a - // child is added to it. - groupCleanable.addPreference(category); - - var prefItem = new DisplayPreference(context, display); - prefItem.setTitle( - context.getString(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.titleResource) + " | " - + context.getString(PrefBasics.EXTERNAL_DISPLAY_ROTATION.titleResource)); - prefItem.setKey(itemKey); - - category.addPreference(prefItem); + var category = reuseDisplayCategory(screen, context, position); category.setTitle(display.getName()); - return prefItem; + try (var refresh = new PrefRefresh(category)) { + // The category may have already been populated if it was retrieved from `screen`, + // but we still need to update resolution and rotation items. + showDisplaySettings(display, refresh, context, includeV1Helpers, position); + } + + position++; } } - private List<Display> externalDisplaysToShow(int displayIdToShow) { + private List<Display> externalDisplaysToShow() { if (mInjector == null) { return List.of(); } - if (displayIdToShow != INVALID_DISPLAY) { - var display = mInjector.getDisplay(displayIdToShow); - if (display != null && isDisplayAllowed(display, mInjector)) { - return List.of(display); - } - } var displaysToShow = new ArrayList<Display>(); for (var display : mInjector.getAllDisplays()) { if (display != null && isDisplayAllowed(display, mInjector)) { @@ -624,16 +521,17 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen return displaysToShow; } - private void addUseDisplayPreferenceNoDisplaysFound(Context context, PrefRefresh refresh) { - final var pref = reuseUseDisplayPreference(context, refresh); + private void addUseDisplayPreferenceNoDisplaysFound(Context context, PrefRefresh refresh, + int position) { + final var pref = reuseUseDisplayPreference(context, refresh, position); pref.setChecked(false); pref.setEnabled(false); pref.setOnPreferenceChangeListener(null); } private void addUseDisplayPreferenceForDisplay(final Context context, - PrefRefresh refresh, final Display display, boolean isEnabled) { - final var pref = reuseUseDisplayPreference(context, refresh); + PrefRefresh refresh, final Display display, boolean isEnabled, int position) { + final var pref = reuseUseDisplayPreference(context, refresh, position); pref.setChecked(isEnabled); pref.setEnabled(true); pref.setOnPreferenceChangeListener((p, newValue) -> { @@ -654,20 +552,19 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen }); } - private Preference updateIllustrationImage(@NonNull final Context context, + private void addIllustrationImage(final Context context, PrefRefresh refresh, final int displayRotation) { - var pref = getIllustrationPreference(context); + var pref = reuseIllustrationPreference(context, refresh); if (displayRotation % 2 == 0) { pref.setLottieAnimationResId(EXTERNAL_DISPLAY_PORTRAIT_DRAWABLE); } else { pref.setLottieAnimationResId(EXTERNAL_DISPLAY_LANDSCAPE_DRAWABLE); } - return pref; } private void addRotationPreference(final Context context, - PrefRefresh refresh, final Display display, final int displayRotation) { - var pref = reuseRotationPreference(context, refresh); + PrefRefresh refresh, final Display display, final int displayRotation, int position) { + var pref = reuseRotationPreference(context, refresh, position); if (mRotationEntries == null || mRotationEntriesValues == null) { mRotationEntries = new String[] { context.getString(R.string.external_display_standard_rotation), @@ -694,8 +591,8 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen } private void addResolutionPreference(final Context context, PrefRefresh refresh, - final Display display) { - var pref = reuseResolutionPreference(context, refresh); + final Display display, int position) { + var pref = reuseResolutionPreference(context, refresh, position); pref.setSummary(display.getMode().getPhysicalWidth() + " x " + display.getMode().getPhysicalHeight()); pref.setOnPreferenceClickListener((Preference p) -> { @@ -706,8 +603,9 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen pref.setEnabled(isResolutionSettingEnabled(mInjector)); } - private void addSizePreference(final Context context, PrefRefresh refresh, int displayId) { - var pref = reuseSizePreference(context, refresh, displayId); + private void addSizePreference(final Context context, PrefRefresh refresh, int displayId, + int position) { + var pref = reuseSizePreference(context, refresh, displayId, position); pref.setSummary(EXTERNAL_DISPLAY_SIZE_SUMMARY_RESOURCE); pref.setOnPreferenceClickListener( (Preference p) -> { @@ -804,27 +702,6 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen public void onStopTrackingTouch(@NonNull SeekBar seekBar) {} } - @VisibleForTesting - class DisplayPreference extends TwoTargetPreference - implements Preference.OnPreferenceClickListener { - private final int mDisplayId; - - DisplayPreference(@NonNull final Context context, @NonNull final Display display) { - super(context); - mDisplayId = display.getDisplayId(); - - setPersistent(false); - setOnPreferenceClickListener(this); - } - - @Override - public boolean onPreferenceClick(@NonNull Preference preference) { - launchExternalDisplaySettings(mDisplayId); - writePreferenceClickMetric(preference); - return true; - } - } - private static class PrefRefresh implements AutoCloseable { private final PreferenceGroup mScreen; private final HashMap<String, Preference> mUnusedPreferences = new HashMap<>(); diff --git a/src/com/android/settings/datetime/DateTimeLaunchUtils.java b/src/com/android/settings/datetime/DateTimeLaunchUtils.java deleted file mode 100644 index f8cf0be2047..00000000000 --- a/src/com/android/settings/datetime/DateTimeLaunchUtils.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2024 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.settings.datetime; - -import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME; - -import android.provider.DeviceConfig; - -import com.android.settings.flags.Flags; - -/** A class to avoid duplication of launch-control logic for "time feedback" support. */ -final class DateTimeLaunchUtils { - /** - * A {@link DeviceConfig} flag that influences whether the settings entries related to help and - * feedback are supported on this device / for this user. - */ - public static final String KEY_HELP_AND_FEEDBACK_FEATURE_SUPPORTED = - "time_help_and_feedback_feature_supported"; - - private DateTimeLaunchUtils() {} - - static boolean isFeedbackFeatureSupported() { - // Support is determined according to: - // 1) A build-time flag to determine release feature availability. - // 2) A runtime / server-side flag to determine which devices / who gets to see the feature. - // This is launch control for limiting the feedback to droidfooding. - return isFeedbackFeatureSupportedThisRelease() && isFeedbackFeatureSupportedOnThisDevice(); - } - - private static boolean isFeedbackFeatureSupportedThisRelease() { - return Flags.datetimeFeedback(); - } - - private static boolean isFeedbackFeatureSupportedOnThisDevice() { - boolean defaultIsSupported = false; - return DeviceConfig.getBoolean( - NAMESPACE_SYSTEM_TIME, KEY_HELP_AND_FEEDBACK_FEATURE_SUPPORTED, defaultIsSupported); - } -} diff --git a/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryController.java b/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryController.java index 372eee89d7d..6e3a0b27378 100644 --- a/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryController.java +++ b/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryController.java @@ -20,6 +20,7 @@ import android.content.Context; import androidx.annotation.NonNull; import com.android.settings.core.BasePreferenceController; +import com.android.settings.flags.Flags; import com.android.settingslib.core.AbstractPreferenceController; import java.util.ArrayList; @@ -48,7 +49,7 @@ public class TimeFeedbackPreferenceCategoryController extends BasePreferenceCont @Override public int getAvailabilityStatus() { // Firstly, hide the category if it is not enabled by flags. - if (!isTimeFeedbackFeatureEnabled()) { + if (!Flags.datetimeFeedback()) { return UNSUPPORTED_ON_DEVICE; } @@ -60,8 +61,4 @@ public class TimeFeedbackPreferenceCategoryController extends BasePreferenceCont } return UNSUPPORTED_ON_DEVICE; } - - protected boolean isTimeFeedbackFeatureEnabled() { - return DateTimeLaunchUtils.isFeedbackFeatureSupported(); - } } diff --git a/src/com/android/settings/datetime/TimeFeedbackPreferenceController.java b/src/com/android/settings/datetime/TimeFeedbackPreferenceController.java index ff3cb4ba49c..4830c60cc37 100644 --- a/src/com/android/settings/datetime/TimeFeedbackPreferenceController.java +++ b/src/com/android/settings/datetime/TimeFeedbackPreferenceController.java @@ -32,6 +32,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settings.flags.Flags; import java.net.URISyntaxException; @@ -47,7 +48,6 @@ public class TimeFeedbackPreferenceController private final PackageManager mPackageManager; private final String mIntentUri; - private final int mAvailabilityStatus; public TimeFeedbackPreferenceController(Context context, String preferenceKey) { this(context, context.getPackageManager(), preferenceKey, context.getResources().getString( @@ -60,7 +60,6 @@ public class TimeFeedbackPreferenceController super(context, preferenceKey); mPackageManager = packageManager; mIntentUri = intentUri; - mAvailabilityStatus = TextUtils.isEmpty(mIntentUri) ? UNSUPPORTED_ON_DEVICE : AVAILABLE; } /** @@ -75,13 +74,12 @@ public class TimeFeedbackPreferenceController @Override public int getAvailabilityStatus() { - if (!DateTimeLaunchUtils.isFeedbackFeatureSupported()) { + if (!Flags.datetimeFeedback() || TextUtils.isEmpty(mIntentUri)) { return UNSUPPORTED_ON_DEVICE; - } - if (!isTimeFeedbackTargetAvailable()) { + } else if (!isTimeFeedbackTargetAvailable()) { return CONDITIONALLY_UNAVAILABLE; } - return mAvailabilityStatus; + return AVAILABLE; } @Override diff --git a/src/com/android/settings/display/ScreenResolutionFragment.java b/src/com/android/settings/display/ScreenResolutionFragment.java index d9718f66f93..b95d581db5f 100644 --- a/src/com/android/settings/display/ScreenResolutionFragment.java +++ b/src/com/android/settings/display/ScreenResolutionFragment.java @@ -26,8 +26,6 @@ import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import android.view.Display; -import android.view.accessibility.AccessibilityEvent; -import android.view.accessibility.AccessibilityManager; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; @@ -64,7 +62,6 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment { private IllustrationPreference mImagePreference; private DisplayObserver mDisplayObserver; - private AccessibilityManager mAccessibilityManager; private int mHighWidth; private int mFullWidth; @@ -75,7 +72,6 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment { mDefaultDisplay = context.getSystemService(DisplayManager.class).getDisplay(Display.DEFAULT_DISPLAY); - mAccessibilityManager = context.getSystemService(AccessibilityManager.class); mResources = context.getResources(); mScreenResolutionOptions = mResources.getStringArray(R.array.config_screen_resolution_options_strings); @@ -236,13 +232,6 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment { return; } - if (mAccessibilityManager.isEnabled()) { - AccessibilityEvent event = AccessibilityEvent.obtain(); - event.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT); - event.getText().add(mResources.getString(R.string.screen_resolution_selected_a11y)); - mAccessibilityManager.sendAccessibilityEvent(event); - } - super.onRadioButtonClicked(selected); } diff --git a/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceController.java b/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceController.java new file mode 100644 index 00000000000..3688a05c6b8 --- /dev/null +++ b/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceController.java @@ -0,0 +1,59 @@ +/* + * Copyright 2025 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.settings.display.darkmode; + +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.preference.PreferenceScreen; + +import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; +import com.android.settingslib.widget.TopIntroPreference; + +/** + * Controller of the top info preference in the Dark Mode settings page. + * + * This should be removed after the flag android.view.accessibility.force_invert_color is launched. + */ +public class DarkModeTopIntroPreferenceController extends BasePreferenceController { + @Nullable private TopIntroPreference mPreference; + + public DarkModeTopIntroPreferenceController( + @NonNull Context context, + @NonNull String preferenceKey) { + super(context, preferenceKey); + + } + + @Override + public int getAvailabilityStatus() { + return AVAILABLE_UNSEARCHABLE; + } + + @Override + public void displayPreference(@NonNull PreferenceScreen screen) { + super.displayPreference(screen); + mPreference = screen.findPreference(getPreferenceKey()); + if (android.view.accessibility.Flags.forceInvertColor()) { + mPreference.setTitle(R.string.dark_ui_text_force_invert); + } else { + mPreference.setTitle(R.string.dark_ui_text); + } + } +} diff --git a/src/com/android/settings/nfc/OWNERS b/src/com/android/settings/nfc/OWNERS index 2f73a10ca41..55c4945fc13 100644 --- a/src/com/android/settings/nfc/OWNERS +++ b/src/com/android/settings/nfc/OWNERS @@ -4,4 +4,3 @@ jackcwyu@google.com georgekgchang@google.com # Emergency approvers in case the above are not available -zachoverflow@google.com diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java index 7892ac47ffa..60589535f2d 100644 --- a/src/com/android/settings/password/ChooseLockPassword.java +++ b/src/com/android/settings/password/ChooseLockPassword.java @@ -585,10 +585,10 @@ public class ChooseLockPassword extends SettingsActivity { : (InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD)); if (mIsAlphaMode) { mPasswordEntry.setContentDescription( - getString(R.string.unlock_set_unlock_password_title)); + getString(R.string.unlock_accessibility_password)); } else { mPasswordEntry.setContentDescription( - getString(R.string.unlock_set_unlock_pin_title)); + getString(R.string.unlock_accessibility_pin_area)); } // Can't set via XML since setInputType resets the fontFamily to null mPasswordEntry.setTypeface(Typeface.create( diff --git a/src/com/android/settings/password/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java index a09db22c215..ee9e3171dc2 100644 --- a/src/com/android/settings/password/ConfirmLockPassword.java +++ b/src/com/android/settings/password/ConfirmLockPassword.java @@ -66,7 +66,6 @@ import com.android.internal.widget.LockscreenCredential; import com.android.internal.widget.TextViewInputDisabler; import com.android.settings.R; import com.android.settings.SetupRedactionInterstitial; -import com.android.settings.SetupWizardUtils; import com.android.settings.Utils; import com.android.settingslib.animation.AppearAnimationUtils; import com.android.settingslib.animation.DisappearAnimationUtils; @@ -211,12 +210,12 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity { if (mIsAlpha) { mPasswordEntry.setInputType(currentType); mPasswordEntry.setContentDescription( - getContext().getString(R.string.unlock_set_unlock_password_title)); + getContext().getString(R.string.unlock_accessibility_password)); } else { mPasswordEntry.setInputType( InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD); mPasswordEntry.setContentDescription( - getContext().getString(R.string.unlock_set_unlock_pin_title)); + getContext().getString(R.string.unlock_accessibility_pin_area)); } // Can't set via XML since setInputType resets the fontFamily to null mPasswordEntry.setTypeface(Typeface.create( diff --git a/src/com/android/settings/password/OWNERS b/src/com/android/settings/password/OWNERS index 4adcfbefd2a..9e403d3b55a 100644 --- a/src/com/android/settings/password/OWNERS +++ b/src/com/android/settings/password/OWNERS @@ -2,7 +2,6 @@ set noparent # Default reviewers for this and subdirectories. -curtislb@google.com graciecheng@google.com ilyamaty@google.com jbolinger@google.com diff --git a/src/com/android/settings/widget/CheckableRelativeLayout.java b/src/com/android/settings/widget/CheckableRelativeLayout.java index d26c042dc29..f3c99291c32 100644 --- a/src/com/android/settings/widget/CheckableRelativeLayout.java +++ b/src/com/android/settings/widget/CheckableRelativeLayout.java @@ -16,6 +16,8 @@ package com.android.settings.widget; +import static android.view.accessibility.Flags.triStateChecked; + import android.content.Context; import android.util.AttributeSet; import android.view.View; @@ -90,10 +92,16 @@ public class CheckableRelativeLayout extends RelativeLayout implements Checkable if (mCheckable != null) { mCheckable.setChecked(checked); } + if (triStateChecked()) { + notifyViewAccessibilityStateChangedIfNeeded( + AccessibilityEvent.CONTENT_CHANGE_TYPE_CHECKED); + } } setStateDescriptionIfNeeded(); - notifyViewAccessibilityStateChangedIfNeeded( - AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); + if (!triStateChecked()) { + notifyViewAccessibilityStateChangedIfNeeded( + AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); + } } private void setStateDescriptionIfNeeded() { @@ -122,6 +130,11 @@ public class CheckableRelativeLayout extends RelativeLayout implements Checkable @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); - info.setChecked(mChecked); + if (triStateChecked()) { + info.setChecked(mChecked ? AccessibilityNodeInfo.CHECKED_STATE_TRUE : + AccessibilityNodeInfo.CHECKED_STATE_FALSE); + } else { + info.setChecked(mChecked); + } } } diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickControllerTest.java new file mode 100644 index 00000000000..5d9f79e33e0 --- /dev/null +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickControllerTest.java @@ -0,0 +1,95 @@ +/* + * Copyright 2025 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.settings.accessibility; + +import static android.view.accessibility.AccessibilityManager.AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT; + +import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; +import static com.android.settings.accessibility.AccessibilityUtil.State.ON; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.annotations.EnableFlags; +import android.platform.test.flag.junit.SetFlagsRule; +import android.provider.Settings; + +import androidx.test.core.app.ApplicationProvider; + +import com.android.settings.core.BasePreferenceController; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +/** Tests for {@link ToggleAutoclickRevertToLeftClickController}. */ +@RunWith(RobolectricTestRunner.class) +public class ToggleAutoclickRevertToLeftClickControllerTest { + + private static final String PREFERENCE_KEY = + "accessibility_control_autoclick_revert_to_left_click"; + + @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); + private final Context mContext = ApplicationProvider.getApplicationContext(); + private ToggleAutoclickRevertToLeftClickController mController; + + @Before + public void setUp() { + mController = + new ToggleAutoclickRevertToLeftClickController(mContext, PREFERENCE_KEY); + } + + @Test + @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR) + public void getAvailabilityStatus_availableWhenFlagOn() { + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(BasePreferenceController.AVAILABLE); + } + + @Test + @DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR) + public void getAvailabilityStatus_conditionallyUnavailableWhenFlagOn() { + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE); + } + + @Test + public void isChecked_matchesSetting() { + assertThat(mController.isChecked()).isEqualTo(readSetting() == ON); + } + + @Test + public void setChecked_true_updatesSetting() { + mController.setChecked(true); + assertThat(readSetting()).isEqualTo(ON); + } + + @Test + public void setChecked_false_updatesSetting() { + mController.setChecked(false); + assertThat(readSetting()).isEqualTo(OFF); + } + + private int readSetting() { + return Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_AUTOCLICK_REVERT_TO_LEFT_CLICK, + AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT ? ON : OFF); + } +} diff --git a/tests/robotests/src/com/android/settings/bluetooth/ForgetDeviceDialogFragmentTest.java b/tests/robotests/src/com/android/settings/bluetooth/ForgetDeviceDialogFragmentTest.java index 2394c7c9740..a743018ea4d 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/ForgetDeviceDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/ForgetDeviceDialogFragmentTest.java @@ -20,24 +20,36 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothDevice; +import android.companion.AssociationInfo; +import android.companion.CompanionDeviceManager; import android.content.Context; +import android.content.DialogInterface; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; +import android.net.MacAddress; +import android.os.Bundle; +import android.platform.test.annotations.RequiresFlagsEnabled; +import android.platform.test.flag.junit.CheckFlagsRule; +import android.platform.test.flag.junit.DeviceFlagsValueProvider; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentActivity; import com.android.settings.R; -import com.android.settings.testutils.FakeFeatureFactory; +import com.android.settings.flags.Flags; import com.android.settings.testutils.shadow.ShadowAlertDialogCompat; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import org.junit.Before; import org.junit.Ignore; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; @@ -48,41 +60,64 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowDialog; +import org.robolectric.shadows.ShadowLooper; import org.robolectric.shadows.androidx.fragment.FragmentController; -@Ignore +import java.util.ArrayList; +import java.util.List; + @RunWith(RobolectricTestRunner.class) -@Config(shadows = {ShadowAlertDialogCompat.class}) +@Config(shadows = { + com.android.settings.testutils.shadow.ShadowFragment.class, + ShadowAlertDialogCompat.class, +}) public class ForgetDeviceDialogFragmentTest { private static final String DEVICE_NAME = "Nightshade"; + private static final String PACKAGE_NAME = "com.android.test"; + private static final CharSequence APP_NAME = "test"; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private CachedBluetoothDevice mCachedDevice; @Mock private BluetoothDevice mBluetoothDevice; + @Mock + private CompanionDeviceManager mCompanionDeviceManager; + @Mock + private PackageManager mPackageManager; private ForgetDeviceDialogFragment mFragment; private FragmentActivity mActivity; private AlertDialog mDialog; private Context mContext; + private List<AssociationInfo> mAssociations; + + @Rule + public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); @Before public void setUp() { MockitoAnnotations.initMocks(this); - mContext = RuntimeEnvironment.application; - FakeFeatureFactory.setupForTest(); String deviceAddress = "55:66:77:88:99:AA"; + mAssociations = new ArrayList<>(); + mFragment = spy(ForgetDeviceDialogFragment.newInstance(deviceAddress)); + mContext = spy(RuntimeEnvironment.application); + mFragment.mCompanionDeviceManager = mCompanionDeviceManager; + mFragment.mPackageManager = mPackageManager; + mFragment.mDevice = mCachedDevice; + mActivity = Robolectric.setupActivity(FragmentActivity.class); + + when(mFragment.getActivity()).thenReturn(mActivity); when(mCachedDevice.getAddress()).thenReturn(deviceAddress); when(mCachedDevice.getIdentityAddress()).thenReturn(deviceAddress); when(mCachedDevice.getDevice()).thenReturn(mBluetoothDevice); when(mCachedDevice.getName()).thenReturn(DEVICE_NAME); - mFragment = spy(ForgetDeviceDialogFragment.newInstance(deviceAddress)); + when(mCompanionDeviceManager.getAllAssociations()).thenReturn(mAssociations); doReturn(mCachedDevice).when(mFragment).getDevice(any()); - mActivity = Robolectric.setupActivity(FragmentActivity.class); } + @Ignore("b/253386225") @Test public void cancelDialog() { initDialog(); @@ -92,6 +127,7 @@ public class ForgetDeviceDialogFragmentTest { assertThat(mActivity.isFinishing()).isFalse(); } + @Ignore("b/253386225") @Test public void confirmDialog() { initDialog(); @@ -101,6 +137,7 @@ public class ForgetDeviceDialogFragmentTest { assertThat(mActivity.isFinishing()).isTrue(); } + @Ignore("b/253386225") @Test public void createDialog_normalDevice_showNormalMessage() { when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET)) @@ -115,8 +152,86 @@ public class ForgetDeviceDialogFragmentTest { mContext.getString(R.string.bluetooth_unpair_dialog_body, DEVICE_NAME)); } + @Test + @RequiresFlagsEnabled(Flags.FLAG_ENABLE_REMOVE_ASSOCIATION_BT_UNPAIR) + public void cancelDialog_with_association() { + addAssociation(); + final AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(Bundle.EMPTY); + dialog.show(); + dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick(); + ShadowLooper.idleMainLooper(); + + verify(mCachedDevice, never()).unpair(); + verify(mCompanionDeviceManager, never()).disassociate(1); + assertThat(mActivity.isFinishing()).isFalse(); + } + + @Test + @RequiresFlagsEnabled(Flags.FLAG_ENABLE_REMOVE_ASSOCIATION_BT_UNPAIR) + public void confirmDialog_with_association() { + addAssociation(); + final AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(Bundle.EMPTY); + dialog.show(); + dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick(); + ShadowLooper.idleMainLooper(); + + verify(mCachedDevice).unpair(); + verify(mCompanionDeviceManager).disassociate(1); + + assertThat(mActivity.isFinishing()).isTrue(); + } + + @Test + @RequiresFlagsEnabled(Flags.FLAG_ENABLE_REMOVE_ASSOCIATION_BT_UNPAIR) + public void createDialog_showMessage_with_association() { + addAssociation(); + final AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(Bundle.EMPTY); + dialog.show(); + ShadowLooper.idleMainLooper(); + + ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog); + assertThat(shadowDialog.getMessage().toString()).isEqualTo( + mContext.getString( + R.string.bluetooth_unpair_dialog_with_associations_body, + DEVICE_NAME, APP_NAME) + ); + } + private void initDialog() { mActivity.getSupportFragmentManager().beginTransaction().add(mFragment, null).commit(); mDialog = (AlertDialog) ShadowDialog.getLatestDialog(); } + + private void addAssociation() { + setupLabelAndInfo(PACKAGE_NAME, APP_NAME); + final AssociationInfo association = new AssociationInfo( + 1, + /* userId */ 0, + PACKAGE_NAME, + MacAddress.fromString(mCachedDevice.getAddress()), + /* displayName */ null, + /* deviceProfile */ "", + /* associatedDevice */ null, + /* selfManaged */ false, + /* notifyOnDeviceNearby */ true, + /* revoked */ false, + /* pending */ false, + /* timeApprovedMs */ System.currentTimeMillis(), + /* lastTimeConnected */ Long.MAX_VALUE, + /* systemDataSyncFlags */ -1, + /* deviceIcon */ null, + /* deviceId */ null); + + mAssociations.add(association); + } + + private void setupLabelAndInfo(String packageName, CharSequence appName) { + ApplicationInfo appInfo = mock(ApplicationInfo.class); + try { + when(mPackageManager.getApplicationInfo(packageName, 0)).thenReturn(appInfo); + when(mPackageManager.getApplicationLabel(appInfo)).thenReturn(appName); + } catch (PackageManager.NameNotFoundException e) { + throw new RuntimeException(e); + } + } } diff --git a/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryControllerTest.java b/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryControllerTest.java index 2e603e38d37..dc2d25d3a24 100644 --- a/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryControllerTest.java +++ b/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryControllerTest.java @@ -24,45 +24,51 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.when; import android.content.Context; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.annotations.EnableFlags; +import android.platform.test.flag.junit.SetFlagsRule; +import com.android.settings.flags.Flags; import com.android.settingslib.core.AbstractPreferenceController; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class TimeFeedbackPreferenceCategoryControllerTest { - private TestTimeFeedbackPreferenceCategoryController mController; + private TimeFeedbackPreferenceCategoryController mController; @Mock private AbstractPreferenceController mChildController; + @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); + @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); + @Before public void setUp() { - MockitoAnnotations.initMocks(this); Context context = RuntimeEnvironment.getApplication(); - mController = new TestTimeFeedbackPreferenceCategoryController(context, "test_key"); + mController = new TimeFeedbackPreferenceCategoryController(context, "test_key"); mController.addChildController(mChildController); } @Test + @DisableFlags({Flags.FLAG_DATETIME_FEEDBACK}) public void getAvailabilityStatus_featureEnabledPrimary() { - mController.setTimeFeedbackFeatureEnabled(false); - when(mChildController.isAvailable()).thenReturn(true); assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); } @Test + @EnableFlags({Flags.FLAG_DATETIME_FEEDBACK}) public void getAvailabilityStatus_childControllerSecondary() { - mController.setTimeFeedbackFeatureEnabled(true); - when(mChildController.isAvailable()).thenReturn(false); assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); @@ -71,27 +77,4 @@ public class TimeFeedbackPreferenceCategoryControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); } - - /** - * Extend class under test to change {@link #isTimeFeedbackFeatureEnabled} to not call - * {@link DateTimeLaunchUtils} because that's non-trivial to fake. - */ - private static class TestTimeFeedbackPreferenceCategoryController - extends TimeFeedbackPreferenceCategoryController { - - private boolean mTimeFeedbackFeatureEnabled; - - TestTimeFeedbackPreferenceCategoryController(Context context, String preferenceKey) { - super(context, preferenceKey); - } - - void setTimeFeedbackFeatureEnabled(boolean value) { - this.mTimeFeedbackFeatureEnabled = value; - } - - @Override - protected boolean isTimeFeedbackFeatureEnabled() { - return mTimeFeedbackFeatureEnabled; - } - } } diff --git a/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceControllerTest.java index 6cbb14f2142..6354e5e3170 100644 --- a/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceControllerTest.java @@ -16,8 +16,6 @@ package com.android.settings.datetime; -import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME; - import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; @@ -38,9 +36,9 @@ import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; -import android.provider.DeviceConfig; import androidx.preference.Preference; @@ -82,6 +80,7 @@ public class TimeFeedbackPreferenceControllerTest { } @Test + @EnableFlags({Flags.FLAG_DATETIME_FEEDBACK}) public void emptyIntentUri_controllerNotAvailable() { String emptyIntentUri = ""; TimeFeedbackPreferenceController controller = @@ -91,10 +90,17 @@ public class TimeFeedbackPreferenceControllerTest { } @Test + @DisableFlags({Flags.FLAG_DATETIME_FEEDBACK}) + public void datetimeFeedbackDisabled_controllerNotAvailable() { + TimeFeedbackPreferenceController controller = + new TimeFeedbackPreferenceController( + mContext, mContext.getPackageManager(), "test_key", TEST_INTENT_URI); + assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); + } + + @Test @EnableFlags({Flags.FLAG_DATETIME_FEEDBACK}) public void validIntentUri_targetHandlerNotFound_returnsConditionallyUnavailable() { - DeviceConfig.setProperty(NAMESPACE_SYSTEM_TIME, - DateTimeLaunchUtils.KEY_HELP_AND_FEEDBACK_FEATURE_SUPPORTED, "true", true); when(mMockPackageManager.resolveActivity(any(), anyInt())).thenReturn(null); TimeFeedbackPreferenceController controller = @@ -107,8 +113,6 @@ public class TimeFeedbackPreferenceControllerTest { @Test @EnableFlags({Flags.FLAG_DATETIME_FEEDBACK}) public void validIntentUri_targetHandlerAvailable_returnsAvailable() { - DeviceConfig.setProperty(NAMESPACE_SYSTEM_TIME, - DateTimeLaunchUtils.KEY_HELP_AND_FEEDBACK_FEATURE_SUPPORTED, "true", true); when(mMockPackageManager.resolveActivity(any(), anyInt())).thenReturn( createDummyResolveInfo()); @@ -120,6 +124,7 @@ public class TimeFeedbackPreferenceControllerTest { } @Test + @EnableFlags({Flags.FLAG_DATETIME_FEEDBACK}) public void clickPreference() { Preference preference = new Preference(mContext); diff --git a/tests/robotests/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceControllerTest.java new file mode 100644 index 00000000000..f5f25d89f82 --- /dev/null +++ b/tests/robotests/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceControllerTest.java @@ -0,0 +1,86 @@ +/* + * Copyright 2025 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.settings.display.darkmode; + +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.content.Context; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.annotations.EnableFlags; +import android.platform.test.flag.junit.SetFlagsRule; +import android.view.accessibility.Flags; + +import androidx.preference.PreferenceScreen; +import androidx.test.core.app.ApplicationProvider; + +import com.android.settings.R; +import com.android.settingslib.widget.TopIntroPreference; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; +import org.robolectric.RobolectricTestRunner; + +/** + * Tests for {@link DarkModeTopIntroPreferenceController}. + */ +@RunWith(RobolectricTestRunner.class) +public class DarkModeTopIntroPreferenceControllerTest { + @Rule + public final MockitoRule mocks = MockitoJUnit.rule(); + @Rule + public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); + + private static final String PREFERENCE_KEY = "preference_key"; + + @Mock + private PreferenceScreen mScreen; + @Mock + private TopIntroPreference mPreference; + private DarkModeTopIntroPreferenceController mController; + private final Context mContext = ApplicationProvider.getApplicationContext(); + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mController = new DarkModeTopIntroPreferenceController(mContext, PREFERENCE_KEY); + when(mScreen.findPreference(PREFERENCE_KEY)).thenReturn(mPreference); + } + + @Test + @EnableFlags(Flags.FLAG_FORCE_INVERT_COLOR) + public void enableForceInvert_newPreferenceTitle() { + mController.displayPreference(mScreen); + + verify(mPreference).setTitle(eq(R.string.dark_ui_text_force_invert)); + } + + @Test + @DisableFlags(Flags.FLAG_FORCE_INVERT_COLOR) + public void disableForceInvert_originalPreferenceTitle() { + mController.displayPreference(mScreen); + + verify(mPreference).setTitle(eq(R.string.dark_ui_text)); + } +} diff --git a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java index c6bdebdcc14..c9cf5a2a852 100644 --- a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java +++ b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java @@ -56,7 +56,6 @@ import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiEntry.ConnectedState; import org.junit.Before; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -73,7 +72,6 @@ import org.robolectric.shadows.ShadowBinder; import java.util.ArrayList; import java.util.List; -@Ignore("b/394813533") @Deprecated(forRemoval = true) @RunWith(RobolectricTestRunner.class) @Config(shadows = { diff --git a/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java index a87e66b1b96..0b118a78358 100644 --- a/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java +++ b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java @@ -21,9 +21,6 @@ import static com.android.settings.connecteddevice.display.ExternalDisplayPrefer import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_NOT_FOUND_FOOTER_RESOURCE; import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_SETTINGS_RESOURCE; import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_SIZE_SUMMARY_RESOURCE; -import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.PREVIOUSLY_SHOWN_LIST_KEY; -import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.displayListDisplayCategoryKey; -import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.resolutionRotationPreferenceKey; import static com.android.settings.flags.Flags.FLAG_DISPLAY_SIZE_CONNECTED_DISPLAY_SETTING; import static com.android.settings.flags.Flags.FLAG_DISPLAY_TOPOLOGY_PANE_IN_DISPLAY_LIST; @@ -53,7 +50,6 @@ import androidx.preference.PreferenceScreen; import androidx.test.annotation.UiThreadTest; import androidx.test.ext.junit.runners.AndroidJUnit4; -import com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.DisplayPreference; import com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.PrefBasics; import com.android.settingslib.widget.MainSwitchPreference; @@ -67,7 +63,6 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa @Nullable private ExternalDisplayPreferenceFragment mFragment; private int mPreferenceIdFromResource; - private int mDisplayIdArg = INVALID_DISPLAY; private boolean mLaunchedBuiltinSettings; private int mResolutionSelectorDisplayId = INVALID_DISPLAY; @Mock @@ -80,17 +75,20 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa assertThat(mPreferenceIdFromResource).isEqualTo(EXTERNAL_DISPLAY_SETTINGS_RESOURCE); } - private void assertDisplayList(boolean present, int displayId) { - // In display list fragment, there is a combined resolution/rotation preference key. - var category = mPreferenceScreen.findPreference(displayListDisplayCategoryKey(displayId)); - var pref = mPreferenceScreen.findPreference(resolutionRotationPreferenceKey(displayId)); - if (present) { - assertThat(category).isNotNull(); - assertThat(pref).isNotNull(); - } else { - assertThat(category).isNull(); - assertThat(pref).isNull(); + private PreferenceCategory getExternalDisplayCategory(int positionIndex) { + return mPreferenceScreen.findPreference( + PrefBasics.EXTERNAL_DISPLAY_LIST.keyForNth(positionIndex)); + } + + private void assertDisplayListCount(int expectedCount) { + int actualCount = 0; + for (int i = 0; i < mPreferenceScreen.getPreferenceCount(); i++) { + Preference child = mPreferenceScreen.getPreference(i); + if (child.getKey().startsWith(PrefBasics.EXTERNAL_DISPLAY_LIST.key)) { + actualCount++; + } } + assertThat(actualCount).isEqualTo(expectedCount); } @Test @@ -100,27 +98,15 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa var fragment = initFragment(); var outState = new Bundle(); - fragment.onSaveInstanceStateCallback(outState); - assertThat(outState.getBoolean(PREVIOUSLY_SHOWN_LIST_KEY)).isFalse(); assertThat(mHandler.getPendingMessages().size()).isEqualTo(1); - // Combined resolution/refresh rate are not available in displays list because the pane is - // disabled (v1 UI). - assertDisplayList(false, EXTERNAL_DISPLAY_ID); - assertDisplayList(false, OVERLAY_DISPLAY_ID); - // Individual resolution preference is not available in displays list. - assertThat(mPreferenceScreen.<Preference>findPreference( - PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key)) - .isNull(); + assertDisplayListCount(0); verify(mMockedInjector, never()).getAllDisplays(); mHandler.flush(); assertThat(mHandler.getPendingMessages().size()).isEqualTo(0); verify(mMockedInjector).getAllDisplays(); - assertDisplayList(true, EXTERNAL_DISPLAY_ID); - assertDisplayList(true, OVERLAY_DISPLAY_ID); - fragment.onSaveInstanceStateCallback(outState); - assertThat(outState.getBoolean(PREVIOUSLY_SHOWN_LIST_KEY)).isTrue(); + assertDisplayListCount(2); Preference pref = mPreferenceScreen.findPreference(PrefBasics.DISPLAY_TOPOLOGY.key); assertThat(pref).isNull(); @@ -143,7 +129,8 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa pref = mPreferenceScreen.findPreference(PrefBasics.MIRROR.key); assertThat(pref).isNotNull(); - assertDisplayList(false, mDisplays[1].getDisplayId()); + assertDisplayListCount(1); + assertThat("" + getExternalDisplayCategory(0).getTitle()).isEqualTo("HDMI"); PreferenceCategory listPref = mPreferenceScreen.findPreference(PrefBasics.BUILTIN_DISPLAY_LIST.key); @@ -168,8 +155,7 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa pref = mPreferenceScreen.findPreference(PrefBasics.MIRROR.key); assertThat(pref).isNull(); - assertDisplayList(false, EXTERNAL_DISPLAY_ID); - assertDisplayList(false, OVERLAY_DISPLAY_ID); + assertDisplayListCount(0); var listPref = mPreferenceScreen.findPreference(PrefBasics.BUILTIN_DISPLAY_LIST.key); assertThat(listPref).isNull(); @@ -179,46 +165,36 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa @UiThreadTest public void testLaunchDisplaySettingFromList() { initFragment(); + doReturn(true).when(mMockedInjector).isDisplayEnabled(any()); mHandler.flush(); - assertDisplayList(true, EXTERNAL_DISPLAY_ID); - assertDisplayList(true, OVERLAY_DISPLAY_ID); - PreferenceCategory display1Category = mPreferenceScreen.findPreference( - displayListDisplayCategoryKey(EXTERNAL_DISPLAY_ID)); - var display1Pref = (DisplayPreference) display1Category.getPreference(0); - PreferenceCategory display2Category = mPreferenceScreen.findPreference( - displayListDisplayCategoryKey(OVERLAY_DISPLAY_ID)); - var display2Pref = (DisplayPreference) display2Category.getPreference(0); - assertThat(display1Pref.getKey()).isEqualTo( - resolutionRotationPreferenceKey(EXTERNAL_DISPLAY_ID)); + assertDisplayListCount(2); + var display1Category = getExternalDisplayCategory(0); + var display2Category = getExternalDisplayCategory(1); assertThat("" + display1Category.getTitle()).isEqualTo("HDMI"); - assertThat("" + display1Pref.getSummary()).isEqualTo("1920 x 1080"); - display1Pref.onPreferenceClick(display1Pref); - assertThat(mDisplayIdArg).isEqualTo(1); - verify(mMockedMetricsLogger).writePreferenceClickMetric(display1Pref); - assertThat(display2Pref.getKey()).isEqualTo( - resolutionRotationPreferenceKey(OVERLAY_DISPLAY_ID)); + var display1Resolution = display1Category.findPreference( + PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(0)); + display1Resolution.performClick(); + assertThat(mResolutionSelectorDisplayId).isEqualTo(1); + verify(mMockedMetricsLogger).writePreferenceClickMetric(display1Resolution); + var display2Resolution = display2Category.findPreference( + PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(1)); assertThat("" + display2Category.getTitle()).isEqualTo("Overlay #1"); - assertThat("" + display2Pref.getSummary()).isEqualTo("1240 x 780"); - display2Pref.onPreferenceClick(display2Pref); - assertThat(mDisplayIdArg).isEqualTo(2); - verify(mMockedMetricsLogger).writePreferenceClickMetric(display2Pref); + assertThat("" + display2Resolution.getSummary()).isEqualTo("1240 x 780"); + display2Resolution.performClick(); + assertThat(mResolutionSelectorDisplayId).isEqualTo(2); + verify(mMockedMetricsLogger).writePreferenceClickMetric(display2Resolution); } @Test @UiThreadTest public void testShowDisplayListForOnlyOneDisplay_PreviouslyShownList() { var fragment = initFragment(); - // Previously shown list of displays - fragment.onActivityCreatedCallback(createBundleForPreviouslyShownList()); // Only one display available doReturn(new Display[] {mDisplays[1]}).when(mMockedInjector).getAllDisplays(); mHandler.flush(); int attachedId = mDisplays[1].getDisplayId(); - assertDisplayList(true, attachedId); - assertThat(mPreferenceScreen.<Preference>findPreference( - resolutionRotationPreferenceKey(attachedId))) - .isNotNull(); - assertDisplayList(false, mDisplays[2].getDisplayId()); + assertDisplayListCount(1); + assertThat("" + getExternalDisplayCategory(0).getTitle()).isEqualTo("HDMI"); } @Test @@ -231,14 +207,15 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa // Init initFragment(); mHandler.flush(); - assertDisplayList(false, mDisplays[1].getDisplayId()); - var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key); + assertDisplayListCount(1); + var category = getExternalDisplayCategory(0); + var pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(0)); assertThat(pref).isNotNull(); - pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key); + pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.keyForNth(0)); assertThat(pref).isNotNull(); - var footerPref = mPreferenceScreen.findPreference(PrefBasics.FOOTER.key); + var footerPref = category.findPreference(PrefBasics.FOOTER.key); assertThat(footerPref).isNotNull(); - var sizePref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key); + var sizePref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(0)); assertThat(sizePref).isNull(); assertThat("" + footerPref.getTitle()) .isEqualTo(getText(EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE)); @@ -253,15 +230,12 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa // Init initFragment(); mHandler.flush(); - assertDisplayList(false, mDisplays[1].getDisplayId()); - assertDisplayList(false, mDisplays[2].getDisplayId()); - var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key); - assertThat(pref).isNotNull(); - pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key); - assertThat(pref).isNotNull(); - var footerPref = mPreferenceScreen.findPreference(PrefBasics.FOOTER.key); + assertDisplayListCount(1); + var category = getExternalDisplayCategory(0); + assertThat("" + category.getTitle()).isEqualTo("HDMI"); + var footerPref = category.findPreference(PrefBasics.FOOTER.key); assertThat(footerPref).isNotNull(); - var sizePref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key); + var sizePref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(0)); assertThat(sizePref).isNotNull(); assertThat("" + footerPref.getTitle()) .isEqualTo(getText(EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE)); @@ -270,47 +244,48 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa @Test @UiThreadTest public void testShowOneEnabledDisplay_FewAvailable() { - mDisplayIdArg = 1; doReturn(true).when(mMockedInjector).isDisplayEnabled(any()); initFragment(); - verify(mMockedInjector, never()).getDisplay(anyInt()); + verify(mMockedInjector, never()).getAllDisplays(); mHandler.flush(); - verify(mMockedInjector).getDisplay(mDisplayIdArg); - var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key); + verify(mMockedInjector, never()).getDisplay(anyInt()); + verify(mMockedInjector).getAllDisplays(); + var pref = mPreferenceScreen.findPreference( + PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(0)); assertThat(pref).isNotNull(); - pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key); + pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.keyForNth(0)); assertThat(pref).isNotNull(); var footerPref = mPreferenceScreen.findPreference(PrefBasics.FOOTER.key); - assertThat(footerPref).isNotNull(); - var sizePref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key); + // No footer for showing multiple displays. + assertThat(footerPref).isNull(); + var sizePref = mPreferenceScreen.findPreference( + PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(0)); assertThat(sizePref).isNotNull(); - assertThat("" + footerPref.getTitle()) - .isEqualTo(getText(EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE)); } @Test @UiThreadTest public void testShowDisabledDisplay() { - mDisplayIdArg = 1; initFragment(); - verify(mMockedInjector, never()).getDisplay(anyInt()); mHandler.flush(); - verify(mMockedInjector).getDisplay(mDisplayIdArg); - var mainPref = (MainSwitchPreference) mPreferenceScreen.findPreference( - PrefBasics.EXTERNAL_DISPLAY_USE.key); + verify(mMockedInjector, never()).getDisplay(anyInt()); + verify(mMockedInjector).getAllDisplays(); + var category = getExternalDisplayCategory(0); + var mainPref = (MainSwitchPreference) category.findPreference( + PrefBasics.EXTERNAL_DISPLAY_USE.keyForNth(0)); assertThat(mainPref).isNotNull(); assertThat("" + mainPref.getTitle()).isEqualTo( getText(PrefBasics.EXTERNAL_DISPLAY_USE.titleResource)); assertThat(mainPref.isChecked()).isFalse(); assertThat(mainPref.isEnabled()).isTrue(); assertThat(mainPref.getOnPreferenceChangeListener()).isNotNull(); - var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key); + var pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(0)); assertThat(pref).isNull(); - pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key); + pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.keyForNth(0)); assertThat(pref).isNull(); - var footerPref = mPreferenceScreen.findPreference(PrefBasics.FOOTER.key); + var footerPref = category.findPreference(PrefBasics.FOOTER.key); assertThat(footerPref).isNull(); - var sizePref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key); + var sizePref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(0)); assertThat(sizePref).isNull(); } @@ -321,7 +296,7 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa initFragment(); mHandler.flush(); var mainPref = (MainSwitchPreference) mPreferenceScreen.findPreference( - PrefBasics.EXTERNAL_DISPLAY_USE.key); + PrefBasics.EXTERNAL_DISPLAY_USE.keyForNth(0)); assertThat(mainPref).isNotNull(); assertThat("" + mainPref.getTitle()).isEqualTo( getText(PrefBasics.EXTERNAL_DISPLAY_USE.titleResource)); @@ -337,13 +312,13 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa @Test @UiThreadTest public void testDisplayRotationPreference() { - mDisplayIdArg = 1; + final int displayId = 1; doReturn(true).when(mMockedInjector).isDisplayEnabled(any()); var fragment = initFragment(); mHandler.flush(); - ListPreference pref = - mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key); - assertThat(pref.getKey()).isEqualTo(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key); + var category = getExternalDisplayCategory(0); + ListPreference pref = category.findPreference( + PrefBasics.EXTERNAL_DISPLAY_ROTATION.keyForNth(0)); assertThat("" + pref.getTitle()).isEqualTo( getText(PrefBasics.EXTERNAL_DISPLAY_ROTATION.titleResource)); assertThat(pref.getEntries().length).isEqualTo(4); @@ -359,10 +334,10 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa assertThat(pref.getOnPreferenceChangeListener()).isNotNull(); assertThat(pref.isEnabled()).isTrue(); var rotation = 1; - doReturn(true).when(mMockedInjector).freezeDisplayRotation(mDisplayIdArg, rotation); + doReturn(true).when(mMockedInjector).freezeDisplayRotation(displayId, rotation); assertThat(pref.getOnPreferenceChangeListener().onPreferenceChange(pref, rotation + "")) .isTrue(); - verify(mMockedInjector).freezeDisplayRotation(mDisplayIdArg, rotation); + verify(mMockedInjector).freezeDisplayRotation(displayId, rotation); assertThat(pref.getValue()).isEqualTo(rotation + ""); verify(mMockedMetricsLogger).writePreferenceClickMetric(pref); } @@ -370,31 +345,30 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa @Test @UiThreadTest public void testDisplayResolutionPreference() { - mDisplayIdArg = 1; + final int displayId = 1; doReturn(true).when(mMockedInjector).isDisplayEnabled(any()); var fragment = initFragment(); mHandler.flush(); - var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key); - assertThat(pref.getKey()).isEqualTo(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key); + var category = getExternalDisplayCategory(0); + var pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(0)); assertThat("" + pref.getTitle()).isEqualTo( getText(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.titleResource)); assertThat("" + pref.getSummary()).isEqualTo("1920 x 1080"); assertThat(pref.isEnabled()).isTrue(); assertThat(pref.getOnPreferenceClickListener()).isNotNull(); assertThat(pref.getOnPreferenceClickListener().onPreferenceClick(pref)).isTrue(); - assertThat(mResolutionSelectorDisplayId).isEqualTo(mDisplayIdArg); + assertThat(mResolutionSelectorDisplayId).isEqualTo(displayId); verify(mMockedMetricsLogger).writePreferenceClickMetric(pref); } @Test @UiThreadTest public void testDisplaySizePreference() { - mDisplayIdArg = 1; doReturn(true).when(mMockedInjector).isDisplayEnabled(any()); var fragment = initFragment(); mHandler.flush(); - var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key); - assertThat(pref.getKey()).isEqualTo(PrefBasics.EXTERNAL_DISPLAY_SIZE.key); + var category = getExternalDisplayCategory(0); + var pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(0)); assertThat("" + pref.getTitle()) .isEqualTo(getText(PrefBasics.EXTERNAL_DISPLAY_SIZE.titleResource)); assertThat("" + pref.getSummary()) @@ -408,25 +382,25 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa @Test @UiThreadTest public void testUseDisplayPreference_EnabledDisplay() { - mDisplayIdArg = 1; + final int displayId = 1; doReturn(true).when(mMockedInjector).isDisplayEnabled(any()); - doReturn(true).when(mMockedInjector).enableConnectedDisplay(mDisplayIdArg); - doReturn(true).when(mMockedInjector).disableConnectedDisplay(mDisplayIdArg); + doReturn(true).when(mMockedInjector).enableConnectedDisplay(displayId); + doReturn(true).when(mMockedInjector).disableConnectedDisplay(displayId); var fragment = initFragment(); mHandler.flush(); - MainSwitchPreference pref = - mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_USE.key); - assertThat(pref.getKey()).isEqualTo(PrefBasics.EXTERNAL_DISPLAY_USE.key); + MainSwitchPreference pref = getExternalDisplayCategory(0) + .findPreference(PrefBasics.EXTERNAL_DISPLAY_USE.keyForNth(0)); + assertThat(pref.getKey()).isEqualTo(PrefBasics.EXTERNAL_DISPLAY_USE.keyForNth(0)); assertThat("" + pref.getTitle()) .isEqualTo(getText(PrefBasics.EXTERNAL_DISPLAY_USE.titleResource)); assertThat(pref.isEnabled()).isTrue(); assertThat(pref.isChecked()).isTrue(); assertThat(pref.getOnPreferenceChangeListener()).isNotNull(); assertThat(pref.getOnPreferenceChangeListener().onPreferenceChange(pref, false)).isTrue(); - verify(mMockedInjector).disableConnectedDisplay(mDisplayIdArg); + verify(mMockedInjector).disableConnectedDisplay(displayId); assertThat(pref.isChecked()).isFalse(); assertThat(pref.getOnPreferenceChangeListener().onPreferenceChange(pref, true)).isTrue(); - verify(mMockedInjector).enableConnectedDisplay(mDisplayIdArg); + verify(mMockedInjector).enableConnectedDisplay(displayId); assertThat(pref.isChecked()).isTrue(); verify(mMockedMetricsLogger, times(2)).writePreferenceClickMetric(pref); } @@ -444,13 +418,6 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa } @NonNull - private Bundle createBundleForPreviouslyShownList() { - var state = new Bundle(); - state.putBoolean(PREVIOUSLY_SHOWN_LIST_KEY, true); - return state; - } - - @NonNull private String getText(int id) { return mContext.getResources().getText(id).toString(); } @@ -502,21 +469,11 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa } @Override - protected int getDisplayIdArg() { - return mDisplayIdArg; - } - - @Override protected void launchResolutionSelector(@NonNull Context context, int displayId) { mResolutionSelectorDisplayId = displayId; } @Override - protected void launchExternalDisplaySettings(final int displayId) { - mDisplayIdArg = displayId; - } - - @Override Preference newFooterPreference(Context context) { return new Preference(context); } |